Skip to content

Configuration

All Orbit configuration lives in a single orbit.yaml file at the root of your project. This file is the only Orbit artifact committed to version control — everything else (generated Terraform, state, env files) lives in .orbit/ and is gitignored.

apiVersion: astromesh/v1
kind: OrbitDeployment
metadata:
name: my-astromesh # Deployment name (used in resource naming)
environment: production # dev | staging | production
spec:
provider:
name: gcp # Cloud provider: gcp (aws, azure in roadmap)
project: my-gcp-project-id # GCP project ID
region: us-central1 # GCP region
compute:
runtime: # Astromesh core runtime (agent execution)
min_instances: 1 # Minimum running instances (0 = scale to zero)
max_instances: 5 # Maximum instances under load
cpu: "2" # vCPUs per instance
memory: "2Gi" # Memory per instance
database:
tier: db-f1-micro # Cloud SQL machine tier
version: POSTGRES_16 # PostgreSQL version
storage_gb: 10 # Storage allocation in GB
high_availability: false # Enable HA replica (doubles cost)
cache:
tier: basic # basic (no failover) | standard (HA)
memory_gb: 1 # Redis memory allocation
secrets:
provider_keys: true # Create empty Secret Manager entries for LLM API keys
jwt_secret: true # Auto-generate JWT secret on first deploy
images:
runtime: fulfarodev/astromesh:latest
FieldTypeRequiredDescription
namestringYesDeployment name. Used as a prefix for all cloud resources. Must be lowercase alphanumeric with hyphens.
environmentstringYesOne of dev, staging, production. Affects naming and default behaviors.
FieldTypeRequiredDescription
namestringYesCloud provider identifier. Currently only gcp is supported.
projectstringYes (GCP)GCP project ID where resources will be created.
regionstringYesCloud region for all resources. Example: us-central1, europe-west1.

The runtime compute service accepts:

FieldTypeDefaultDescription
min_instancesint1Minimum running instances. Set to 0 to enable scale-to-zero.
max_instancesint5Maximum instances Cloud Run will scale to under load.
cpustring"1"vCPUs per instance. Valid values: "1", "2", "4".
memorystring"1Gi"Memory per instance. Examples: "512Mi", "1Gi", "2Gi", "4Gi".
FieldTypeDefaultDescription
tierstringdb-f1-microCloud SQL machine tier. See GCP pricing.
versionstringPOSTGRES_16PostgreSQL version. Supported: POSTGRES_15, POSTGRES_16.
storage_gbint10Disk storage in GB. Auto-grows when needed.
high_availabilityboolfalseEnable regional HA with automatic failover. Roughly doubles the database cost.
FieldTypeDefaultDescription
tierstringbasicbasic for single instance, standard for HA with failover.
memory_gbint1Redis memory in GB. Minimum 1, maximum 300.
FieldTypeDefaultDescription
provider_keysbooltrueCreates empty Secret Manager entries for LLM provider API keys. You populate them via GCP Console or gcloud.
jwt_secretbooltrueAuto-generates a random JWT secret on first deploy. Subsequent deploys reuse the existing value.
FieldTypeDefaultDescription
runtimestringfulfarodev/astromesh:latestContainer image for the Astromesh runtime.

Optional GCS resources for RAG documents and custom container images. Both blocks default to enabled: true.

spec:
storage:
rag_documents:
enabled: true # provision the GCS RAG documents bucket
versioning: true # keep object versions
artifact_registry:
enabled: true # provision a Docker Artifact Registry repo
repository: "" # empty -> "<metadata.name>-images"
FieldTypeDefaultDescription
rag_documents.enabledbooltrueProvision a GCS bucket for RAG source documents. The runtime receives its name as ASTROMESH_RAG_BUCKET.
rag_documents.versioningbooltrueKeep object versions on the RAG documents bucket.
artifact_registry.enabledbooltrueProvision a Docker Artifact Registry repository for custom images.
artifact_registry.repositorystring""Repository name. Empty defaults to <metadata.name>-images.

Orbit does not provision a separate vector database for RAG — pgvector runs on the Cloud SQL instance Orbit already deploys. See GCP Provider for details.

Optional. The Cloud Monitoring dashboard is on by default; Cloud Trace is opt-in because its collector sidecar adds a container to every Cloud Run instance.

spec:
observability:
dashboard: true # Cloud Monitoring dashboard (default: true)
tracing:
enabled: false # OTel Collector sidecar -> Cloud Trace (default: false)
collector_image: "otel/opentelemetry-collector-contrib:0.115.1"
FieldTypeDefaultDescription
dashboardbooltrueProvision a Cloud Monitoring dashboard charting Cloud Run golden signals (requests, latency, error rate, instance count).
tracing.enabledboolfalseAdd an OpenTelemetry Collector sidecar to the runtime Cloud Run service and set ASTROMESH_OTLP_ENABLED=1 on the runtime container so it exports spans to Cloud Trace.
tracing.collector_imagestringotel/opentelemetry-collector-contrib:0.115.1Container image for the OTel Collector sidecar.

There is no logging field — Cloud Run ships container logs to Cloud Logging automatically. See GCP Provider for how orbit logs reads them.

The orbit init wizard offers two presets that fill in all values automatically. You can also pass --preset to skip the interactive wizard entirely.

Best for development, demos, and small teams.

apiVersion: astromesh/v1
kind: OrbitDeployment
metadata:
name: my-astromesh
environment: dev
spec:
provider:
name: gcp
project: my-project-123
region: us-central1
compute:
runtime:
min_instances: 1
max_instances: 1
cpu: "1"
memory: "1Gi"
database:
tier: db-f1-micro
version: POSTGRES_16
storage_gb: 10
high_availability: false
cache:
tier: basic
memory_gb: 1
secrets:
provider_keys: true
jwt_secret: true
images:
runtime: fulfarodev/astromesh:latest

Best for production workloads with auto-scaling and high availability.

apiVersion: astromesh/v1
kind: OrbitDeployment
metadata:
name: my-astromesh
environment: production
spec:
provider:
name: gcp
project: my-project-123
region: us-central1
compute:
runtime:
min_instances: 1
max_instances: 5
cpu: "2"
memory: "2Gi"
database:
tier: db-g1-small
version: POSTGRES_16
storage_gb: 20
high_availability: true
cache:
tier: standard
memory_gb: 4
secrets:
provider_keys: true
jwt_secret: true
images:
runtime: fulfarodev/astromesh:latest

The metadata.environment field affects resource naming and default behaviors:

EnvironmentNaming PatternNotes
dev{name}-dev-*Suitable for development and testing
staging{name}-staging-*Pre-production validation
production{name}-*Production workloads (no environment suffix)

After running orbit init, your project will have:

your-project/
├── orbit.yaml # Committed to git
└── .orbit/ # Gitignored
├── generated/ # .tf files (regenerated on every plan/apply)
├── orbit.env # Connection variables (written after apply)
└── .terraform/ # Terraform cache and plugins

spec.storage (v0.3.0) and spec.observability (v0.4.0) are implemented today — see spec.storage and spec.observability above. The following spec sections are still planned for future Orbit versions and are not yet implemented:

# v0.5.0 — GPU & Inference
# gpu:
# vllm:
# machine_type: g2-standard-4
# v0.6.0 — Enterprise
# custom_domain: agents.mycompany.com