DEV Community

Cover image for How I engineered a multi-agent coding terminal with a 3D Three.js Office Floor UI published
Dominique Church
Dominique Church

Posted on

How I engineered a multi-agent coding terminal with a 3D Three.js Office Floor UI published

Building Gnosis: A Multi-Agent Terminal with a 3D Office UI

I spent my summer building Gnosis, a local-first, open-source terminal coding agent designed around one idea: make multi-agent work easier to see and understand.

Instead of an endless stream of terminal output, Gnosis puts agents inside an interactive Three.js office, where their location reflects what they are actually doing.

Architecture

Gnosis uses a TypeScript backend for agent execution, tools, processes, and session state, with React + Three.js rendering everything in real time.

Model Hot-Swapping

The conversation state is separated from the model provider, so you can switch between any OpenRouter model mid-session without losing context or tool state.

Prompt Caching

Context is structured to maximize provider prompt caching.

One measured request dropped from $0.0252 to $0.0021 — a 12× reduction.

The 3D Office

Agents move between five zones:

  • Coordinator — main session
  • Planning — task breakdown
  • Coding — file changes
  • Application — testing and verification
  • Sub-Agents — parallel work

The office updates as agents work, and clicking an agent opens its session.

Other Systems

Gnosis also includes:

  • Tree-sitter code indexing
  • Scoped sub-agents with context and tool limits
  • Local PTY terminal streaming
  • Obsidian persistent memory
  • Computer use
  • MCP support for Context7, Playwright, and Chrome DevTools
  • File browser and diff viewer
  • Webhook inspector
  • Mobile and LAN control

The project has 104 automated test suites running on Windows CI.

Gnosis is MIT licensed, local-first, and BYOK.

npm install -g @dominquechurch/gnosis
Enter fullscreen mode Exit fullscreen mode

GitHub: https://github.com/DOMCHURCH/Gnosis

Top comments (2)

Collapse
 
reidmarlow profile image
Reid Marlow

I like the state separation more than the 3D layer here. Most multi-agent UIs show activity, but the expensive bug is losing the thread when you swap models, fork a sub-agent, or reopen yesterday's run. If the UI makes that state visible without turning into a dashboard monster, that is a real improvement.

Collapse
 
dominique_church_a9abd890 profile image
Dominique Church

if you have any more questions i'll be happy to anwser them!