A calm, local-first desktop workspace for Agent Client Protocol (ACP) agents.
Backchat gives developer agents a shared desktop without taking away the things that make each harness useful. Choose a project, choose an agent, and keep the conversation, tools, files, browser, and terminal in one place.
- One workspace, many agents. Run Claude Code, Codex CLI, Gemini CLI, OpenCode, Hermes, or OpenClaw from the same desktop surface.
- Local-first by default. Prompts, transcripts, project metadata, and local app state stay on your machine. The selected agent is responsible for talking to its model provider.
- Agent-aware, not vendor-shaped. Backchat surfaces the capabilities, commands, models, modes, and permissions reported by the active harness instead of inventing a generic capability layer.
- Project-scoped context. Sessions are grouped by their working directory, so files, terminals, browser state, and conversations stay attached to the project where the work happened.
- Projects can span related folders. One primary folder supplies the chat
cwd, Git context, and project instructions; secondary folders extend the
agent's file scope through ACP
additionalDirectories. - Tools that stay in the flow. Configure MCP servers once and use them from every session. Open a browser, inspect files, start a terminal, attach images, and render interactive MCP Apps without leaving the conversation.
- Parallel thinking. Use multi-agent chats, side chats, ACP forks, and native subagent activity when the underlying harness exposes it.
- Repeatable work. Create one-time or recurring schedules that run against a project and harness, with local run history.
These are representative UI snapshots from the current artifact/E2E suite.
Backchat currently ships registry entries for:
| Agent | ACP entry | Notes |
|---|---|---|
| Claude Code | claude-acp |
Claude Code through the official ACP adapter |
| Codex CLI | codex-acp |
Codex through codex-acp |
| Gemini CLI | gemini |
Gemini CLI's ACP mode |
| OpenCode | opencode |
OpenCode's ACP mode |
| Hermes | hermes |
Hermes ACP entry |
| OpenClaw | openclaw |
OpenClaw ACP entry |
Agent binaries are discovered or configured from Settings → Agents. The registry and setup layer are deliberately separate from the chat UI, so adding or updating a harness does not require changing the conversation model.
Requirements: Node.js 20 or newer and pnpm.
git clone https://github.com/openma-ai/backchat.git
cd backchat
pnpm install
pnpm devOn first launch, open Settings → Agents to install or point Backchat at an ACP-compatible agent, then choose a project and start a chat.
pnpm build # production renderer/main bundles
pnpm package:local # unsigned local installer
pnpm package:dir # unpacked app directorySigned release packaging and notarization are documented in
docs/releasing.md.
pnpm typecheck
pnpm test
pnpm test:e2e:fast
pnpm test:verify # typecheck + unit tests + fast E2E laneThe desktop shell is built with Electron, TypeScript, React, Vite, Tailwind
CSS, and shadcn/ui. The ACP runtime is vendored from
open-managed-agents and
trimmed to the local desktop use case.
- Choose a project. A project is a working directory and the anchor for sessions and local artifacts.
- Choose a harness. Backchat starts the selected ACP agent as a local child process and keeps its real configuration and capabilities visible.
- Work in one surface. Conversation events, tool activity, MCP Apps, files, browser tabs, and terminals are projected into the same task.
- Branch when useful. Continue in a side chat, fork an ACP session when supported, or follow native subagent activity emitted by the harness.
Backchat is pre-release and under active development. The product shape, packaging, persistence format, and ACP integration surface may change before a stable release. It is ready for local evaluation and development, not yet a promise of backwards compatibility.
Issues and focused pull requests are welcome. For a useful bug report, include your OS, Backchat build, agent/harness, project type, and the smallest reliable reproduction.





