Skip to content
STACK / CONTROL PLANE / v0.1.1 LIVE ON NPM
the only line you tell claude code

“Stack my backend.”

One prompt to explore 39 providers. Approve setup in your accounts; Stack records successful services, stores returned credentials through Phantom, and adds supported MCP entries.

illustrative demo·plan six providers · no accounts contacted
you ›stack recommend "Build me a B2B SaaS with auth, AI, analytics, and error tracking."
install › curl -fsSL stack.ashlr.ai/install.sh | bash
Source
FIG. 01 — PROVIDER CONSTELLATION 39 PROVIDERS
39 PROVIDERS · 3 ORBITS
live
3 orbits · headline → core → long-tail hover any logo
Supported providers
39 catalog entries, with provider-specific setup. Click any logo to see what stack add does for it.
Full catalog →
§ 01b · Install in Claude Code
THREE SETUP OPTIONS · VERIFY EACH STEP

Get Stack into Claude. Review setup, then inspect results.

Pick the path that matches where you are. After configuring the plugin and server, you can request /stack:add. Provider setup may need an account, credentials or interactive approval. Install both Stack packages and use the runtime required by your versions; public 0.1.1 needs Bun 1.2+, while reviewed source 0.2.1 is not a publication claim.

Path 01 · Review with Claude Recommended

Start with a setup review.

Use these discovery references in your Claude Code session: /llms.txt + ai-plugin.json; reading them does not install anything or authorize provider operations.

Paste to claude
Review Ashlr Stack setup for this project, then recommend a service plan before applying it.
Path 02 · Plugin commands Claude Code

Install the plugin.

Adds /stack:add, /stack:doctor, /stack:list, /stack:status — instruction-based slash commands, subject to server and CLI setup.

Run in claude code
/plugin marketplace add ashlrai/ashlr-stack
/plugin install stack@ashlr
Path 03 · Stdio server entry Cursor · Windsurf · Zed

Wire the MCP server.

With ashlr-stack-mcp and stack on PATH, adapt this canonical entry to your client settings. Confirm its project cwd and the tools it actually advertises; this is not a universal client config.

.mcp.json
{
  "mcpServers": {
    "ashlr-stack": {
      "command": "ashlr-stack-mcp"
    }
  }
}
→ Reviewed source declares 19 MCP tools; 39 curated provider entries → Secret operations require compatible Phantom; inspect raw tool and file output before sharing → MIT · source
39
catalog entries
19
source MCP tools
13
categories
05
templates
MIT
license
§ 02 · Before / After

Manual setup. Or a guided workflow.

Illustrative setup steps vs. stack add supabase. Explore the workflow.

1. Create Supabase project (browser)

→ open supabase.com/dashboard → new project
→ pick region, wait ~60s for provision
→ settings › api › copy URL + anon + service_role

2. Paste keys into .env.local

$ vim .env.local
NEXT_PUBLIC_SUPABASE_URL=https://abc123.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJhbGci…
SUPABASE_SERVICE_ROLE_KEY=eyJhbGci…

3. Install client

$ bun add @supabase/supabase-js

4. Wire up MCP server by hand

$ vim .mcp.json
{ "mcpServers": { "supabase": {
"command": "npx",
"args": ["-y", "@supabase/mcp-server-supabase"],
"env": { "SUPABASE_ACCESS_TOKEN": "???" }
} } }

5. Generate personal access token (browser)

→ supabase.com/dashboard/account/tokens
→ copy, paste into .mcp.json, swear a little

6. Lint your .env out of git history (just in case)

⚠ you've done this part wrong before
$ git log -p | grep SERVICE_ROLE… # please no

7. Restart Claude Code, pray MCP attaches

→ quit. relaunch. squint at logs.

8. Realize you forgot to add Sentry, Resend, PostHog…

repeat steps 1–7, seven more times
Manual setup·Several account and editor steps·Keep credentials out of source files
§ 03 · Interactive

Explore the simulation.

Scripted browser simulation: after boot-up, try the supported example stack commands (including stack recommend "b2b saas with auth" or stack add supabase) to explore illustrative output. This browser demo does not execute the CLI or set up provider accounts.

STK-01 · SIMULATED · no provider or file effects
§ 04 · Stack builder · 39 providers

Pick your stack. See the recipe — live.

Click any provider to inspect the real stack add invocation, declared empty-key .env.example slots, and optional MCP metadata. Select providers to plan a recipe; actual entries depend on successful setup.

describe your project↵ to suggest
⌕
showing 39 / 39 providers
  • MCP
    Supabase· OAuth
    Postgres + Auth + Storage
    inspect →
  • MCP
    Neon· PAT
    Serverless Postgres
    inspect →
  • Turso· PAT
    Edge SQLite (libSQL)
    inspect →
  • key
    Convex· API key
    Reactive backend-as-a-service
    inspect →
  • key
    Upstash· API key
    Serverless Redis + Kafka
    inspect →
  • key
    Firebase· Service key
    Realtime DB + Auth
    inspect →
  • MCP
    Vercel· PAT
    Frontend platform
    inspect →
  • key
    Railway· API key
    Infra from a repo
    inspect →
  • key
    Fly.io· API key
    VMs at the edge
    inspect →
  • MCP
    Cloudflare· PAT
    Workers, R2, D1
    inspect →
  • key
    Render· API key
    Zero-config hosting
    inspect →
  • key
    Modal· API key
    Serverless GPU + sandbox
    inspect →
  • key
    AWS· API key
    S3, Lambda, RDS
    inspect →
  • key
    GCP· API key
    Google Cloud Platform
    inspect →
  • key
    DigitalOcean· PAT
    Droplets, Kubernetes, managed DBs
    inspect →
  • key
    Hetzner· API key
    Affordable European cloud servers
    inspect →
  • key
    OpenAI· API key
    GPT, Realtime, embeddings
    inspect →
  • key
    Anthropic· API key
    Claude models + MCP
    inspect →
  • key
    xAI· API key
    Grok + tool use
    inspect →
  • key
    DeepSeek· API key
    Open-weight models
    inspect →
  • key
    Replicate· PAT
    OSS model inference
    inspect →
  • key
    Braintrust· API key
    LLM evals + observability
    inspect →
  • MCPkey
    PostHog· API key
    Product analytics + flags
    inspect →
  • key
    Mixpanel· API key
    Product analytics
    inspect →
  • PL
    key
    Plausible· API key
    Privacy-friendly web analytics
    inspect →
  • key
    Datadog· API key
    Metrics, traces, logs
    inspect →
  • key
    Grafana· PAT
    Dashboards + alerting
    inspect →
  • MCP
    Sentry· PAT
    Error + performance tracking
    inspect →
  • MCPkey
    Stripe· API key
    Billing, subscriptions, tax
    inspect →
  • MCP
    GitHub· Device
    Repos, Actions, OAuth
    inspect →
  • MCPkey
    Linear· API key
    Issues, projects, cycles
    inspect →
  • key
    Resend· API key
    Transactional + React email
    inspect →
  • key
    SendGrid· API key
    High-volume transactional mail
    inspect →
  • key
    Mailgun· API key
    API-first email + routing
    inspect →
  • PO
    key
    Postmark· API key
    Deliverability-focused transactional
    inspect →
  • key
    Clerk· API key
    Drop-in auth + users
    inspect →
  • key
    Auth0· API key
    Identity platform
    inspect →
  • WO
    key
    WorkOS· API key
    Enterprise SSO + Directory Sync
    inspect →
  • LA
    key
    LaunchDarkly· API key
    Feature flags + experimentation
    inspect →

Brand marks provided by simple-icons and used for identification. All trademarks are property of their respective owners. Stack stores returned credentials through Phantom after successful setup. Review your app's environment and each consumer separately.

§ 05 · Mechanics

Three surfaces, one project workflow.

Stack coordinates the CLI, the vault, and your project files for the current project. Service declarations can be shared in .stack.toml; local instance data and credential access depend on each developer's setup. Click a step to pause the auto-walkthrough.

ILLUSTRATIVE · 01 · CLI orchestrates
1 / 3
›
stack add supabase
·
▲ stack adding Supabase
·
auth · OAuth (PKCE) via the Ashlr Stack app
✓
browser approval, if requestedexample account only
✓
creating or attaching an example projectactual resource depends on your account
✓
fetching SUPABASE_URL · ANON_KEY · SERVICE_ROLE_KEY
·
Review setup result before using the service
to verifyInspect each result. A failed setup can leave upstream or vault state that needs manual cleanup.
§ 05a · Use cases

Illustrative workflows for a Claude Code session.

Four illustrative moments: a fresh SaaS scaffold, adding analytics to an existing app, responding to a leaked token, and choosing a provider from the catalog. Each pairs example chat with a supported stack command and illustrative terminal output. Actual behavior depends on installed versions, client setup, provider access and explicit approvals.

§ · use case 01

Compose a new SaaS project

Start a project with Supabase, PostHog, Sentry, and Resend. What needs my authorization?

example command
› stack init --noInteractive && stack add supabase && stack add posthog && stack add sentry && stack add resend
illustrative interaction
you
Start a project with Supabase for auth and data, PostHog for analytics, Sentry for errors, and Resend for email.
claude code
I'll initialize a blank Stack config, then add one service at a time. Each service may need your existing account, OAuth approval, or API key.
→ stack_init · blank config; no template
· initialize .stack.toml and .stack.local.toml
→ stack_add · service=supabase
· Supabase · authorize OAuth or provide a PAT; create a project if approved
→ stack_add · service=posthog
· PostHog · provide an API key; verify access to projects
→ stack_add · service=sentry
· Sentry · provide a PAT and select an existing project
→ stack_add · service=resend
· Resend · provide an API key; verify key access, then check domain setup separately
Expected: review each provider result before using the app
claude code
After successful setup, inspect the saved config and MCP entries. Use `stack env export --example` for empty keys; `stack exec -- bun dev` forwards app startup to `phantom exec`.
expected next step

If each provider accepts the setup, Stack records service slots in `.stack.toml`, stores credentials in Phantom, and adds available MCP entries to `.mcp.json`. Run `stack env export --example` for empty-key documentation; configure and verify the app separately.

§ 06 · Starter stacks · 05

Opinionated starters, ready to explore.

Explore an illustrative starter recipe, supported stack add commands, optional empty-key .env.example entries, and MCP possibilities. Actual files and provider results depend on successful setup.

§ · nextjs-supabase-posthog

Next.js + Supabase + PostHog

App Router, Supabase Auth + Postgres, PostHog events from server actions. This is a planning preview; no provider or vault operation runs here.

3 providers5 catalog keys3 catalog MCP hints
template init
› stack init --template nextjs-supabase-posthog
alternative · one add per service
› stack add vercel && stack add supabase && stack add posthog
.env.example skeleton · not populated
# Vercel — Personal access token
VERCEL_TOKEN=

# Supabase — OAuth (PKCE)
SUPABASE_URL=
SUPABASE_ANON_KEY=
SUPABASE_SERVICE_ROLE_KEY=

# PostHog — API key
POSTHOG_PERSONAL_API_KEY=
optional Stack bridge · not provider config
{
  "mcpServers": {
    "ashlr-stack": {
      "command": "ashlr-stack-mcp"
    }
  }
}

Install @ashlr/stack and ashlr-stack-mcp so both `stack` and `ashlr-stack-mcp` are on PATH. Use the runtime required by the versions you installed. Adapt to your client and set its project cwd. Provider MCP entries require separate supported credential setup.

Don't see your stack? In an interactive terminal, stack init offers blank or a starter template. Choosing a template attempts setup for its listed services by default; use --noProvision with a template to write config only.
§ 07 · Agent-native
MCP · Claude Code plugin

Your agent can run Stack directly.

Stack provides a stdio MCP bridge and a Claude Code plugin. Use /stack:add to request provider-specific setup, credential persistence and optional configuration in .mcp.json. Review each result and complete client setup.

  • MCP-native
    Reviewed source declares 19 CLI-backed MCP tools, a subset of commands.
  • Plugin commands
    /stack:add · /stack:doctor · /stack:list are plugin commands.
  • Phantom-gated
    Credential setup uses Phantom; inspect returned text and config files.
# plugin registration — CLI/server runtime is required
› /plugin marketplace add ashlrai/ashlr-stack
› /plugin install stack@ashlr
◇Claude Code · illustrative·raven
›
Ask Claude anything…
⌘ K
§ 08 · Agent surface

Connect an MCP-capable agent, with explicit setup.

The ashlr-stack-mcp stdio server also needs the Stack CLI and the runtime required by your installed versions. Public 0.1.1 packages require Bun 1.2+; reviewed source 0.2.1 is not a publication claim. Click a client for a canonical server-entry example, then adapt it to that client's configuration format and launch it in your project directory.

Protocol: Model Context Protocol · modelcontextprotocol.io · Source: 19 tools · up to 3 raw-file resources · stdio
§ 09 · The Ashlr constellation

Four tools. Explore each tool.

Stack coordinates provider setup; its credential workflows use Phantom. ashlr-plugin and ashlrcode are separate tools shown for discovery. Verify their capabilities and compatibility separately. Hover a satellite to highlight the relationship.

→ Stack credential workflows use Phantom → Verify ashlr-plugin support for .stack.toml → Verify ashlrcode credential handling separately
§ 10 · Plain answers

Questions — answered.

The honest objections first. If a question isn't here, open one on GitHub Discussions — I'll add it here.

# optional empty-key example
› stack env export --example --stdout
Prints an empty-key environment skeleton. Configure and verify your app credentials separately.

Stack coordinates provider login, resource creation or attachment, secret storage and MCP wiring. The add workflow writes secrets through Phantom and records Stack/MCP configuration. Run `stack env export --example` separately to create an .env.example skeleton with empty values; this does not export plaintext credentials.

Yes. Stack temporarily handles login credentials and materialized secret values in process memory during setup. Persistent values are stored through Phantom; Stack configuration records secret names, resource references and provider metadata. Provider errors and subprocess output can still contain sensitive information, so this is not a guarantee of global redaction.

Stack coordinates provisioning and configuration around a secret manager. Its adapters can create or attach Supabase and Vercel projects, or read a DSN from an existing Sentry project. Vercel expects a user-supplied token; Supabase and GitHub have OAuth paths when configured, with PAT fallbacks. Authentication and resource operations depend on the adapter.

Stack includes a CLI, a Claude Code plugin and an MCP server. Other clients need compatible MCP configuration; a shared file alone does not establish client support. For local commands, `stack exec -- <command>` forwards execution to Phantom. The .env.example export is an empty-value skeleton, not automatic framework configuration.

Provider resources and the Phantom vault are separate from Stack. Local Stack files describe services and resource references, while .mcp.json contains MCP configuration. Removing Stack does not convert Phantom references into literal credentials. `stack env export --example` writes an empty-value example file, not a plaintext migration or a managed block in .env.local.

The repository contains provider adapters, CLI workflows, a Claude Code plugin, an MCP server and starter templates. Some adapters create resources; others attach to an account or validate an existing key. OAuth requires the relevant client configuration. Check your installed version's help for its available commands; source capabilities do not establish a published release or provider activation.

Stack's code is MIT-licensed. Provider accounts and any separate Phantom service have their own terms and charges. A free CLI does not make the resources you provision free; check the provider's terms before creating them.

Yes. Adapters implement the Provider interface in packages/core/src/providers/_base.ts, including login, provision and materialize. Register the adapter in packages/core/src/providers/index.ts and add focused tests. Health checks, dashboard links and resource teardown are optional capabilities, so document which operations the adapter supports.