New: AI spend limits now cover the agent builder and the project planner →
Product
AI Teammates
Solutions
Resources
PricingEnterprise
Start free Book a demo Log in
Self-hosted

TaskCrew on your own servers.

One Docker Compose file. Your database, your files, your AI key, your region. Everything in TaskCrew, AI teammates included, running where you decide.

Docker Engine + Compose v2Automatic HTTPSDaily backups to your S3
Who it’s for

For teams that need to know where their work lives.

Regulated teams

Finance, health and government suppliers keep records, files and audit logs on servers they control, in the region they choose.

Teams leaving Jira Data Center

Keep running your own servers, and bring your projects over from a Jira CSV export with a dry run and Undo.

Full control of AI

Your own provider key and account, monthly limits for each workspace and the whole server, and one setting that stops every AI call.

Up in minutes

Try it on your laptop. Run it on a server.

All settings live in one file, deploy.env, copied from deploy.env.example, which holds working defaults for a try-out.

  1. 1

    Set three secrets

    Long random values for signing, encryption and the runner. A server refuses to start with the examples.

  2. 2

    Point two host names at it

    One for the app and one for the API. Open ports 80 and 443, and nothing else.

  3. 3

    Start it with HTTPS

    Caddy gets and renews the certificates. The app and the API listen only behind it.

$ docker compose up -d --build    # first build: a few minutes
$ open http://localhost:3000      # sign up, make a workspace

# try-out only: deletes the database and uploads too.
# Never run this on a server.
$ docker compose down -v

Commands run from a copy of the TaskCrew code. Talk to us about licensing

What you control

Your stack, your choices.

Every outside service TaskCrew uses is one you pick, and most can be swapped or switched off.

Every setting, explained

DatabasePostgres runs where you run it: every record, the encrypted secrets and the audit logs.
File storageA Docker volume on the server, or any S3-compatible bucket: AWS S3, Cloudflare R2, Backblaze B2, MinIO. The bucket stays private and files stream through the API.
EmailYour own SMTP server for invites, password resets and notifications (SMTP_URL). Without one, nothing is sent and invite links are copied instead.
AI provider and keyYour OpenRouter key (OPENROUTER_API_KEY). All AI uses deepseek/deepseek-v4-flash, and by default only providers that don’t keep or train on prompts (AI_PROVIDER_DATA_COLLECTION=deny).
AI spendingA monthly limit per workspace and one for the whole server, in US dollars, and AI_DISABLED to stop every AI call at once.
ConnectorsSome built-in connectors sign in through an OAuth app you register: GitHub, Slack, HubSpot, Asana, Xero, and one Google client for Gmail, Drive, Calendar and Chat. AI teammates reach only https connectors on public hosts unless you change CONNECTOR_URL_POLICY.
BackupsA daily database dump to your own S3 bucket, kept 30 days (BACKUP_S3_BUCKET, BACKUP_KEEP_DAYS). Without a bucket there are no backups, and the server warns you.
Map tilesOpenStreetMap by default, your own tile server, or maps turned off (TASKCREW_MAP_TILE_URL).
Sandbox isolationA hardened container per AI run with memory and CPU limits, and gVisor if you want it (SANDBOX_RUNTIME=runsc).
AlertsServer errors, failed backups and crashed runs posted to a Slack, Microsoft Teams or Google Chat webhook (ALERT_WEBHOOK_URL).
Production-ready

Safe settings by default, and a guide for the rest.

Automatic HTTPS

Caddy gets and renews Let’s Encrypt certificates and adds HSTS. You only set the host names and an email address.

Nothing exposed by accident

The web app and the API listen on 127.0.0.1 only, behind the proxy. The database is reachable only inside the Docker network.

Refuses unsafe settings

Once it’s reachable beyond localhost, the API won’t start with an example, short or reused secret, or insecure cookies over HTTPS.

Daily backups, tested restores

A database dump every 24 hours to your bucket. A restore drill on 13 Oct 2026 restored a dump and compared row counts: they matched.

Alerts and health checks

Errors, failed backups and crashed runs go to your chat. A health endpoint checks the database for your uptime monitor.

Upgrades in three commands

Back up, pull and start again. Migrations run before the API and the runner come back.

Read the self-hosting guide

Self-hosted or Cloud

Same product. You choose who runs it.

Both have the same features, AI teammates and approvals included. The difference is who looks after the server.

TaskCrew CloudSelf-hosted
Who runs itWe doYou do, on your own servers
Where data livesWith our hosting provider, named on the subprocessors pageWhere you put it: your region for the database, files, email and AI provider
Getting startedSign up and invite your team todayOne Docker Compose file, a server and two host names
UpdatesShipped for you; see the changeloggit pull and up, when you choose. Migrations apply themselves
BackupsDaily, done for youDaily to your S3 bucket, with a restore guide
AIAI credits included in every plan; AI pauses at your limitYour OpenRouter key and account. You pay your provider directly
Plans and limitsFree, Team, Business and EnterpriseNo plan limits: billing is off unless you turn it on
SupportEmail support@taskcrew.com; the Enterprise plan includes an SLATalk to us about support and licensing
TaskCrew Cloud is free for up to 5 people, and Business is free to try for 14 days. See pricing
FAQ

Questions about self-hosting

How is self-hosting licensed?

Licensing for self-hosted TaskCrew isn’t published yet. Tell us about your team and where you want to run it, and we’ll talk it through. Talk to us about licensing.

What do I need to run it?

Docker Engine with Compose v2, or Docker Desktop for a local try-out. For a real install: a server you can point two host names at (one for the app, one for the API), with ports 80 and 443 open. Add an S3-compatible bucket for backups, SMTP for email and an OpenRouter key for AI.

Which AI model does it use?

All AI, from AI teammates to the agent builder, uses deepseek/deepseek-v4-flash through OpenRouter, with your own key. You set the monthly limits, and AI_DISABLED=true stops every AI call. Without a key, everything else works and AI features say AI isn’t set up.

What leaves my server?

Only what you set up: AI requests to OpenRouter, calls to the connectors you turn on, email through your SMTP server, map tiles from the tile server you choose (or none), and push notifications through the browsers’ push services, encrypted end to end.

How do upgrades work?

Take a fresh backup, pull the new version and start the stack again. The migrate service applies new database migrations before the API and the runner start. AI runs in progress when the runner restarts fail as “interrupted” and can be retried, so upgrade when few are running.

What happens if I lose the encryption key?

Stored credentials (vault entries, connector tokens, public links) can’t be read without ENCRYPTION_KEY, so keep it safe and never change it. JWT_SECRET can be rotated at any time; it signs everyone out.

Run TaskCrew where your data lives.

Tell us about your setup and we’ll help you get it running.

One Docker Compose fileYour database, files and AI keyAutomatic HTTPS