FastAPI backend for the Minds Cowork desktop app
Project description
Cowork Server
FastAPI backend for the Anton desktop app. Manages projects, conversations, files, scheduling, memory, and agent orchestration with a SQLite-backed data layer.
Quick Start
Requires Python 3.12+ and uv.
# Install and run
uv tool install cowork-server
cowork-server
The server starts on http://127.0.0.1:26866. Confirm with:
curl http://127.0.0.1:26866/api/v1/health/
Development
# Run from source (auto-manages virtualenv + deps)
uv run cowork-server
When running alongside the Electron app in dev mode, the app spawns the server automatically — no manual start needed.
Dev setup helper
uv run cowork-dev-setup
Initializes the database and validates configuration.
Architecture
cowork/
api/v1/endpoints/ # FastAPI route handlers
services/ # Business logic
models/ # SQLModel / DB models
schemas/ # Pydantic request/response schemas
db/ # Database session and migrations
common/ # Shared utilities, settings
harnesses/ # Agent adapters (Anton, Hermes, etc.)
The server is designed to be agent-agnostic — core features (projects, conversations, files) are shared across agents, while agent-specific behavior lives in harness adapters. See docs/DESIGN.md for the full architectural rationale.
API
All endpoints live under /api/v1/. Key resource groups:
| Path | Description |
|---|---|
/health |
Readiness probe |
/projects |
Project CRUD and working-folder management |
/conversations |
Conversation threads and message history |
/responses |
Streaming agent responses (SSE) |
/files |
OpenAI-compatible file uploads |
/schedules |
Recurring task scheduling |
/skills |
Agent skill definitions |
/memory |
Persistent agent memory |
/artifacts |
Agent-produced file previews |
/publish |
Publish HTML artifacts to 4nton.ai |
/connectors |
Third-party service connections and OAuth |
/settings |
User preferences and API keys |
Configuration
Configuration is read from the database (UserSettings table) and can be managed through the Settings UI in the desktop app or via PUT /api/v1/settings/.
Environment variables fall into two namespaces:
Server-level (COWORK_*) — control the cowork-server process itself:
| Variable | Default | Description |
|---|---|---|
COWORK_SERVER_PORT |
26866 |
Server port |
COWORK_SERVER_HOST |
127.0.0.1 |
Bind address |
COWORK_PROJECTS_DIR |
~/.cowork/projects |
Project storage root |
COWORK_FILES_DIR |
~/.cowork/files |
Uploaded files root |
COWORK_VAULT_DIR |
~/.cowork/data-vault |
Connector credential vault |
Harness-level (ANTON_*, HERMES_*) — configure a specific agent harness. These are read by the harness adapter, not by cowork-server core. They use the harness prefix because the upstream agent libraries (anton, hermes-agent) define them:
| Variable | Harness | Description |
|---|---|---|
ANTON_PUBLISH_URL |
Anton | Artifact publish endpoint |
ANTON_SKILLS_ROOT_DIR |
Anton | Skill file storage |
ANTON_GLOBAL_MEMORY_ROOT_DIR |
Anton | Global memory files |
HERMES_HOME / HERMES_ROOT_DIR |
Hermes | Hermes data root |
In Docker/Lightsail deployments, the container also receives ANTON_MINDS_API_KEY, ANTON_OPENAI_API_KEY, etc. — these are consumed by the Anton agent library directly (not by cowork-server settings), and are injected by the provisioning lambda via cloud-init user-data.
Docs
- docs/DESIGN.md — Architectural overview and design decisions
- docs/MIGRATION.md — Migration guide from the legacy server
- docs/MIGRATION_PROGRESS.md — Migration status tracker
License
See LICENSE.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cowork_server-0.1.1.tar.gz.
File metadata
- Download URL: cowork_server-0.1.1.tar.gz
- Upload date:
- Size: 451.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
84c2da721cb396d9dd14ea33c6cd0161e57003c82505191be681e2556092d97f
|
|
| MD5 |
cfd83da4d0258170d2fb7adc4b0093e0
|
|
| BLAKE2b-256 |
5bb9f366d4ac56b606ebc103e0a658feb14afd6ea7ef9c312ff620383e7fb85b
|
Provenance
The following attestation bundles were made for cowork_server-0.1.1.tar.gz:
Publisher:
publish.yml on mindsdb/cowork-server
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cowork_server-0.1.1.tar.gz -
Subject digest:
84c2da721cb396d9dd14ea33c6cd0161e57003c82505191be681e2556092d97f - Sigstore transparency entry: 1698976551
- Sigstore integration time:
-
Permalink:
mindsdb/cowork-server@46123621c9b51be9b834443992fe22256fe98f95 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/mindsdb
-
Access:
internal
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@46123621c9b51be9b834443992fe22256fe98f95 -
Trigger Event:
release
-
Statement type:
File details
Details for the file cowork_server-0.1.1-py3-none-any.whl.
File metadata
- Download URL: cowork_server-0.1.1-py3-none-any.whl
- Upload date:
- Size: 551.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
384c5c53fc935475f3b937de5db94ac480b91b4a29d8ee7275c9aeed5757ee0a
|
|
| MD5 |
885dddaae7513228a1aa9146a6adc447
|
|
| BLAKE2b-256 |
8e57b4e09dc942fca1038d9a3f37988b2d914fd746b78ca61eebc03262eab1ae
|
Provenance
The following attestation bundles were made for cowork_server-0.1.1-py3-none-any.whl:
Publisher:
publish.yml on mindsdb/cowork-server
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cowork_server-0.1.1-py3-none-any.whl -
Subject digest:
384c5c53fc935475f3b937de5db94ac480b91b4a29d8ee7275c9aeed5757ee0a - Sigstore transparency entry: 1698976682
- Sigstore integration time:
-
Permalink:
mindsdb/cowork-server@46123621c9b51be9b834443992fe22256fe98f95 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/mindsdb
-
Access:
internal
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@46123621c9b51be9b834443992fe22256fe98f95 -
Trigger Event:
release
-
Statement type: