Skip to content

Architecture

How AgentDock's Electron main process, renderer, and agent adapters fit together.

AgentDock is an Electron application with a clear split between its main process and its React renderer.

Main process

The main process owns everything CLI-related. It:

  • Detects installed agent CLIs on your system (see Agent CLI not detected for how detection works).
  • Spawns each agent as a child process — either through the provider's own SDK (@anthropic-ai/claude-agent-sdk for Claude Code, @openai/codex-sdk for Codex) or through a PTY session (node-pty) for Antigravity.
  • Maps each agent's own event or output format into one shared internal agent event model, so the rest of the app doesn't need to know which agent produced a given message, tool call, or permission prompt.

Renderer

The renderer (React) subscribes to that shared event stream over Electron IPC and renders it as a conversation — chat messages, tool/approval activity cards, diffs — without needing agent-specific rendering logic.

Storage

Session, workspace, and message data is stored locally in a SQLite database (via sql.js, SQLite compiled to WebAssembly) inside Electron's per-user application data directory. There is no remote backend or account system — see Configuration.

Git integration

Git-related features (the Changes drawer) shell out to the git executable configured in Settings → Advanced, which defaults to git on PATH.

AIgency (Pro)

AgentDock Pro

AIgency does not introduce a separate execution engine. It orchestrates ordinary AgentDock sessions — each task in a run spawns a real session through the same session service every hand-typed conversation uses. AIgency's own code is a dependency-aware, concurrent scheduler layered on top of the same agent adapters described above, not a parallel transport or spawning mechanism.