How satyamkumarcs/ai-banana-harness works
Banana Harness is a local-first coding-agent application with both an interactive terminal UI and a headless runner. A user selects a provider and workspace, submits a GitHub issue or task, and the harness streams model output while routing tool requests through permission checks to workspace operations or MCP servers. Turns can involve approvals, subagents, checkpoints, and compaction; session and event state is persisted for later listing and resumption. The graph follows the documented capabilities and sampled entry points; unsampled subsystem wiring is omitted where it cannot be verified.
Main entry points: harness.rs Turn Orchestrator · lib.rs Terminal UI · main.rs CLI Runner · tools.rs Tool Routing
Components 23
User Interfaces
- CLI Runner
crates/banana-harness/src/main.rs - Terminal UI
crates/harness-tui/src/lib.rs - UI State
crates/harness-tui/src/app.rs
Agent Runtime
- Turn Orchestrator
crates/harness-core/src/harness.rs - Event Types
crates/harness-core/src/event.rs - Instructions And Skills
crates/harness-core/src/instructions.rs - Skill Loading
crates/harness-core/src/skills.rs - History Compaction
crates/harness-core/src/compaction.rs - Turn Checkpoints
crates/harness-core/src/checkpoint.rs - Safety Limits
crates/harness-core/src/safety.rs - Tool Routing
crates/harness-core/src/tools.rs
Workspace Tools
- Host Tools
crates/harness-tools/src/lib.rs - Permission Engine
crates/harness-tools/src/guardrail.rs - Local Workspace
Model And MCP
- Streaming Provider Client
crates/harness-llm/src/lib.rs - MCP Client
crates/harness-mcp/src/lib.rs - Remote MCP OAuth
crates/harness-mcp/src/oauth.rs
Configuration And State
- Config Loader
crates/harness-core/src/config.rs - Session Store
crates/harness-store/src/lib.rs
Other components
- Operator
- DeepSeek Or Qwen
- MCP Servers
- Terminal
Connections 30
- Operator → Terminal UI: submits task
- Operator → CLI Runner: runs task
- Terminal UI → UI State: updates state
- Terminal UI → Turn Orchestrator: starts turns
- CLI Runner → Turn Orchestrator: starts turns
- Terminal UI → Config Loader: loads settings
- CLI Runner → Config Loader: loads settings
- Turn Orchestrator → Config Loader: uses settings
- Turn Orchestrator → Session Store: persists sessions
- Turn Orchestrator → Streaming Provider Client: requests completions
- Streaming Provider Client → DeepSeek Or Qwen: streams API
- DeepSeek Or Qwen → Streaming Provider Client: returns stream
- Turn Orchestrator → Tool Routing: routes tool calls
- Tool Routing → Host Tools: dispatches host calls
- Host Tools → Permission Engine: checks permissions
- Host Tools → Local Workspace: reads and modifies
- Tool Routing → MCP Client: dispatches MCP calls
- MCP Client → MCP Servers: lists and calls tools
- MCP Client → Remote MCP OAuth: connects with OAuth
- Remote MCP OAuth → MCP Servers: authorizes requests
- Turn Orchestrator → Instructions And Skills: assembles guidance
- Instructions And Skills → Skill Loading: loads skills
- Turn Orchestrator → History Compaction: compacts history
- Turn Orchestrator → Turn Checkpoints: manages checkpoints
- Turn Orchestrator → Safety Limits: enforces limits
- Turn Orchestrator → Event Types: emits events
- Event Types → UI State: updates transcript
- UI State → Terminal: renders UI
- Turn Orchestrator → Session Store: stores turn events
- Session Store → Turn Orchestrator: loads session history