Manifest Specification
Fluffy manifests declare your application components, dependencies, and environment topology. Every resource declared in a manifest is strictly typed and resolved at compile time.
#Workspace Manifest Structure
Workspaces are defined in fluffy-chainsaw.workspace.yaml:
1apiVersion: fluffy-chainsaw.dev/v12name: my-project3children:4 - dir: services/api5 - dir: web/portal67environments:8 local:9 deployment:10 identity: local-dev-id11 provider: application12 providers:13 application:14 type: gcp15 project: fluffy-local16 region: europe-west117 prod:18 deployment:19 identity: ad6b40e606b56fadb804db3bdf8da37720 provider: application21 providers:22 application:23 type: gcp24 project: my-prod-project25 region: europe-west1#Runtimes and Entrypoints
Each service defines its runtime characteristics and bound capabilities:
1runtimes:2 api:3 artifact: runtimes/api4 port: 80805 capabilities:6 databaseServers:7 primary:8 databases:9 - { name: main-db, actions: [read, write] }10 topics:11 - { name: orders, actions: [produce] }12 secrets:13 - { name: stripe-api-key, actions: [read] }#Databases and Storage
Declare stateful infrastructure requirements declaratively:
1databaseServers:2 primary:3 databases:4 main-db: {}5 analytics-db: {}67buckets:8 types:9 uploads:10 provider: application11 addons:12 gcp:13 storageClass: STANDARD14 versioning: true#Capability Contracts & Actions
Fluffy enforces granular permissions on every bound capability:
| Capability | Supported Actions | Generated SDK Method |
|---|---|---|
| Database | read, write, admin | db.GetConnection(), db.Pool() |
| Topic | produce, consume | topic.Publish(ctx, event) |
| Secret | read | secrets.GetSecret(ctx, name) |
| Bucket | read, write, delete | storage.SignedUploadUrl(ctx, key) |