From fusebase-flow
Guide for creating and using secrets in Fusebase Apps app backends. Use when: (1) An app backend needs API keys, passwords, or other sensitive config, (2) Creating secrets via the CLI, (3) Accessing secrets at runtime in backend code, (4) Deciding what should be a secret vs. a regular env var.
How this skill is triggered — by the user, by Claude, or both
Slash command
/fusebase-flow:app-secretsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Secrets are encrypted key-value pairs stored in Fusebase and injected into the app backend at runtime as environment variables. Use them for sensitive config that must not be committed to source control (API keys, passwords, tokens, etc.).
Secrets are encrypted key-value pairs stored in Fusebase and injected into the app backend at runtime as environment variables. Use them for sensitive config that must not be committed to source control (API keys, passwords, tokens, etc.).
Secrets are only available in the app server (backend/ directory). They are NOT accessible in the browser/SPA — never try to read secrets from the frontend.
Use the CLI to register secret keys (values are set on the FuseBase website):
fusebase secret create --app <appId> --secret "KEY:description" [--secret ...]
appId — get it from fusebase.json (apps[].id); --feature is accepted as a deprecated alias for --app--secret is KEY or KEY:human-readable description--secret flags to create several secrets at onceExamples:
# Single secret
fusebase secret create --app abc123 --secret "OPENAI_API_KEY:OpenAI API key"
# Multiple secrets at once
fusebase secret create --app abc123 \
--secret "STRIPE_SECRET_KEY:Stripe secret key" \
--secret "DB_PASSWORD:Database connection password" \
--secret "WEBHOOK_SECRET:Webhook signing secret"
After running, open the printed URL and fill in the secret values.
Secrets are injected as environment variables into the app backend process. Read them via process.env:
// backend/src/index.ts or any backend file
const apiKey = process.env.OPENAI_API_KEY
if (!apiKey) {
throw new Error('OPENAI_API_KEY is not set')
}
Validate required secrets at backend startup so the backend fails fast with a clear error rather than failing silently on the first request:
// backend/src/config.ts
function requireEnv(key: string): string {
const value = process.env[key]
if (!value) throw new Error(`Missing required environment variable: ${key}`)
return value
}
export const config = {
openaiApiKey: requireEnv('OPENAI_API_KEY'),
stripeSecretKey: requireEnv('STRIPE_SECRET_KEY'),
}
fusebase dev start downloads secrets from Fusebase and injects them into the backend process as environment variables — the exact same secrets used in production. There is no need for a .env file or the dotenv package.
backend/.env file for secretsdotenv as a dependencyimport 'dotenv/config' in backend codefusebase secret create to register secrets, set values via the printed URL, and they will be available via process.env in both dev and productionSecrets are read-only at runtime — the backend cannot update secret values programmatically. They are set via the CLI or the Fusebase web UI.
Secrets (env vars) are best for shared, deploy-time credentials (API keys, service-account tokens). They are not suitable for per-user or dynamically obtained tokens because they cannot be written at runtime and the backend is stateless (no filesystem, no in-memory persistence across restarts).
For per-user credentials obtained at runtime (e.g. OAuth refresh tokens from a callback), use httpOnly cookies instead — see skill app-backend, "Stateless Backend" section. The cookie is sent by the browser on every request; the backend reads it and stays stateless. The env-var secret can serve as a fallback.
fusebase secret create run with all required keys and descriptionsbackend/.env file — secrets are injected by fusebase dev start automaticallydotenv dependency in backend codeGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub fusebase-dev/fusebase-flow --plugin fusebase-flow