9.7 KiB
Project Specification: Multi-Instance AI Coding Console (MACC)
A phased, validated-primitive product requirements document for engineering.
0. Product Summary
MACC is a unified, highly-responsive developer IDE that manages multiple AI coding assistants (Claude Code, Aider, OpenCode, Codex, etc.) simultaneously.
It runs as an Electron desktop application with a fully responsive interface that also exposes a web-view for mobile access.
Each “instance” behaves like a worker: showing state, logs, artifacts, diffs, and contextual metadata.
The app emphasizes:
- Obsidian-like UI (themes, fixed-width fonts, panel layout)
- Linear/Superhuman-level responsiveness + keyboard-first UX
- Full per-instance lifecycle control (create, resume, terminate)
- Support for Git and non-Git workspaces
- Artifact tracking, semantic worklogs, context usage visualization
- Remote control via auto-tunneled HTTPS endpoints (ngrok)
- Generic support for any CLI-based AI coding tool with no modifications required.
The specification is broken into phases, each ending in a primitive that must be validated before continuing.
PHASE 1 — Core Architectural Primitives
1.1 Primitive: Process Manager
Goal: A minimal Electron backend that can launch arbitrary CLI tools, track PID, and capture raw stdout/stderr streams.
Requirements
- Electron main process spawns child processes.
- Output is captured line-by-line in a structured format.
- Input can be sent via STDIN.
- Must work with any CLI tool, unchanged.
- Supports persistent process registry (ID, type, path, state).
Validation Criteria
- Launch any AI CLI (Claude Code, Aider, etc.) and see raw output streaming into a debug pane.
- Send simple commands via STDIN.
- Kill and restart processes.
1.2 Primitive: Unified Session Model
Goal: A generic model for a “Session” that abstracts Claude Code, Aider, Codex, etc. into the same interface.
Requirements
- Attributes:
sessionIdsessionNametoolType(claude, aider, opencode, custom)cwd(working dir)state(idle, busy)stdinMode(terminal vs. AI)contextUsage(%)stdoutLog[]semanticLog[](future)artifacts[]
- Pluggable command templates per tool type:
- Start command
- Resume command (if applicable)
- Batch/script command flags
Validation Criteria
- Create a session pointing to Claude Code or Aider and confirm identical behaviors via the unified object.
- Switching toolType requires no UI changes.
1.3 Primitive: Dual-Mode Input Router
Goal: Toggle between:
- Terminal Mode → sends raw shell commands to the OS.
- AI Interaction Mode → sends input to the AI process.
Requirements
- UI toggle switch.
- Terminal mode uses node-pty or equivalent pseudoterminal.
- AI mode uses direct STDIN to the assistant process.
- Visual indication of current mode.
Validation Criteria
- Send
lsin terminal mode and get directory listing. - Send message in AI mode and receive assistant output.
- No cross-contamination.
PHASE 2 — UI Foundations
2.1 Primitive: Obsidian-Inspired Visual System
Goal: Core layout and theming.
Requirements
- Fixed-width fonts everywhere.
- Theme engine with:
- Dracula (default)
- Dark
- Light
- Monokai
- Minimalistic panel layout:
- Session list (left)
- Workspace panel (center)
- Logs/Artifacts panel (right)
- Responsive grid that collapses elegantly for mobile web.
Validation Criteria
- Theme switching works live.
- Layout remains stable on window resize.
- Mobile view loads via localhost.
2.2 Primitive: Keyboard-First Navigation
Goal: Achieve Linear/Superhuman responsiveness.
Requirements
- Global shortcuts:
⌘K / Ctrl+Kcommand palette⌘1,2,3for switching major panels⌘⇧Ncreate new session⌘[and⌘]cycle sessions
- Per-session shortcuts:
- Toggle terminal/AI mode
- Kill/restart instance
- Low-latency event pipeline (< 16ms UI update target)
Validation Criteria
- Command palette works.
- All shortcuts trigger instantly.
- No perceptible lag (< ~30ms worst case).
PHASE 3 — Session Intelligence Layer
3.1 Primitive: Auto-Generated Description
Goal: Session auto-describes its purpose based on recent activity.
Requirements
- Analyze last N messages.
- Generate a one-sentence summary.
- Update after every user instruction.
- Display under session name.
Validation Criteria
- Summary updates correctly when switching tasks.
- Descriptions feel accurate.
3.2 Primitive: Semantic Worklog Engine
Goal: Maintain a human-readable summary of activity per instance.
Requirements
- Summaries generated incrementally:
- What tasks were attempted?
- What results occurred?
- What files changed?
- What errors occurred?
- Stored as structured entries.
Validation Criteria
- After a session with multiple commands, worklog renders meaningful history.
- Semantic entries correlate with artifacts/diffs.
3.3 Primitive: Context Window Analyzer
Goal: Display % context used for each assistant.
Requirements
- Query tool APIs for context usage when available (Claude Code supports this).
- Estimate context via tokenization fallback for tools lacking API.
- Show progress bar (0–100%).
Validation Criteria
- Claude Code sessions show real usage.
- Other tools display estimated usage.
PHASE 4 — Workspace Intelligence
4.1 Primitive: Dual Workspace Modes
Goal: Behavior changes depending on whether the session is in a Git repo.
Requirements
- Auto-detect Git repo.
- If Git workspace:
- Show “Changed Files” list (
git diff --name-only) - On click → show full diff
- Show “Changed Files” list (
- If Non-Git workspace:
- Track file changes (created, modified, deleted)
- Display artifact list
- Link artifacts to semantic worklog
Validation Criteria
- Switching between Git and non-Git folders produces different UI.
- Diffs display cleanly.
- Artifacts tracked reliably.
PHASE 5 — State, Status & Control Layer
5.1 Primitive: Status Indicators
Goal: Show live state of each instance.
Requirements
- Green = idle / awaiting input.
- Red = busy / processing.
- Update state based on stdout patterns & timing.
Validation Criteria
- Status flips to “busy” on any processing.
- Returns to “idle” after output completion.
5.2 Primitive: Session Lifecycle Controls
Goal: Full process management.
Requirements
- Buttons:
- Start
- Resume
- Stop/Kill
- Duplicate session
- Safe shutdown logic.
Validation Criteria
- Perform lifecycle control on all supported tools.
- No orphaned processes.
PHASE 6 — Remote Access & Tunneling
6.1 Primitive: Local Web Server
Goal: Expose a web-based interface with responsive layout.
Requirements
- Serves:
- Session list
- Log viewer
- Input pane
- Mobile-friendly navigation
- Read-only mode toggle (security)
Validation Criteria
- Accessed from phone on LAN.
- Full session control works.
6.2 Primitive: Integrated ngrok Tunneling
Goal: One-click public remote access.
Requirements
- User enters ngrok API key once.
- A button toggles tunnel on/off.
- Electron app retrieves and displays:
- Public URL
- Connection status
- Automatic reconnect on failure.
Validation Criteria
- Tunnel spins up with one click.
- Mobile access works over LTE.
- Reconnecting maintains session state.
PHASE 7 — Performance & Polish
7.1 Primitive: High-Responsiveness Engine
Goal: Match Linear/Superhuman’s feel.
Requirements
- Pre-render critical views.
- Use React + TypeScript + Recoil/Zustand for low latency.
- GPU rendering hints (CSS transform layering).
- WebSocket bridge with main process for real-time output.
Validation Criteria
- Session switching < 50ms.
- Keyboard commands < 30ms response.
- Streaming output renders with minimal delay.
7.2 Primitive: Extension & Plugin System
Goal: Allow future support for more AI tools or features.
Requirements
- Configurable tool definitions:
- Startup commands
- Flags
- Output parsing rules
- User-added tool templates.
Validation Criteria
- Adding a new tool requires no core code modification.
- YAML/JSON templates work successfully.
PHASE 8 — Final Integration & UX Polish
8.1 Primitive: Unified Project Pane
Goal: Provide high-level visibility across all sessions.
Requirements
- Master session dashboard:
- Status indicators
- Descriptions
- Context bars
- Git/non-Git badges
- Global search.
Validation Criteria
- Dashboard accurately reflects all instance states.
- Search finds sessions, logs, and artifacts.
8.2 Primitive: Multi-Device Continuity
Goal: Seamless transition between desktop and mobile.
Requirements
- Shared session state between desktop UI and web UI.
- Live sync of logs and output streams.
Validation Criteria
- Actions performed on phone instantly reflect on desktop.
- Desktop input reflects on mobile viewer.
TECHNICAL STACK DECISIONS
Electron
- Desktop environment
- Mobility via embedded webserver
Frontend
- React
- TypeScript
- Zustand (store)
- Tailwind or custom styling engine
- Monaco editor for diff rendering
Backend
- Node.js
- node-pty for terminal mode
- Child process spawn for AI tools
- Fastify or Express for local web server
- WebSocket bridge for real-time updates
Remote Access
- ngrok (free tier)