PocketCI is a local-first CI/CD runtime. You write pipelines in JavaScript/TypeScript, and it runs them in containers on your machine -- no hosted service, no YAML gymnastics, no waiting.
Note
PocketCI is under active development. Things may change.
A pipeline is just an exported async function. You call runtime.run() to spin
up containers, pass in commands, and get results back. Here's the gist:
const pipeline = async () => {
const result = await runtime.run({
name: "hello",
image: "alpine",
command: { path: "echo", args: ["Hello from PocketCI!"] },
});
assert.containsString(result.stdout, "Hello from PocketCI!");
};
export { pipeline };That's a real, runnable pipeline. No build configs, no glue code. You have the full expressiveness of TypeScript -- loops, conditionals, error handling, shared volumes -- and it all runs inside containers managed by PocketCI.
If you're coming from Concourse CI, PocketCI also supports YAML pipelines with backward compatibility. See the YAML Pipelines guide for details.
brew tap jtarchie/pocketci https://github.com/jtarchie/pocketci
brew install pocketciOr download a pre-built binary from the releases page.
With Docker running, a single command executes a pipeline:
pocketci runner examples/both/hello-world.tsOr start the server for a web UI and API:
pocketci serverThe CLI reference covers all available commands and options.
Most CI systems are either cloud-hosted black boxes or complex self-hosted installations. PocketCI takes a different approach: your pipelines run locally, the runtime is transparent and programmable, and you can swap orchestration backends (Docker, Kubernetes, Fly.io, and others) without rewriting your pipelines. It stores everything in a single SQLite database.
The full docs live under docs/ and are served at /docs/ when
running the PocketCI server. Topics include the runtime API,
secrets, caching,
driver configuration, and
webhook integrations.
brew bundle # install toolchain
task # build, lint, test -- everythingTake a look at examples/ for real pipelines that run as part of
the test suite. The project uses Go, TypeScript, and
go-task as its build runner.