Self-hosting

OutcomeOS is one Cloudflare Worker using D1, KV, R2, Queues and Durable Objects. You can deploy it to your own Cloudflare account, or run it locally/with Docker using the same runtime (workerd) with local persistence.

Docker

git clone <repo url> outcomeos && cd outcomeos
cp apps/api/.dev.vars.example apps/api/.dev.vars   # set DATA_KEY (openssl rand -base64 32)
docker compose up --build                           # http://localhost:8787

Your Cloudflare account

pnpm install && pnpm build
cd apps/api
npx wrangler d1 create outcomeos            # paste the id into wrangler.jsonc
npx wrangler kv namespace create KV         # paste the id
npx wrangler r2 bucket create outcomeos-artifacts
npx wrangler queues create outcomeos-jobs && npx wrangler queues create outcomeos-jobs-dlq
npx wrangler secret put DATA_KEY
npx wrangler d1 migrations apply DB --remote
npx wrangler deploy

Without Stripe keys, billing is off and there are no plan limits. Google login is optional; email + password always works. See the README for every environment variable.