Python & TypeScript
Andromeda has a Python framework and a TypeScript framework on Bun. They share the agent SDK foundations and configuration format, while each edition also has features of its own. Use the switcher at the top of the sidebar to read these docs for either.
Two frameworks
| Python | TypeScript | |
|---|---|---|
| Folder | andromeda/ | andromeda-js/ |
| Runtime | Python 3.12 + uv | Bun ≥ 1.1 |
| Start the assistant | scripts/andromeda | ./start.sh (or start.cmd on Windows) |
| Import the SDK | from libs import Agent | import { Agent } from "./src/libs/index.ts" |
| Declare a tool | A type-hinted function with @tool; Pydantic validates | tool({ name, description, parameters, execute }) with a zod shape |
| Options | snake_case keyword arguments | camelCase option objects |
| Terminal UI | Textual | Ink (React) |
| Tests | uv run python -m unittest | bun test |
Core agent concepts and most configuration are shared. The launchers, some integrations and a few CLI features differ; the table below calls out the main gaps.
Code layout
Both frameworks split into a provider-independent library and the CLI built on it.
Python (src/) | TypeScript (src/) | Holds |
|---|---|---|
libs/agent/ | libs/agent/ | Agent loop, planning, verifier, subagents, compaction, citations |
libs/models/ | libs/models/ | Ollama, Docker Model Runner and llama-server clients |
libs/tools/ | libs/tools/ | Files, shell, git, web, browser, desktop control |
libs/memory/ | libs/memory/ | Memory, local and Qdrant stores, goals |
libs/mcp/ | libs/mcp/ | MCP clients (the TypeScript side uses the official MCP SDK) |
libs/services/ | libs/services/ | Background tasks, schedules, heartbeat (SQLite) |
app/ | app/ | Runtime, commands, permissions, terminal UI |
Bundled MCP servers
andromeda-js/mcp/ holds Bun MCP servers, one folder each with a server.json: Gmail, Google Calendar, Docker, Figma, git, MinIO, MongoDB, PostgreSQL, Qdrant, SSH and YouTube. They read their credentials from the environment: the env block of their entry under mcp.servers in andromeda-js/andromeda.yml, or andromeda-js/.env. The git server works on the workspace and on repositories under GIT_MCP_ROOTS. Both frameworks discover server files in a workspace's mcp/ folder, and the Python project's andromeda.yml also runs these servers with their working directory set to andromeda-js. See MCP servers.
Feature parity
| Feature | Python | TypeScript |
|---|---|---|
| Agent loop, tools, memory, subagents, planning, MCP | Yes | Yes |
| Web research with enforced citations | Yes | Yes |
Scraped images in a folder per page, with manifest.json | Yes | Yes |
| Full browser tool set | Yes | Yes |
| Desktop control (macOS, Windows, Linux) | Yes | Yes |
| Chat from WhatsApp | Yes | Yes |
| Always-on daemon and event triggers | Schedules and heartbeat | Daemon, schedules, heartbeat, Gmail/calendar/file/webhook triggers |
| Encrypted browser-login vault | No | Yes |
| Plugins and shell hooks | No | Yes |
| Instances that find and message each other | No | Yes |
| Usage dashboard with connected devices | No | Yes |
| OpenAI-compatible agent HTTP API and standalone React chat | No | Yes |
| Dashboard Playground runs with selected live agent tools | No | Yes |
| Chat attachments, weather and inline media/map/code widgets | No | Yes |
| Idle check-ins and daily reflection | No | Yes |
| Claude Code-style slash commands | Core set | Core set plus /rewind, /fork, /effort, /loop and more |
Credentials in andromeda.yml (env: map, per-server MCP env) | No | Yes |
| Mobile voice server | No | Yes |
| First-run dependency checks | uv sync through the launcher | Cross-platform launcher checks and installs missing prerequisites |
| Voice, images and video | Native (Faster Whisper, Kokoro, Qwen3-TTS, diffusers) | Native, no Python (ONNX Runtime, qwentts.cpp, stable-diffusion.cpp) |
| First-run model setup | Hardware-based recommendations and interactive engine/model picker | Prerequisite checks and configured model pull |
Package install check before npm/pip installs | Yes | Not yet |