Getting started
Quick start
Uses the Ahena CLI (beta). Install it with npm install -g @ahena/cli, or prefix commands with npx @ahena/cli. See Installation. The dashboard covers projects, connections, Doctor, the Stack Graph, plans and approvals without it.
Ahena connects, configures and checks the services your app runs on (Supabase, Cloudflare R2, Resend, Stripe, Firebase, OpenAI / Anthropic / Ollama) using your own accounts, and generates the code your app uses to call them. Ahena is never in your app's request path: if Ahena is down, your app keeps working.
0. Install the CLI
npm install -g @ahena/cli
The command is ahena (or run npx @ahena/cli … without installing). The CLI is in beta. Only install it from the
@ahena scope. Without the CLI you can still do steps 1–3 below in the dashboard
(organization, project, environments, connections, Doctor).
1. Sign in and create the project
ahena login # opens the browser; the CLI never sees your password
ahena init
init asks what you're building and suggests a stack (recipes), then writes
ahena.config.ts. It's safe to commit: it never contains secrets. Answer "yes" to connecting
now and Ahena walks you through each provider, shows the plan for what the providers need
(approve it, or leave billable changes for later), generates the integration layer, records
ahena.lock and runs Doctor.
Already have an app? init detects the framework and the providers it uses (from
package.json and .env.example) and offers to import that stack as declared capabilities,
without changing your code. Services Ahena doesn't manage (Clerk, SendGrid, S3-compatible
storage, Prisma…) are listed as "Not managed by Ahena". They're never imported or guessed at.
Doctor then reports what it couldn't verify yet, such as Stripe webhooks it didn't create, so
you know what to declare. Non-interactively: ahena init --yes --import.
Prefer flags? ahena init --yes --recipe saas --domain leo.app.
2. Connect your providers
ahena sync # what this app needs, and connect what's missing
ahena connect stripe -e production # or one at a time
Credentials come from an environment variable, stdin or a hidden prompt, never a command-line argument. They're encrypted per environment; lists only show names.
3. Check and configure
ahena doctor # health, configuration, environment separation, repo security
ahena doctor --fix # fix what's safe; ask before anything else
ahena diff # every change needed to match ahena.config.ts, then approve
4. Generate code and add features
ahena generate # src/ahena/: typed clients, webhook routes, env schema, .env.example
ahena add payments # intent: declare → connect → plan → approve → apply (a marketplace gets Stripe Connect)
ahena add profiles teams # feature packs: migrations with RLS, helpers, API routes, docs
import { ahena } from "./src/ahena/client";
await ahena.email.send({ to, subject: "Welcome", text: "Hi" });
5. Keep it healthy
ahena lock && git add ahena.lock # the stack, reproducible for teammates (ahena sync)
ahena drift # changes made outside Ahena
ahena ci init # GitHub Actions: ahena deploy-check on every PR
ahena mcp # let your AI coding agent inspect the stack
Next: CLI reference · Configuration · Doctor · Troubleshooting.