The brain of a coding agent: policy, tools, memory, and routing, with no editor attached. Hosts speak one protocol. Models arrive through rishi (LiteRT, MLX, llama.cpp, Cursor, hosted APIs). A terminal app and an MCP server ship as frontends on that same host.
pip install 'ramabana[cli]'
ramabana --root . --model gemma-e4b
ramabana --root . --model gemma-e2b --approve auto 'Reply with exactly: pong'
rishi fetches a model on first use. On CPU-only machines set RAMABANA_LITERT_BACKEND=cpu
.
LocalHost indexes the folders you open. The harness never offers a tool the host cannot perform.
from ramabana import Agent
from ramabana.tools import LocalHost
agent = Agent(LocalHost(['..'], web=True), extensions=False)
agent.ready, agent.note
(False, 'not started')
python
from ramabana.testing import fake_agent
a, _ = fake_agent(replies=['in `ramabana/runtime.py`'])
a.ask('where is the compaction threshold?')
'in `ramabana/runtime.py`'
One notebook per module: the page you read is the module you import.
core · runtime · tools · agent · cli · mcp · vault · pyrepl · docs
uv sync --all-extras --group dev
uv run nbdev-export && uv run pytest