One container on a laptop. A cluster for the team.
ZAANIX is a single Node.js server with DuckDB inside it — nothing else to install. The image is multi-arch (amd64 and arm64) and ships with DuckDB's extensions, so it needs no network at runtime. It is available on request: talk to us for access and the deployment files.
Docker
The fastest first look. Set JWT_SECRET and ENCRYPTION_KEY for anything longer, or sign-ins and stored credentials will not survive a restart.
/data to query files you already have.ZAANIX_ADMIN_EMAIL and ZAANIX_ADMIN_PASSWORD to create it at the first start.:4201; publish that port too when you use them.Docker Compose
A docker-compose.yml, shared with access, runs ZAANIX and, by profile, what you want next to it.
:9090 — each switched on when you want it..env file holds the secrets and the first admin's credentials../data is mounted at /data; DuckDB spills to a tmpfs.ZAANIX_MEMORY caps the container (default 8g); DUCKDB_MEMORY_LIMIT caps the engines.The AI and ZAANIX Agent
Built into the server since 3.0: no second container, port or sign-in. Give it a model and Home becomes the agent; leave it out and ZAANIX works without AI.
The agent guide# .env — a model for everyone (or set it in Settings › AI › Model; people may keep their own key)
# provider: anthropic | openai | gemini | deepseek | openrouter | kimi | groq | mistral | xai | ollama | custom | bedrock …
AI_PROVIDER=anthropic
AI_MODEL=claude-sonnet-5
AI_API_KEY=sk-ant-…agent.max_steps, agent.max_retries and agent.max_output_tokens (ZAANIX__agent__max_steps …).agent.slack.* and agent.teams.* turn on the bots; the image ships the zaanix-agent CLI at /cli/install.sh.zaanix import-agent-data --from agent.db brings missions, briefs and memories over.Kubernetes and clusters
Kustomize manifests, shared with access, and a cluster mode for more than one node.
Deployment guide/data.MCP clients
Point Claude, Claude Code or Cursor at a running ZAANIX with a token that has the mcp scope.
claude mcp add --transport http zaanix http://localhost:4200/mcp \
--header "Authorization: Bearer zx_…"
# or over stdio
zaanix mcp --token zx_… [--workspace <id>]Configuration
Everything is in zaanix.config.yaml, and any key can be overridden with ZAANIX__SECTION__KEY. These cover most deployments.
| Variable | What it does | Default |
|---|---|---|
JWT_SECRET | Signs sign-in sessions (16 characters or more). Required in production. | generated per start |
ENCRYPTION_KEY | 32-byte hex key for the credential vault (AES-256-GCM). Required in production. | generated per start |
ZAANIX_ADMIN_EMAIL, _PASSWORD | The first admin, created only when there are no users. | none |
ZAANIX_DATA_DIR | The folder every DuckDB read and write is confined to. | /data in the image |
ZAANIX_FILESYSTEM_MODE | full for a personal machine; sandboxed for shared deployments. | full |
DATABASE_URL | The metadata store, sqlite://… or postgres://…. Migrations run at start. | SQLite |
ZAANIX_ENABLE_EXTERNAL_ACCESS | Lets a sandboxed deployment read s3://, gcs:// and https:// sources. | false |
DUCKDB_MEMORY_LIMIT, DUCKDB_THREADS | The engine's memory ceiling and threads. | 80%, auto |
AUTH_STRATEGY and OIDC_* | Single sign-on; OIDC_GROUPS_CLAIM maps identity-provider groups to teams. | local |
AI_PROVIDER, AI_MODEL, AI_API_KEY | The server's AI model (anthropic, openai, gemini, openrouter, ollama, bedrock …); a model set in Settings wins. The 2.x names COPILOT_* still work. | none |
/app/meta (or your PostgreSQL database) before a major upgrade; the data directory is not touched.Talk to us about ZAANIX.
ZAANIX is available on request. Tell us about your data and your team, and we will set you up with access, the deployment files and a walkthrough.