A ANDROMEDADocumentation › Guides

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

PythonTypeScript
Folderandromeda/andromeda-js/
RuntimePython 3.12 + uvBun ≥ 1.1
Start the assistantscripts/andromeda./start.sh (or start.cmd on Windows)
Import the SDKfrom libs import Agentimport { Agent } from "./src/libs/index.ts"
Declare a toolA type-hinted function with @tool; Pydantic validatestool({ name, description, parameters, execute }) with a zod shape
Optionssnake_case keyword argumentscamelCase option objects
Terminal UITextualInk (React)
Testsuv run python -m unittestbun 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

Shared files

Settings keep their snake_case names in both, and the on-disk formats match: the memory folder layout, Qdrant payloads and point ids, plan files, and SQLite schemas. So both frameworks can share a workspace, a .memory/ folder, a Qdrant collection and a andromeda.yml. Each keeps what it saves in its own project's git-ignored .andromeda/ folder. The Database page lists every table and how they connect.

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

FeaturePythonTypeScript
Agent loop, tools, memory, subagents, planning, MCPYesYes
Web research with enforced citationsYesYes
Scraped images in a folder per page, with manifest.jsonYesYes
Full browser tool setYesYes
Desktop control (macOS, Windows, Linux)YesYes
Chat from WhatsAppYesYes
Always-on daemon and event triggersSchedules and heartbeatDaemon, schedules, heartbeat, Gmail/calendar/file/webhook triggers
Encrypted browser-login vaultNoYes
Plugins and shell hooksNoYes
Instances that find and message each otherNoYes
Usage dashboard with connected devicesNoYes
OpenAI-compatible agent HTTP API and standalone React chatNoYes
Dashboard Playground runs with selected live agent toolsNoYes
Chat attachments, weather and inline media/map/code widgetsNoYes
Idle check-ins and daily reflectionNoYes
Claude Code-style slash commandsCore setCore set plus /rewind, /fork, /effort, /loop and more
Credentials in andromeda.yml (env: map, per-server MCP env)NoYes
Mobile voice serverNoYes
First-run dependency checksuv sync through the launcherCross-platform launcher checks and installs missing prerequisites
Voice, images and videoNative (Faster Whisper, Kokoro, Qwen3-TTS, diffusers)Native, no Python (ONNX Runtime, qwentts.cpp, stable-diffusion.cpp)
First-run model setupHardware-based recommendations and interactive engine/model pickerPrerequisite checks and configured model pull
Package install check before npm/pip installsYesNot yet