Install
Both packages, and which extras you actually need.
If you just want to try this, run these two commands and skip the rest of the page:
pip install "runspace[agentino,workspace,server]"
export AI_BASE_URL="https://api.openai.com/v1" # any OpenAI-compatible endpoint
export AI_API_KEY="sk-..."
That gives you the whole thing — the agent framework, the workspace it runs in, and an HTTP server to reach it. Check it landed:
python -c "import runspace, agentino; print('ok')"
Then go to your first agent.
Everything below is reference: what those extras mean, and how to install less.
What you just installed
Two packages, because they are useful separately.
Agentino is the agent framework — the loop that calls a model, runs your tools and hands back the result. Runspace is the workspace around it: channels, a scheduler, storage, and the rendering layer that turns an answer into a chart instead of a paragraph describing one.
The command above installs Runspace and asks it to bring Agentino along. If you only want one of them:
pip install agentino-framework # the framework alone
pip install "runspace[workspace,server]" # the workspace, no agent runtime
Runspace does not require Agentino. Agentino is one harness among several:
the thing that actually executes a turn. Runspace also drives Claude Code,
Codex, OpenClaw and pi, which is why the harness is an extra rather than a
dependency — you pick it with one line of workspace.yml and nothing else in
the workspace changes. See harnesses for the full
list and how to swap between them.
The distribution is named agentino-framework because the agentino name on
PyPI belongs to an unrelated project. It still imports as agentino.
Nothing else to configure
Both packages run with no other environment set. Runspace falls back to a local
SQLite file for messages and a directory on disk for files, so a fresh install
starts and persists without a database. Point SUPABASE_URL and SUPABASE_KEY
at a project and the same code writes there instead.
One gotcha worth knowing. The two packages read different variable names, because either can be used without the other:
# Runspace
export AI_BASE_URL="https://api.openai.com/v1"
export AI_API_KEY="sk-..."
# Agentino
export AGENTINO_BASE_URL="https://api.openai.com/v1"
export AGENTINO_API_KEY="sk-..."
If you run agents through Runspace, the AI_* pair is enough. Set the
AGENTINO_* pair as well only if you also call Agentino directly — otherwise
it falls back to OPENAI_API_KEY, then ~/.agentino/auth.json, then its
default endpoint of https://api.openai.com/v1, and will quietly use that
default rather than the endpoint you configured for Runspace.
Runspace extras
The core install is deliberately small — pydantic, httpx, pyyaml and a
cron parser. Everything else is opt-in:
| Extra | Pulls in | Use it when |
|---|---|---|
agentino | Agentino | You want agents running in-process rather than shelling out to a CLI |
workspace | The gateway, registry and messaging | You want the workspace backend, not just the protocol layer |
server | uvicorn, fastapi | You are serving over HTTP |
documents | reportlab, openpyxl, python-docx | Agents produce PDFs or Office files |
redis | redis | Sessions shared across processes |
supabase | supabase | Messages and files persist to Postgres instead of SQLite |
scheduler | croniter | Scheduled routines |
crawler | beautifulsoup4 | The web-crawl helpers |
embeddings | openai | EMBEDDINGS_BACKEND=openai; without it that backend raises at call time |
all | everything above | You are exploring |
dev | the extras the suite exercises, plus agentino, pytest and ruff | Working on runspace itself — a fresh pip install -e ".[dev]" gives a checkout where the whole suite runs |
Agentino extras
Three dependencies at the core. Everything heavier is opt-in, and
agentino.tools.std imports each lazily, so a tool you do not use costs
nothing.
| Extra | Pulls in | Use it when |
|---|---|---|
docgen | reportlab, openpyxl, python-docx, python-pptx, markdown | Agents produce PDFs, spreadsheets, documents or slides |
memory | numpy | The knowledge base uses dense embeddings |
web | feedparser, beautifulsoup4 | Web search, RSS and page fetching |
telegram | aiogram | The Telegram transport |
slack | slack-bolt, aiohttp | The Slack transport, in Socket Mode |
websocket | aiohttp | The WebSocket transport |
serve | fastapi, uvicorn, starlette | --serve, the webhook and WhatsApp transports |
stdtools | memory, docgen, web | Every built-in tool |
transports | telegram, slack, websocket, serve | Every channel |
all | everything above | You are exploring |
dev | pytest, pytest-asyncio, ruff | Working on agentino itself |