Pre-release  ·  v0.x

CI/CD forged for the
agentic era

PocketCI is a local-first pipeline runtime where pipelines are TypeScript programs, not YAML configs. Built to run on your machine and scale to fleets of AI agents.

Local-first

Runs entirely on your machine with Docker or the native driver. No cloud account, no SaaS dependency, no data leaving your infrastructure.

Agent-ready

Designed from the start for AI agents. Pipelines expose an MCP server, webhooks fire into agentic loops, and the runtime API is scripted, not clicked.

Programmable

Pipelines are TypeScript programs. Loops, conditionals, parallel steps, shared volumes — use the language, not a new DSL. YAML compatibility for Concourse migrations.

A pipeline, unabridged

// A pipeline is an exported async function.
// PocketCI executes it, wires up containers, and collects results.

const pipeline = async () => {
  // 1. wire up a Slack notification backend
  notify.setConfigs({
    "slack-builds": {
      type:     "slack",
      token:    "xoxb-...",
      channels: ["#builds"],
    },
  });

  // 2. clone the repo into a shared volume
  const src = await runtime.createVolume("src");
  await runtime.run({
    name:    "git-clone",
    image:   "alpine/git",
    command: {
      path: "git",
      args: ["clone", "https://github.com/golang/example", "/workspace"],
    },
    volumes: [{ name: src.name, path: "/workspace" }],
  });

  // 3. run tests against the cloned repo
  const test = await runtime.run({
    name:    "run-tests",
    image:   "golang:1.25",
    command: { path: "go", args: ["test", "./..."] },
    volumes: [{ name: src.name, path: "/workspace" }],
  });

  // 4. notify the team once results are in
  notify.updateStatus(test.exitCode === 0 ? "success" : "failure");
  notify.send({
    name:    "slack-builds",
    message: "Build {{ .JobName }} finished: {{ .Status }}",
    async:   true,
  });
};

export { pipeline };

The boiler is lit. The gauges are being calibrated.

PocketCI is pre-v1.0 and actively developed. The core pipeline runtime is solid and used in production workflows, but APIs may shift and some drivers are still experimental. Expect rough edges and fast iteration.

If you're building with AI agents, automating infrastructure, or just tired of YAML sprawl, this is a good time to kick the tyres. Star the repo to follow along, or open an issue if something breaks.