mirror of
https://github.com/multica-ai/multica.git
synced 2026-06-17 03:38:32 +02:00
feat/history-session
Multica
A GUI client for ACP-compatible coding agents.
Multica uses the Agent Client Protocol (ACP) to communicate with various coding agents like OpenCode, Codex, and Gemini CLI.
Supported Agents
| Agent | Command | Install |
|---|---|---|
| OpenCode | opencode acp |
go install github.com/opencode-ai/opencode@latest |
| Codex CLI (ACP) | codex-acp |
npm install -g codex-acp |
| Gemini CLI | gemini acp |
npm install -g @google/gemini-cli |
Quick Start
# Install dependencies
pnpm install
# Check which agents are installed
pnpm cli doctor
# Start interactive mode
pnpm cli
CLI
Multica includes a comprehensive CLI for testing and interacting with agents:
pnpm cli # Interactive mode
pnpm cli prompt "message" # One-shot prompt
pnpm cli sessions # List sessions
pnpm cli resume <id> # Resume session
pnpm cli agents # List available agents
pnpm cli doctor # Check agent installations
Interactive Mode
Start an interactive REPL session:
pnpm cli
Available commands:
| Command | Description |
|---|---|
/help |
Show help |
/new [cwd] |
Create new session (default: current directory) |
/sessions |
List all sessions |
/resume <id> |
Resume session by ID prefix |
/delete <id> |
Delete a session |
/history |
Show current session message history |
/agent <name> |
Switch to a different agent |
/agents |
List available agents |
/doctor |
Check agent installations |
/status |
Show current status |
/cancel |
Cancel current request |
/quit |
Exit CLI |
One-Shot Prompt
Send a single prompt and exit:
pnpm cli prompt "What is 2+2?"
pnpm cli prompt "List files" --cwd=/tmp
Doctor
Check if agents are installed on your system:
pnpm cli doctor
Shows installation status, binary path, version, and install hints for missing agents.
Options
| Option | Description |
|---|---|
--cwd=PATH |
Working directory for the agent |
--log |
Save session log to logs/ directory |
--log=PATH |
Save session log to specified file |
Cancellation
- Press
Ctrl+Conce to send a cancel request to the agent - Press
Ctrl+Ctwice to force quit
Development
# Start Electron app in dev mode
pnpm dev
# Type check
pnpm typecheck
Build
pnpm build:mac # macOS
pnpm build:win # Windows
pnpm build:linux # Linux
Architecture
Multica (Electron)
├── Renderer Process (React)
│ └── UI Components (Chat, Settings, etc.)
│
├── Main Process
│ ├── Conductor (orchestrates agent communication)
│ │ ├── SessionStore (session persistence)
│ │ └── ClientSideConnection (ACP SDK)
│ │ └── AgentProcess (subprocess management)
│ │ └── opencode/codex-acp/gemini (stdio)
│ │
│ └── IPC Handlers (session, agent, config)
│
└── Preload (contextBridge)
└── electronAPI (exposed to renderer)
Session Management
Multica maintains its own session layer on top of ACP:
~/.multica/sessions/
├── index.json # Session list (fast load)
└── data/
└── {session-id}.json # Full session data + updates
Key design decisions:
- Client-side storage: Multica stores raw
session/updatedata for UI display - Agent-agnostic: Each agent manages its own internal state separately
- Resume behavior: Creates new ACP session, displays stored history in UI
IPC API
// Session management
electronAPI.createSession(cwd)
electronAPI.listSessions(options?)
electronAPI.getSession(id)
electronAPI.resumeSession(id)
electronAPI.deleteSession(id)
// Agent control
electronAPI.startAgent(agentId)
electronAPI.stopAgent()
electronAPI.sendPrompt(sessionId, content)
electronAPI.cancelRequest(sessionId)
License
MIT
Description
Languages
Go
45.8%
TypeScript
45%
MDX
7.6%
PLpgSQL
0.5%
CSS
0.4%
Other
0.6%