# Stackbone agent manifest. Schema: stackbone.ai/v1.# Run `stackbone docs agent-yaml` for the full reference.
apiVersion: stackbone.ai/v1name: starter-ragruntime: engine: node entry: src/index.tsdatabase: schema: ./src/schema.ts migrations: ./.stackbone/migrationsdev: autoMigrate: falserag: embeddingModel: openai/text-embedding-3-small autoMigrate: trueDeclare what your agent needs. We provision it per install.
You declare two blocks — a database and a retrieval index. Every agent also gets a full data plane: storage, a model key, queues and tracing. At install the control plane materializes all of it and injects the credentials. The creator never hardcodes a secret.
Two blocks are real keys in the strict agent.yaml schema — declaring them gates the resource they bind to. The rest of the data plane is provisioned for every agent whether you name it or not.
- database:Dedicated Neon Postgres
relational + pgvector + tsvector + KV + _queue_jobs
- DATABASE_URL
- rag:pgvector index on the same Neon
embeddingModel from the manifest
no separate credential — rides DATABASE_URL
- Object storageprovisioned by defaultR2 bucket scoped to the agent
S3-compatible blob storage, no egress fees
- AWS_ACCESS_KEY_ID
- AWS_SECRET_ACCESS_KEY
- S3_ENDPOINT
- Model accessprovisioned by defaultOpenRouter sub-key · monthly limit
openai SDK with a base-URL override
- OPENROUTER_API_KEY
- OPENROUTER_BASE_URL
- Cross-container pushprovisioned by defaultQStash publisher + HMAC key rotation
pay-per-message, HTTP-native
- QSTASH_TOKEN
- QSTASH_CURRENT_SIGNING_KEY
- QSTASH_NEXT_SIGNING_KEY
- Observabilityprovisioned by defaultOpenTelemetry export
OTLP traces, metrics and logs
- OTEL_EXPORTER_OTLP_ENDPOINT
- OTEL_RESOURCE_ATTRIBUTES
advanced document parsing, pay-per-page
- LLAMA_PARSE_API_KEY
The saga writes the credentials straight into the agent's environment. Here is what printenv shows — every value masked.
- events / triggers
- pricing
- metadata
The shipped stackbone.ai/v1 manifest is reduced and strict; these are declared elsewhere today and land in the manifest as it grows (triggers, secrets, egress). Shown here as pending — never as live YAML.
Declare it once. We provision every install.