[
StrictOps
control plane
How It WorksPricingSecurityDocs
Log InGet Started
StrictOps Docs

strictops.yml Reference

Complete reference for the StrictOps configuration file

strictops.yml Reference

The strictops.yml file is the primary configuration file for StrictOps deployments. Place this file in the root of your repository.

Schema

version: 1                    # Required: Configuration version
project: my-app               # Optional: Project slug
services:                     # Required: Service definitions
  my-service:
    type: web                 # default: web (can be omitted)
    profile: small            # default: small (can be omitted)
    replicas: 1               # default: 1 (can be omitted)
    healthcheck_path: /health # default: /health (can be omitted)
    port: 3000                # default: auto-assigned from 3000
deploy:                       # Optional: Deployment settings
  capacity: serverless        # default: serverless (can be omitted)
  profile: small              # default: small (can be omitted)
  replicas: 1                 # default: 1 (can be omitted)
  healthcheck_path: /health   # default: /health (can be omitted)
  environments:               # default: [dev, prod] (can be omitted)
    - dev
    - prod
  production:                 # default: [prod, production] filtered to environments list
    - prod
domain:                       # Optional: Custom domain
  name: example.com
database:                     # Optional: Database settings
  enabled: true               # default: true (can be omitted)
storage:                      # Optional: S3 storage buckets
  uploads:
    type: s3
queues:                       # Optional: SQS queues
  jobs:
    type: standard
cache:                        # Optional: Redis caches
  sessions:
    type: redis
tags:                         # Optional: Resource tags
  environment: production
monitoring:                   # Optional: Monitoring and scaling
  enabled: true               # default: true (can be omitted)
  alerts:
    cpu_threshold: 80         # default: 80 (can be omitted)
    memory_threshold: 80      # default: 80 (can be omitted)
    error_5xx_threshold: 10   # default: 10 (can be omitted)
    response_time_threshold: 5 # default: 5 (can be omitted)
  scaling:
    mode: assisted            # default: assisted (can be omitted)
    min_tasks: 1              # default: 1 (can be omitted)
    max_tasks: 3              # default: 3 (can be omitted)

Top-Level Fields

version

Required | Type: number | Value: 1

The configuration version. Currently only version 1 is supported.

version: 1

project

Optional | Type: string | Pattern: ^[a-z0-9-]+$

A slug identifying the project. Lowercase letters, numbers, and hyphens only.

project: my-app

services

Required | Type: object

Defines the services to deploy. At least one service is required.

Service names must match the pattern ^[a-z0-9-]+$ (lowercase letters, numbers, and hyphens).

services:
  frontend:
    type: web
  backend:
    type: api

See Service Configuration for details.

deploy

Optional | Type: object

Global deployment settings that apply to all services unless overridden.

FieldTypeDescriptionDefault
capacitystringDeployment capacity modeserverless
profilestringResource profile: small, medium, largesmall
replicasintegerNumber of replicas (1-3)1
healthcheck_pathstringHealth check endpoint path/health
environmentsarrayList of environment names to deploy["dev", "prod"]
productionarrayEnvironment names marked as production["prod", "production"] (filtered to those in environments)
deploy:
  capacity: serverless
  profile: medium
  replicas: 2
  healthcheck_path: /health
  environments:
    - staging
    - production
  production:
    - production

domain

Optional | Type: object

Custom domain configuration.

FieldTypeDescription
namestringDomain name (e.g., app.example.com)
domain:
  name: app.example.com

database

Optional | Type: object

Database configuration.

FieldTypeDescriptionDefault
enabledbooleanEnable managed databasetrue

When enabled, API and worker services are automatically linked to the database.

database:
  enabled: true

storage

Optional | Type: object

Defines S3 storage buckets for the project. Each key is a resource name (^[a-z][a-z0-9-]*$), and the value specifies the type.

FieldTypeDescription
typestringStorage type (currently only s3)
storage:
  uploads:
    type: s3
  assets:
    type: s3

Services reference storage resources via the links field.

queues

Optional | Type: object

Defines SQS queues for the project. Each key is a resource name (^[a-z][a-z0-9-]*$).

FieldTypeDescription
typestringQueue type: standard or fifo
queues:
  jobs:
    type: standard
  orders:
    type: fifo

Services reference queues via the links field.

cache

Optional | Type: object

Defines Redis caches for the project. Each key is a resource name (^[a-z][a-z0-9-]*$).

FieldTypeDescription
typestringCache type (currently only redis)
cache:
  sessions:
    type: redis

Services reference caches via the links field.

tags

Optional | Type: object

Custom resource tags applied to all AWS resources.

Tag keys must match ^[A-Za-z0-9_.-]+$.

tags:
  team: platform
  cost-center: engineering

monitoring

Optional | Type: object

Monitoring, alerting, and auto-scaling configuration.

FieldTypeDescriptionDefault
enabledbooleanEnable monitoringtrue
alertsobjectAlert thresholdsSee below
scalingobjectAuto-scaling settingsSee below

alerts

FieldTypeDescriptionDefault
cpu_thresholdnumber (1-100)CPU utilization alert threshold (%)80
memory_thresholdnumber (1-100)Memory utilization alert threshold (%)80
error_5xx_thresholdnumber5xx error count alert threshold10
response_time_thresholdnumberResponse time alert threshold (seconds)5

scaling

FieldTypeDescriptionDefault
modestringScaling mode: manual, assisted, automaticassisted
min_tasksinteger (1-10)Minimum number of tasks1
max_tasksinteger (1-10)Maximum number of tasks3
monitoring:
  enabled: true
  alerts:
    cpu_threshold: 90
    memory_threshold: 85
    error_5xx_threshold: 5
    response_time_threshold: 3
  scaling:
    mode: automatic
    min_tasks: 2
    max_tasks: 6

Service Configuration

Each service in the services object can have the following fields:

type

Optional | Type: string | Values: web, api, worker | Default: web

The type of service, which determines routing and exposure:

  • web - Frontend web application (public, HTTP traffic)
  • api - Backend API service (public, HTTP traffic)
  • worker - Background worker (no public exposure)
services:
  frontend:
    type: web                 # default, can be omitted

profile

Optional | Type: string | Values: small, medium, large

Resource allocation profile for the service. Overrides the deploy.profile default.

ProfilevCPUMemory
small0.25512 MB
medium0.51 GB
large12 GB
services:
  api:
    type: api
    profile: medium

replicas

Optional | Type: integer | Range: 1-3

Number of container replicas for the service. Overrides the deploy.replicas default.

services:
  api:
    type: api
    replicas: 2

healthcheck_path

Optional | Type: string | Pattern: ^/.*

Health check endpoint path. Must start with /. Overrides the deploy.healthcheck_path default.

services:
  api:
    type: api
    healthcheck_path: /api/health

port

Optional | Type: integer | Range: 1-65535

The port the service listens on. If not specified, ports are assigned automatically starting from 3000.

services:
  api:
    type: api
    port: 3000

Optional | Type: array

List of other services or resources this service depends on. Link targets can be:

  • Service names — enables service-to-service discovery
  • Storage names — links the service to an S3 bucket defined in storage
  • Queue names — links the service to an SQS queue defined in queues
  • Cache names — links the service to a Redis cache defined in cache
services:
  api:
    type: api
    links:
      - worker
      - uploads
      - jobs
      - sessions
storage:
  uploads:
    type: s3
queues:
  jobs:
    type: standard
cache:
  sessions:
    type: redis

Resource names cannot collide with each other or with service names.

env

Optional | Type: object

Environment variables for the service. Keys must match ^[A-Z0-9_]+$.

services:
  api:
    type: api
    env:
      NODE_ENV: production
      LOG_LEVEL: info

secrets

Optional | Type: array

List of secret names to inject as environment variables. Secret values are stored securely in AWS Secrets Manager.

services:
  api:
    type: api
    secrets:
      - DATABASE_URL
      - API_KEY

environments

Optional | Type: object

Per-environment overrides for env and secrets.

services:
  api:
    type: api
    env:
      LOG_LEVEL: info
    environments:
      production:
        env:
          LOG_LEVEL: warn
        secrets:
          - PRODUCTION_API_KEY
      staging:
        env:
          LOG_LEVEL: debug

Complete Examples

Web Application

version: 1
services:
  web:
    type: web                 # default, can be omitted
    profile: small            # default, can be omitted
    replicas: 2
    healthcheck_path: /api/health
domain:
  name: myapp.example.com

Full-Stack Application

version: 1
deploy:
  capacity: serverless        # default, can be omitted
  profile: medium
  replicas: 2
  healthcheck_path: /health   # default, can be omitted
  environments:
    - staging
    - production
  production:
    - production
services:
  frontend:
    type: web                 # default, can be omitted
    links:
      - api
  api:
    type: api
    healthcheck_path: /health # default, can be omitted
    env:
      NODE_ENV: production
    secrets:
      - DATABASE_URL
      - JWT_SECRET
    environments:
      staging:
        env:
          LOG_LEVEL: debug
      production:
        env:
          LOG_LEVEL: warn
database:
  enabled: true               # default, can be omitted
domain:
  name: app.example.com
tags:
  team: product
  environment: production

API with Resources

version: 1
services:
  api:
    type: api
    profile: large
    port: 8000
    healthcheck_path: /health
    links:
      - uploads
      - jobs
      - sessions
    env:
      WORKERS: "4"
    secrets:
      - DATABASE_URL
database:
  enabled: true
storage:
  uploads:
    type: s3
queues:
  jobs:
    type: standard
cache:
  sessions:
    type: redis
monitoring:
  alerts:
    cpu_threshold: 90
  scaling:
    mode: automatic
    min_tasks: 2
    max_tasks: 5