π€ Titan β Terminal AI Coding Agent
A terminal-based AI coding agent in Go that connects to any OpenAI-compatible LLM, with 9 built-in tools, MCP server integration, and a Bubble Tea TUI.
π― What It Does
Titan is a terminal-based AI coding agent written in Go. It connects to any OpenAI-compatible LLM provider (DeepSeek, OpenAI, Groq, Anthropic, GitHub Copilot, Codex CLI) and executes natural-language coding tasks directly in your terminal.
$ titan "refactor the database layer to use connection pooling"
It runs tools (read files, write files, run bash, search code, etc.), delegates sub-tasks, and integrates with MCP servers for extensible tooling β all without leaving the terminal.
π§± Tech Stack
| Component | Technology |
|---|---|
| Language | Go 1.26 |
| TUI | Bubble Tea, Lipgloss, Bubbles (Charmηζη³»η») |
| LLM API | Raw HTTP to OpenAI-compatible /chat/completions (zero SDKs) |
| Extensibility | MCP (Model Context Protocol) via JSON-RPC over stdio |
| Auth | OAuth for GitHub Copilot, device flow for Codex CLI |
The key design decision: zero LLM SDK dependencies. Titan speaks directly to OpenAI-compatible REST APIs via raw HTTP calls, keeping the dependency graph minimal and provider-agnostic.
ποΈ Architecture
cmd/titan/main.go β Entry point
internal/
βββ agent/agent.go # Main loop: tool-calling LLM conversation (max 20 turns)
βββ agent/tools/ # Tool interface + DefaultRegistry (9 tools)
βββ llm/client.go # HTTP streaming to /chat/completions
βββ llm/models.go # Type definitions + KnownModels table
βββ mcp/host.go # MCP host: JSON-RPC over stdio
βββ config/config.go # JSON config (providers, MCP servers, theme, port)
βββ providers/registry.go # Multi-provider switching
βββ skills/loader.go # Loads SKILL.md files from ~/.titan/skills/
βββ task/manager.go # Sub-agent delegation
βββ auth/codex.go # Codex CLI OAuth flow
βββ auth/copilot.go # GitHub Copilot OAuth flow
βββ cli/repl.go # REPL interface
βββ cli/renderer.go # Output rendering
βββ tui/model.go # Bubble Tea TUI
βββ display/markdown.go # Markdown rendering
βββ display/spinner.go # Activity spinner
π οΈ Built-in Tools
| Tool | Description |
|---|---|
read | Read file contents (with line numbers) |
write | Write content to a file |
edit | Apply search-and-replace edits |
bash | Execute shell commands |
glob | Pattern-match file paths |
grep | Search file contents by regex |
webfetch | Fetch URL contents |
websearch | Search the web |
task | Delegate to a sub-agent |
Tools are registered via a Registry pattern (DefaultRegistry), and the agent loop detects when a tool call is needed, executes it, and feeds the result back to the LLM for the next action.
π MCP Integration
Titan hosts MCP servers as subprocesses and communicates via JSON-RPC over stdio. Any tool exposed by an MCP server becomes available to the agent:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "."]
}
}
}
This makes Titan extensible without modifying its source code β the MCP ecosystem of servers brings in database access, web scraping, code analysis, and more.
π§ Skills System
Custom skills are injected into the agentβs system prompt via SKILL.md files placed in ~/.titan/skills/. Each skill defines domain knowledge, constraints, and patterns the agent should follow β similar to how this system prompt gives me context about the codebase.
π₯οΈ Modes
| Mode | Description |
|---|---|
| CLI | One-shot: titan "do something" |
| REPL | Interactive conversation loop |
| TUI | Full Bubble Tea terminal UI with splits and panels |
π Provider Authentication
Titan supports multiple auth strategies:
- API key: Direct key in config (DeepSeek, OpenAI, Groq)
- OAuth device flow: GitHub Copilot authentication
- OAuth code flow: Codex CLI via Microsoft device login
The provider registry switches based on the model name, with a KnownModels table mapping names to providers.
π Quick Start
# Install
go install github.com/praneshnikhar/titan@latest
# Configure
titan init
# Edit ~/.titan/config.json with your provider API keys
# Use it
titan "explain the architecture of this project"
titan "find all unused variables in src/"
titan "write a unit test for the Database class"
π‘ Why Itβs Interesting
Titan is a genuine from-scratch implementation of an AI coding agent β no LangChain, no Vercel AI SDK, no Python. Itβs built in Go with zero LLM SDK dependencies, making it fast, dependency-light, and portable. The MCP integration, skills system, and multi-provider support make it genuinely useful as a daily driver for terminal-based AI-assisted development. Itβs the kind of tool that makes you realize how much overhead most AI tooling carries by default.