v0.1.0
Gate runs a pull request's preview build inside a hardened sandbox, hands the verified preview URL to a critique service you supply, and publishes that service's design review back to GitHub as one sticky comment plus a Check Run. It is the GitHub-facing half of a two-part system: it judges and reports, it never edits code, and it never requests contents: write.
This is the first tagged release. Everything below was run against this tag on macOS 15.6, Node 24.14.0, pnpm 10.34.3.
What works today
From a clean clone, with no credentials, no API keys and no network:
- The sandbox supervisor (
packages/action/src/local-serve.ts). Process-group teardown rather than process teardown, a default-deny environment allowlist, hardulimitcaps, and loopback-only readiness probing that refuses an off-loopback redirect instead of following it.pnpm demoruns it against a fixture that forks a worker which trapsSIGTERMand refuses to die, so you watch the containment happen. This part stands alone and is worth reading even if you never use the rest of Gate. - Review delivery. Sticky-comment upsert, Check Run mapping, and screenshot annotation.
pnpm demo:reviewreplays a recorded critique through the real delivery path and writes the exact comment, Check Run payload and annotated PNGs a pull request would have received. - Action path orchestration (
runAction), covered end to end against a mock engine. - The engine client: async job protocol, HMAC signing, schema-version and Zod checks, and fail-closed degradation. A drifted or malformed result publishes nothing rather than a comment full of nulls.
- Preview login sealing (
gate auth), offline against a bundled fixture. - The App path (webhooks, BullMQ queue with supersession, Postgres with row-level tenant isolation tested against a non-superuser role), tested against PGlite and in-memory fakes.
573 tests across 92 files, with no live network anywhere in the suite.
What does not work yet
Read this part before wiring Gate into anything.
- Half the system is not in this repository. Screenshot capture and the vision model sit behind the HTTP contract in
packages/types, and no implementation of that contract ships here. With no reachable critique service configured, every review ends in a neutral Check Run saying exactly that, and nothing else is published. Writing that service is roadmap item 1, and it is the biggest single unlock. - The Action path constrains hostile pull request code; it does not sandbox it. The
ulimitcaps, environment allowlist, redirect refusal and fork gating are real mitigations. The aggregate cgroup-v2 caps that would close the gap are roadmap item 6. Read the threat model in the README before running this on a repository that accepts fork pull requests, and never onpull_request_targetwith repository secrets in scope. - The resource cap is Linux-only.
ulimit -vdoes not apply on macOS, so the demo honestly reportsapplied nothere.ulimit -udoes not exist in dash, so the capped command runs under/bin/bashwhen it is present. - Windows is not supported. The supervisor relies on POSIX process groups.
uses: apatureai/gate@v0.1.0does not resolve as a Marketplace action yet. The Action is a Docker action defined byaction.ymlandDockerfile.action; publishing it is roadmap item 8.- Nothing is published to npm. All packages are
private: true. Clone and build. - Billing has never processed a real charge. The Stripe plumbing and tier limits are unit-tested against fakes.
- Dependency advisories are open.
pnpm auditat the root reports 7 (1 moderate, 6 high) andapps/dashboardreports 4 high. The exact packages and which reach runtime are listed in roadmap item 5. Re-audit before deploying. - Baseline before/after comparison is built but unwired.
packages/delivery/src/baseline.tsis tested; nothing on the review path calls it.
Quickstart
Needs Node 24 or newer and pnpm 10.34.3. No credentials.
git clone https://github.com/apatureai/gate.git
cd gate
git checkout v0.1.0
pnpm install --frozen-lockfile
pnpm demo # the sandbox supervisor, live, against a hostile fixture app
pnpm demo:review # a full design review comment, from a recorded critique, written to ./outpnpm demo succeeds when the last line reads PASS, the teardown census ends in 0 left with orphans: 0, and the environment section reports leaked none. On a fresh clone you will see exactly eight gate bin warnings during install; they are explained in the README and disappear after pnpm build.
pnpm demo:review succeeds when four files land in out/, including out/review-comment.md and out/annotated-f_001.png with a red box drawn around the off-palette call to action.
Verified at this tag:
pnpm build tsc -b, clean, exit 0
pnpm typecheck tsc -b, exit 0
pnpm lint eslint . --max-warnings=0, exit 0
pnpm test Test Files 92 passed (92)
Tests 573 passed (573)
The README has the full quickstart, the threat model, the critique service contract, the configuration reference, and the roadmap. Contributions are welcome; the roadmap is the list of things most worth doing.
MIT licensed.