Fri 18 Sep · 17:00 CEST · onlineCommunity Town Hall: the roadmap, the three colours, and a live provisioning demoAgenda and registration →
Open-source deployment packages

Complex deployments, declared in one file.

Colors packages OpenTofu and Ansible into Package Skills: reproducible multi-machine deployments a coding agent can operate and your team can read. Infrastructure stays in your cloud account, and credentials stay local.

Installation
npx skills add getcolors/langfuse
Try Langfuse: six Vultr machines in one VPC — a Neon storage tier, Redis, three ClickHouse replicas with Keeper, and the application host — from one desired-state file.
# Excerpt: the real colors.yml behind langfuse-vultr
profile: langfuse-vultr
workdir: .colors

provider-compute: vultr
provider-dns: cloudflare
provider-backend: r2
compute-prevent-destroy: true

langfuse-host: langfuse.bigconfig.online
clickhouse-version: 26.3.29.7
clickhouse-nodes: 3
neon-pg-version: 17

vultr-region: ams
vultr-vpc-subnet: 10.50.0.0/24
vultr-plan-neon: vc2-4c-8gb
vultr-plan-redis: vc2-1c-2gb
vultr-plan-clickhouse: vc2-4c-8gb
vultr-plan-app: vc2-4c-8gb
vultr-http-sources: cloudflare

langfuse-postgres-backup-oncalendar: "*-*-* 00/6:00:00"
langfuse-backup-retention-days: 7
Real-life example

The excerpt above is not a mock-up: it is the desired state of a real Langfuse deployment. From a Vultr account, a Cloudflare zone and two R2 buckets, the Langfuse Package Skill creates a VPC, a Neon storage tier for Postgres, a Redis host, three ClickHouse replicas with their own Keeper quorum, and the application host behind Cloudflare — and then proves the topology works before it reports success.

The langfuse-vultr topologyOne Vultr VPC holding four firewall groups: an application host running langfuse-web, langfuse-worker and Caddy; a Redis host; three ClickHouse replicas each with a Keeper; and a Neon storage host running the storage broker, pageserver, safekeeper and compute. Cloudflare reaches only the app host on port 443. The app host reaches Redis on 6379, ClickHouse on 8123 and 9000, and Neon on 55433. The replicas talk to each other on 9009, 9181 and 9234. Cloudflare R2 holds raw events and media, Neon layers and WAL, and the backups.VPC 10.50.0.0/24 · amsCloudflareproxied DNS:443APP · vc2-4c-8gblangfuse-web · langfuse-workercaddy · TLS from Let’s EncryptREDIS · vc2-1c-2gbredis 7.2queues · cache:6379CLICKHOUSE · 3 × vc2-4c-8gbnode 0+ keepernode 1+ keepernode 2+ keeper↔ :9009 · :9181 keeper · :9234 raft:8123 · :9000NEON · vc2-4c-8gbpostgres 17broker · pageserversafekeeper · computelayers + WAL → R2:55433Cloudflare R2raw events & media · Neon layers & WAL · Postgres, ClickHouse and media backups
langfuse-vultr — what the file above becomes
  • Provisions the VPC, six instances and four role-scoped firewall groups with OpenTofu
  • Converges the storage tier, the three replicas, Redis and the app host with Ansible, in dependency order
  • Generates every internal secret on the machine that owns it; the operator holds three
  • Reads a trace back from node 0 and the last replica, finds the raw event in R2, then rehearses a restore

There is no Colors control plane on any of the six machines. When the workflow finishes, the instances, the state and the backups are yours; describe and rehearse run against them from your laptop.

Shapes

Every Package Skill is built on the same SDK and walks the same build, dry-run, create and guarded delete. The shape it converges is the package’s to decide.

6 machines · 4 firewall groups · AWS / Vultr

Langfuse

LLM observability with a Neon storage tier, Redis, three ClickHouse replicas with Keeper, and the app host, plus a restore rehearsal.

5 machines · 3 safekeepers · AWS

Neon Multi-Node

Separate PostgreSQL compute and pageserver roles, a three-member WAL quorum, native PostgreSQL TLS and managed S3 storage.

3 replicas + Keeper · Metabase host · AWS / Hetzner

ClickHouse

A replicated ClickHouse cluster with a three-member Keeper quorum and a separate Metabase and PostgreSQL server.

3 nodes · Patroni + etcd · colors-compute

PostgreSQL HA

PostgreSQL 17 with etcd quorum consensus, Patroni leader election, HAProxy routing and continuous WAL backups to R2.

3 nodes · Group Replication · DigitalOcean

MySQL HA

MySQL 8.4 Group Replication with a floating-IP primary and one-minute binary-log archiving to R2.

3 nodes · R2 / S3 / GCS · Vultr / AWS / Google

AutoMQ

Kafka 3.9.1 protocol with both KRaft roles on every node and object storage in R2, S3 or GCS.

2 nodes · kubeadm + Flux · DigitalOcean

K8s

A kubeadm cluster in a deployment-owned VPC with pinned Flannel, cloud-controller and Flux releases reconciling a public repository.

VKE cluster · 2-pod application · Vultr

Agent Network K8s

A keyless, policy-gated LLM endpoint behind a TCP load balancer and a network-isolated agent pod running headless Claude Code.

DOKS cluster · in-cluster build · DigitalOcean

Agent Network DOKS

The same two-pod demo on DigitalOcean Kubernetes, with a kaniko build pushed to a created-or-adopted container registry.

Every deployment uses the same explicit lifecycle, whether it converges one host or six. The first two commands are safe on a fresh checkout with no provider credentials.

./green build

Render locally

Validate colors.yml and generate the OpenTofu, Ansible, and supporting files for every machine under .colors/.

./green create --dry-run

Walk the complete plan

Traverse the deployment graph while skipping every provider call and remote side effect.

./green create

Provision and verify

Converge the declared infrastructure, configure the hosts in dependency order, and run the package’s acceptance gates.

You can use any of them. Colors is useful when a team needs a whole topology stood up, proven and torn down on demand, not one layer of it.

Versus an OpenTofu module

The module stops at the instance

A Package Skill carries host configuration, secret generation on the machine that owns each secret, ordering across machines, and the acceptance gates that prove the topology works — behind one lifecycle.

Versus a Helm chart or Compose file

The cluster has to exist first

Charts assume a cluster and Compose assumes one host. Colors provisions the machines, the network between them and a firewall per role, then converges each tier in dependency order.

Versus a managed service

No control plane, no seat bill

Colors provisions in your cloud account and exits. The machines, the state and the backups stay yours, and delete is guarded by a committed flag.

Visible automation

OpenTofu and Ansible stay inspectable

build renders the files for every machine locally before create is allowed to contact a provider or a host.

Local credentials

Secrets never belong in `colors.yml`

Credentials arrive through local COLORS_PAR_* environment variables and are not rendered into generated files.

Deterministic execution

No model provisions your infrastructure

A coding agent can install and operate a Package Skill, but the launcher itself is ordinary deterministic code and makes no LLM calls. Three implementations render byte-identical output, checked on every commit.

Honest fit

Not for every team

If your platform team already maintains the IaC for every tier, or one host with a dashboard is all you need, Colors may add no value.

Colors is an SDK made of three interchangeable libraries for building Package Skills. Pick the runtime your team already uses — the guarantees don't change: dry-run boundaries, secret indirection, identical desired-state semantics.

red

TypeScript / Bun

Build Package Skills with a fast TypeScript/Bun runtime.

green

Clojure / Babashka

Build Package Skills with Clojure over Babashka.

blue

Python / uv

Build Package Skills with Python, managed by uv.

A Package Skill provisions infrastructure; a Context Skill remembers what a verified build learned. Each kind can be created with your agent, and each can be submitted to the Skills Catalog — four workflows that pair up into a matrix.

Agent Skill

Create Package Skill gives a coding agent the workflow for building a new Colors Package Skill and a deployment that uses it — from requirements and credential boundaries through implementation, safe dry runs, and an authorized production deployment.

Installation
npx skills add "https://github.com/getcolors/skills" --skill "create-package-skill"
This is an Agent Skill, not a Package Skill. npx skills use gives it to your agent for the next request without installing it into a project.
Phase 1

Define

Agree on names, behavior, acceptance criteria, deployment target, credentials, cost, and authorization before touching files.

Phase 2

Scaffold safely

Create only non-secret desired state and credential placeholders, then stop for review. Secrets never enter chat or tracked files.

Phase 3

Build and deploy

Implement autonomously, test every layer, use real SHA pins, preserve safety guards, and deploy only within explicit authorization.

Agent Skill

Submit Package Skill gives a coding agent the workflow for validating an existing Colors Package Skill, adding its catalog recipe, and opening an authorized pull request for curated discovery on getcolors.ai.

Installation
npx skills add "https://github.com/getcolors/skills" --skill "submit-package-skill"
This is an Agent Skill, not a Package Skill. The Catalog adds discoverability only: GitHub remains the source, and npx skills remains the installer.
Phase 1

Validate

Inspect every SKILL.md and verify the Colors runtime, desired state, dry-run boundary, credential indirection, and lifecycle DAGs.

Phase 2

Add the recipe

Create one validated recipe for the product, grouping interchangeable runtime variants and infrastructure-oriented search keywords.

Phase 3

Open the PR

Run catalog validation and the site build, then create a branch, commit, push, fork, or pull request only with explicit authorization.

Agent Skill

Create Context Skill gives a coding agent the workflow for distilling a completed, verified build into a Context Skill conforming to the Context Skill Standard — symptom-first routing, provenance-labelled claims, pinned versions, a failure catalogue, and evals, with no copies of the companion package's files.

Installation
npx skills add "https://github.com/getcolors/skills" --skill "create-context-skill"
This is an Agent Skill, not a Package Skill. Its input is a completed build whose acceptance gates passed — without one, there is nothing to distill.
Phase 1

Harvest

Collect verbatim failures, review dispositions, deviations from documentation, and the exact pinned versions while the build's session still holds them.

Phase 2

Structure and route

Write the why into the body and the reference material into references, keep every claim provenance-labelled, and copy no file the companion package owns.

Phase 3

Prove and hand off

Write user-in-trouble evals, pass skills-ref validate, and stop: committing, pushing, and the catalog pull request each need explicit authorization.

Agent Skill

Submit Context Skill gives a coding agent the workflow for validating a Context Skill — knowledge distilled from a verified build — against the Context Skill Standard, adding its catalog recipe, and opening an authorized pull request for curated discovery on getcolors.ai.

Installation
npx skills add "https://github.com/getcolors/skills" --skill "submit-context-skill"
This is an Agent Skill, not a Package Skill. A Context Skill carries symptom-routed traps and acceptance doctrine; the Catalog adds discoverability only, and npx skills use remains how an agent loads it.
Phase 1

Validate

Read the skill and its references, run skills-ref validate, and verify symptom routing, provenance, pins, the failure catalogue, and evals.

Phase 2

Add the recipe

Create one type: context recipe naming the skill's repository, symptom-oriented search keywords, and the companion Package Skill it documents.

Phase 3

Open the PR

Run catalog validation and the site build, then create a branch, commit, push, fork, or pull request only with explicit authorization.

Browse the PR-curated Skills Catalog by platform, provider, or runtime.

View the Catalog