Skip to content

Sigil

Define, orchestrate, and simulate real application stacks locally — built for coding agents.
import { Environment, Postgres, Service, APIInterface } from "sigil";
const env = new Environment("my-app");
const db = env.add(
new Postgres("db", {
database: "myapp",
initSql: "./schema.sql",
seedSql: "./seed.sql",
})
);
env.add(
new Service("api", {
command: ["node", "server.js"],
env: { DATABASE_URL: db.connectionString },
readyCheck: { url: "http://localhost:3000/health" },
}, [new APIInterface(3000)])
);
export default env;

  1. Define your stack in a sigil.config.ts — databases, services, frontends

  2. Run sigil up — Sigil starts everything in dependency order, wires connection strings, and waits for readiness

  3. Develop against real infrastructure — Docker Postgres, live processes, actual ports

  4. Tear down with sigil down or Ctrl+C — clean shutdown in reverse order


Declarative

TypeScript config, not YAML. Full type safety, IDE autocomplete, and the ability to compute values like connection strings at definition time.

Docker-native

Databases run in real Docker containers. Services run as native processes with Bun.spawn. No emulation, no mocks — real infrastructure.

Agent-first

Coding agents need realistic stacks to test against. Sigil gives them Postgres with real data, APIs with health checks, and full-stack environments — not toy sandboxes.

LLM-friendly

These docs ship /llms.txt and /llms-full.txt for single-fetch ingestion. Your agent can read the entire Sigil API in one request.