Monorepo for Iterate's Cloudflare Workers platform. apps/os is the main app — the product dashboard at os.iterate.com.
- Commands run in the context of a Doppler config; that config chooses secrets, app config, Cloudflare account, and Alchemy stage.
- Local dev, previews, and production use the same
alchemy.run.tsprimitive with different configs:dev_<you>,preview_N, orprd. - Details: DevOps: Cloudflare, Doppler, And Alchemy.
Run these from apps/os. Plain pnpm cli ... uses your local Doppler setup
for apps/os. Wrap in doppler run --config <config> -- ... to target a
specific environment; the config supplies URLs and secrets. More on this script
pattern: Doppler-backed scripts.
OS exposes oRPC at /api/orpc/. The app CLI discovers procedures remotely and authenticates with the config's admin API secret:
# your local Doppler setup, normally dev_<you>
pnpm cli rpc --help
# production
doppler run --config prd -- pnpm cli rpc --help
# preview slot 3
doppler run --config preview_3 -- pnpm cli rpc --help
# local dev server (while pnpm dev is running)
doppler run --config dev_jonas -- pnpm cli --base-url http://localhost:5173 rpc --help
# localhost-oriented config (while pnpm dev:localhost is running)
doppler run --config dev_localhost -- pnpm cli rpc --helpReplace --help with a procedure path to call it.
Open Claude Code against a deployed project's MCP server:
doppler run --config prd -- pnpm cli claude-mcp --project-slug-or-id my-projectThe Doppler config picks the environment (prod, preview, your dev tunnel). APP_CONFIG_PROJECT_HOSTNAME_BASES in the config sets the project hostname base (e.g. iterate.app, iterate-preview-3.app); override with --base-host if needed.
More: apps/os README.
pnpm install
doppler setup --config dev --no-interactive # once per worktree; doppler.yaml scopes every app dir
pnpm dev # fully-local OS dev server (http://os.localhost:<port>)Use --config dev_<you> instead for your personal tunnel-backed dev (claims
os.iterate-dev-<you>.com — one worktree at a time). The shared dev config
is fully local and safe for any number of parallel worktrees/agents. Details:
Dev environments.
Before PRs:
pnpm install && pnpm typecheck && pnpm lint && pnpm format && pnpm testStart here: apps/os/
| Path | What |
|---|---|
apps/os/ |
Main app — product dashboard (os.iterate.com; dev: os.iterate-dev-<user>.com) |
packages/iterate/ |
iterate CLI — delegates to local source when run inside this repo |
docs/ |
Detailed documentation |
tasks/ |
Work tracking (markdown + frontmatter) |
apps/iterate-com/ |
iterate.com marketing site |
Other Cloudflare apps (semaphore, …) are supporting services — see docs/architecture.md.
doppler setup --config dev --no-interactive # once per worktree (or --config dev_<you> for tunnel dev)
pnpm dev # fully-local OS dev server at http://os.localhost:<port> (see docs/dev-environments.md)
pnpm auth:mint # mint a session as any user/admin (repo root; dev/preview; wrap in doppler run)
pnpm --dir apps/auth dev # auth app only (when working on auth itself)
pnpm test && pnpm typecheck && pnpm lint && pnpm formatHow do I…? — Dev environments answers: run
local dev (fully local, random port, os.localhost), be any user or an admin
(minting), point a browser (headless golden path) at local dev or a preview,
create a preview environment from your machine, and when you actually need a
tunnel. Doppler/Cloudflare/deploy details:
docs/devops-cloudflare-doppler-alchemy-setup.md.
- Dev environments — local dev, minting identities/admin sessions, browsers for agents, preview-from-local
- Coding style
- TypeScript conventions
- Design system & React
- Vitest patterns
- Domain objects & stream processors