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.