Concepts

Architecture overview

How clai parses flags, constructs vendor queriers, executes the agent tool loop, and streams responses.

On this page

clai is structured around strict dependency injection, typed error handling, and vendor-agnostic core interfaces.

Six-phase workflow

1. Query and unix pipes

cli.Run parses flags (-cm, -p, -t, -i, -re, -dre, -r), reads piped stdin, and streams tokens directly to stdout.

2. Profiles and Agent Skills

clai loads <clai-config-dir>, merges any selected profile (-p), discovers SKILL.md Agent Skills (-s '*'), and renders shell context templates (-asc).

3. MCP servers and builtin tools

When tools are enabled (-t), the generic text querier orchestrates tool calls across builtin tools and MCP stdio servers, applying automatic output truncation and recall indexing.

4. Multi-vendor transcript import

clai chat discovers sessions from Claude Code, Codex, OpenCode, Gemini CLI, Qwen, and Antigravity, normalizes them into GlobalScope, and resumes them with any vendor.

5. The community hub

clai.chat hosts one service beside the CLI: the public hub in cloud/site/hub.ts. A signed-in user publishes a profile, MCP server, shell context, Skill, theme or prompt; anyone reads and downloads the raw file; a signed-in reader rates it from one to five stars. Nothing syncs on its own, and the hub never runs a config.

See Go packages (pkg/agent and pkg/tools) to embed this same agent loop in your own Go programs.

Last updated October 21, 2026

Type to search the documentation.