Multi-Terminal & Multi-CLI

Run agents on Claude, Gemini, or Codex. You choose the provider, the framework adapts prompts and governance automatically.

Locked Into One AI Provider

The AI landscape moves fast. Relying on a single provider means you're stuck with their pricing, rate limits, and model capabilities. When a better model launches on a competitor, you can't switch without rewriting prompts and workflows. Vendor lock-in is a real risk.

How Chati.dev solves this

Multi-Terminal Execution

Agents run in separate terminal processes for maximum throughput. The orchestrator spawns each agent via the Prompt Builder, a self-contained prompt with PRISM context, agent definition, and handoff template.

Multi-terminal architecture: orchestrator spawns parallel agents, parses handoffs, and tracks costs.

Multi-CLI Providers

You configure which providers are available at setup time. Claude is the default. You can assign specific providers per agent via agent_overrides, or let the system use your primary provider for everything.

Claude Code

Primary provider with native integration. Full support for all agents with model tier assignment.

Models: Opus (deep reasoning), Sonnet (balanced), Haiku (lightweight)
Activation: claude -p (interactive) / claude --model (spawned)

Gemini CLI

Supported provider with auto-generated context files (GEMINI.md). Adapter translates prompts to Gemini format.

Models: Pro (deep reasoning), Flash (balanced)
Activation: gemini (interactive) / gemini --model (spawned)

Codex CLI

Supported provider with auto-generated context files (AGENTS.md). Adapter handles OpenAI-compatible prompts.

Models: Configurable per agent (OpenAI reasoning tiers)
Activation: codex (interactive) / codex --model (spawned)

How Provider Selection Works

Everything is defined by you in config.yaml. You set a primary provider (Claude by default), and optionally assign specific providers per agent in agent_overrides. The system reads your configuration and never switches providers on its own.

# config.yaml
providers:
claude: enabled: true, primary: true
gemini: enabled: false
codex: enabled: false
agent_overrides: # optional
dev: provider: gemini, model: pro

Adapter Pattern

The adapter pattern abstracts provider-specific differences behind a common interface. Same agent logic runs on any supported CLI.

Prompt Builder

Assembles self-contained prompts with PRISM layers, agent definition, previous handoff, write scope, and output template.

Spawner

Spawns a new terminal process for each agent with the correct model. Handles timeouts and process lifecycle.

Handoff Parser

Extracts the handoff block from agent output. Parses status, score, blockers, and artifact content.

Overlay Directories

Auto-generates provider-specific context files (GEMINI.md, AGENTS.md) in overlay directories so non-Claude providers can understand the framework.

Governance Enforcement by Provider

Hook-based providers (Claude Code, Gemini CLI) get full governance through runtime hooks that intercept tool calls. Prompt-based providers (Codex CLI) get governance through prompt injection: PRISM context is embedded directly into the spawned prompt. Enforcement is softer but functional, covering all constitutional articles.