First time here? Complete the C++ Framework Setup guide first to build the
gaia_core library.Native binary.
gaia-bash is a compiled C++ binary built on the GAIA C++ framework (gaia_core). No Python runtime required for the agent itself — just Lemonade Server for LLM inference.Overview
gaia-bash is a domain-specialized coding agent for bash/shell scripting. It provides:
- Interactive TUI — Claude Code-style terminal interface with markdown rendering, streaming, and split-pane layout
- Bash expertise — system prompt tuned for POSIX compliance,
shellcheckintegration, BATS test generation - 10 built-in tools — file I/O, git inspection, shell execution, and environment introspection (more planned: linting, testing, clipboard)
- REST API server — OpenAI-compatible endpoint for external tool integration
- MCP server — stdio transport for Claude Code, OpenCode, and other MCP-compatible agents
- Session persistence — save and resume conversations across runs
- 100% local — runs entirely on AMD hardware via Lemonade Server, no cloud dependency
Quick Start
1
Build the binary
2
Start Lemonade Server
--model or LEMONADE_MODEL):3
Run the agent
Modes of Operation
Interactive TUI
The default mode. Launches a fullscreen terminal UI with:- Chat history — scrollable, markdown-rendered responses with syntax highlighting
- Status bar — current model, token count, step counter
- Input area — multi-line input with history (up/down arrows)
- Tool approval — modal dialog for destructive operations
Single Query
Run one query, print the result, and exit:Pipe Mode
No TUI — streams plain text to stdout. Ideal for scripting and CI:API Server
Expose the agent as an HTTP REST API:MCP Server
Run as an MCP tool server for external agents:Session Resume
Resume a previous conversation:Slash Commands
Built-in commands available in interactive mode:
Bash-specific commands:
Built-in Tools
Framework Tools (shared with all C++ agents)
Bash-Specific Tools
API Server
The API server exposes the bash agent via an OpenAI-compatible HTTP REST API, enabling integration with any tool that speaks the OpenAI protocol.Start the server
Endpoints
POST /v1/chat/completions
Main endpoint — send messages, get agent responses with tool calls.
Streaming is simulated: the response is delivered as a single SSE
data: chunk followed by data: [DONE], not token-by-token. The
agent runs its full tool loop before emitting the final answer, so
real incremental token streaming isn’t available through this endpoint
yet. The SSE envelope is OpenAI-compatible, so streaming clients work
unchanged.GET /v1/tools
List all registered tools with their parameter schemas:
POST /v1/tools/{name}
Execute a specific tool directly (bypass the LLM):
GET /health
Health check:
GET /sessions, DELETE /sessions/{id}
Session management:
MCP Server
The MCP server exposes the bash agent as a tool server over the Model Context Protocol, enabling any MCP-compatible agent to use bash tools.Configure in Claude Code
Add to~/.claude/settings.json:
Configure in OpenCode
Add to OpenCode’s MCP config:MCP Capabilities
Test the MCP server
Demo Walkthrough
A quick demo showing the key features ofgaia-bash:
1. Write a Script
2. Review the Script
3. Generate Tests
4. Use via API
5. Use via MCP from Claude Code
Configuration
Environment Variables
CLI Flags
Building from Source
Prerequisites
- CMake 3.14+
- C++17 compiler (MSVC 2019+, GCC 9+, Clang 10+)
- Lemonade Server running with a coding model loaded