Developer previewAssistant engine

Build your assistant,
not its infrastructure.

Assistant is a self-hostable engine for assistants that work with your files and tools — not just your questions. Bring profiles, custom tools, skills, and your own domain rules; reuse agent execution, persistence, APIs, and model-provider integrations. Operate the runtime yourself.

Who owns what

The engine is shared. The application is yours.

Platform maintainers

The shared engine, extension and API interfaces, tested examples, documentation — and the platform gaps that adoption surfaces.

Application builders

Profiles, custom tools, skills, authored ontology and metrics, source mappings, deterministic domain safeguards, and representative tests.

Deployment teams

Installation, runtime placement, identity and accounts, credentials, permissions, data paths, networking, budgets, observability, backups and recovery.

From source

Five minutes with uv.

Python 3.11+, uv, and one provider key. There is no PyPI package — the assistant installs from source.

Install & run
git clone https://github.com/open-assistants-lab/assistant
cd assistant
uv sync --extra dev          # base install; add extras only if needed

cp .env.example .env         # add your provider key
echo 'OPENAI_API_KEY=sk-...' >> .env   # or ANTHROPIC_API_KEY, or a local Ollama

uv run assistant http        # server on 127.0.0.1:8080
curl -s http://localhost:8080/health   # -> {"status":"healthy"}

User data defaults to ~/Assistant/; the configured data path holds other state — inventory and back up both. Runtime, inference, tools, and tracing are four separate data flows: a local runtime does not mean everything stays local.

Deploy

One container. Your machine. Your data.

The assistant ships as a published Docker image — multi-arch (amd64 + arm64), rebuilt on every release. No clone, no build: pull, compose up, and the server answers on 127.0.0.1:8080.

Pull & run
docker pull ghcr.io/open-assistants-lab/assistant:latest
mkdir -p assistant-deploy && cd assistant-deploy
curl -sO https://raw.githubusercontent.com/open-assistants-lab/assistant/main/docker/docker-compose.yaml
curl -sO https://raw.githubusercontent.com/open-assistants-lab/assistant/main/docker/.env.example
cp .env.example .env        # add your LLM provider key
# swap the build: block for the published image, then:
docker compose up -d
curl -s http://localhost:8080/health   # -> {"status":"healthy"}

Published image

ghcr.io/open-assistants-lab/assistant:latest — multi-arch, rebuilt on every release tag and main push. Full feature set: semantic memory, analytics, tool index.

Loopback only

Binds 127.0.0.1:8080 with a built-in healthcheck — the server never exposes itself to the network.

Your data, mounted

./data:/app/data persists per-user stores; config.yaml is mounted so admin edits apply with a restart — no rebuild.

Enterprise mode

Container-per-tenant-user deployment with per-user API keys — generated by scripts/generate_enterprise_compose.sh.