Nothing here is hard to do by hand; it is just ten browser tabs and a lot of copying keys into .env. What makes it more than a script is the split config — commit the shape of the stack, keep the resource ids local — so the next person to clone the repo runs the doctor and gets their own provisioned copy instead of your credentials.
A control plane for the third-party services a project depends on. It runs the OAuth dance per provider, creates the upstream resource, stores the credential in a local vault, and writes the config files — for a catalogue of 29 providers across databases, hosting, AI, analytics, errors, payments and auth.
- stack_init — scaffold a project from a template, with .stack.toml and .stack.local.toml written for you
- stack_add — one provider at a time or several at once: OAuth, resource creation, secrets, MCP wiring
- stack_recommend — describe what you are building and get a ranked provider list with reasons, saveable as a recipe
- stack_apply — run a saved recipe, wiring each provider and dropping webhook stubs for the ones that need them
- A split config: the shape of the stack is committed, per-developer resource ids are gitignored
- A scan mode for repositories that already have services wired, reading package.json, config files and .env.example
- A doctor that verifies every service and re-runs setup for anything broken — including across every project on the machine
- Secrets written through a separate vault, so real values stay on your machine
Install it with Homebrew, an install script, or from the npm registry — the vault comes with it. An account with each provider you actually use, created or connected during the OAuth step. Outside a Claude session the recommendation step can run against a local model instead. It is pre-alpha and says so.
One command — bun add -g @ashlr/stack ashlr-stack-mcp # or: npm i -g
