CLI orchestrates
You run stack add. The CLI drives the provider OAuth, creates the upstream resource, and picks sane defaults — region, plan, project name — from your repo.
Every npx create-next-app is followed by an hour of tab-hopping — create a Supabase project, copy Vercel tokens, paste Sentry DSNs, add MCP servers to .mcp.json. Stack collapses that hour into one command.
What wiring a single service actually looks like — before and after. Flip the tab.
Not a recording — a faithful, looping replay of the real CLI. Initialise, add a provider, run the app. The whole loop is under thirty seconds.
One hand-tuned adapter per provider — OAuth dance, resource creation, secret slots, MCP wiring — all declarative. Missing one? Adapters are pluggable; write yours in a weekend.
Brand marks provided by simple-icons and used for identification. All trademarks are property of their respective owners.
Stack coordinates the CLI, the vault, and your project files so every dev on a repo — and every agent with access — sees an identical stack.
You run stack add. The CLI drives the provider OAuth, creates the upstream resource, and picks sane defaults — region, plan, project name — from your repo.
Every secret is written through Phantom Secrets. Stack never holds the values — it holds the slot names and lets Phantom do the vault work.
Stack patches .env.local, .mcp.json, and .stack.toml. Your dev server, editor, and Claude Code all see the same stack.
Each template is a real stack — not a boilerplate dump.
stack init runs every provider's OAuth, provisions
resources, stores secrets in Phantom, and hands you a repo that
bun devs in thirty seconds.
App Router, Supabase Auth + Postgres, PostHog events from server actions.
stack init --template nextjs-supabase-posthog Serverless Postgres with Drizzle, deployed to Vercel, observed by Sentry.
stack init --template nextjs-neon-vercel-sentry MCP-first TypeScript agent with side-by-side model comparison and tool use.
stack init --template claude-agent-openai-anthropic Auth, analytics, errors, and transactional email — wired from day one.
stack init --template supabase-posthog-sentry-resend Edge API on Workers, libSQL at the edge via Turso, users via Clerk.
stack init --template cloudflare-turso-clerk stack init opens an interactive picker.
Stack ships as a Claude Code plugin and an MCP server. From chat, call
/stack:add and Claude provisions the service,
stores secrets in Phantom, and re-wires your .mcp.json — no
copy-paste back to the terminal.
/stack:add, /stack:doctor, /stack:open — all available in-chat.
Stack's MCP server drops into Claude Code, Cursor, Windsurf, Codex, or ashlrcode with
the same .mcp.json. Your agent learns 17 new tools
— stack_add, stack_scan,
stack_doctor, and the rest — and can wire any of the 23 providers
for the user without leaving chat.
Stack is the control plane. Phantom is the vault. ashlr-plugin is the context compressor. ashlrcode is the multi-model runtime. They compose — none of them require the others, but together they're load-bearing.
The CLI + MCP that provisions, wires, and operates every service.
E2E-encrypted secret storage. Stack writes every credential through Phantom.
Drops Claude Code token spend ~80% on large repos with genome-indexed read/grep.
Route the same prompt across Claude, GPT, Grok, DeepSeek. Compare, diff, stream.
.stack.toml → ashlrcode respects the same secret slots