Gate

io.github.nugehsPublished by GitHub account nugehsv0.3.0Updated Oct 24, 2026

One ship/no-ship verdict from aiglare, bouncer, tieline & repoctx — the unified merge gate.

VerifiedSTDIODesktop onlyDeveloper ToolsSecurity & Monitoring

Overview

AI-generated overview

Runs four nugehs repo checks (aiglare, bouncer, tieline, repoctx) and returns one normalized ship/no-ship verdict to an assistant.

What you can do
  • Get a single unified ship/no-ship verdict for a repository, with optional only/skip/ci/strict options
  • List the four checks gate runs, each with its domain and the question it answers
  • See per-domain statuses normalized to pass, warn, fail, unknown, skipped or error, plus blocking reasons
  • Run the same gate from the CLI, in CI, or from an editor extension
When to use it
Use it when a repo already relies on some or all of the nugehs toolchain and you want an assistant to answer "can this ship?" in one call instead of running four separate tools and reconciling their different result formats.
Requirements
Runs as a local stdio process, started with npx from the npm package @nugehs/gate (Node.js). The four underlying tools are not bundled; each is resolved at runtime from a GATE_ _BIN environment variable, an installed @nugehs package, or a sibling checkout. No authentication is declared.
Before you install
gate executes the four underlying tools against the repository, so it runs third-party code and may have side effects on the checked repo. Unresolved tools are reported as skipped rather than failing, and a run that checks nothing reports NO CHECKS RAN, so a misconfiguration can look like a clean result. Local runs often show merge readiness as warn because review state cannot be verified without a host like GitHub.

Installation

In SourceWeft

  1. Open Gate in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

gate

One ship/no-ship verdict from your whole nugehs toolchain.

[npm] [license: MIT] [node]

[gate demo]

gate runs aiglare, bouncer, tieline and repoctx against a repo and merges their four dialects into one normalized verdict. Each tool already answers a different "can this ship?" question — gate is the place they finally agree on the answer.

npx @nugehs/gate                      # audit the current reponpx @nugehs/gate ./service --ci       # fail the build on a blocking verdictnpx @nugehs/gate --json               # the unified verdict, machine-readable
        ┌──────────────────────────────────────────────┐        │                   gate                         │        │   one config · one verdict · one report        │        └──────────────────────────────────────────────┘            │            │            │            │        aiglare       bouncer      tieline      repoctx       red/amber/    pass/fail/   matched/     PASS/WARN/         green        unknown      drift         FAIL            │            │            │            │            └──── normalize to pass · warn · fail ─────┘                          │                  ✗ FAIL   ⚠ WARN   ✓ PASS

What it reports

  gate · /path/to/repo
  ✗  AI governance    fail      2 red · 1 amber · 13 green · 1 blocking side-effect  ·  Compliance       skipped   not configured (run `bouncer init`)  ·  Contract drift   skipped   not configured (run `tieline init`)  ⚠  Merge readiness  warn      1 of 8 checks need attention
  verdict: FAIL — 1 blocking · 1 warn · 2 skipped

Each tool's native result is normalized onto one status vocabulary:

StatusMeaning
passthe check ran and is clean
warnran, found something worth a look — not blocking
failran, found a blocking problem
unknownran, but couldn't determine — explicitly not a pass
skippednot applicable / not configured for this repo
errorthe tool couldn't be run, or returned garbage

The top-level verdict is the worst across the domains that actually ran (skipped never counts). unknown and error roll up to warn so nothing slips through as a silent pass.

How each dialect maps

ToolNative signal→ gate
aiglarea red surface on a side-effectful sinkfail; any red/amber → warn
bouncera fail finding (missing required control)fail; any unknown control → unknown
tielinedrift > 0 (FE call with no BE route)fail; unverifiable > 0 → warn
repoctxFAIL/BLOCK merge verdictfail; WARN → warn

gate runs aiglare without --ci and derives the blocking verdict itself, so a tool that process.exit()s before flushing its pipe can't truncate the report it feeds us.

A run that checked nothing is not a pass. If every domain is skipped or deselected (e.g. --skip them all, or a typo'd --only), gate reports NO CHECKS RAN (ok:false) and fails under --ci — a misconfiguration can't silently turn the gate green.

On repoctx + local mode. repoctx's merge-readiness gate can only verify review state (approvals, CODEOWNERS, required checks) against a host like GitHub. Run locally it reports those as a WARN, so on a clean local repo gate will often show merge readiness: warn. That's repoctx being honest about what it can't see locally — not a problem with your change.

CLI

gate [path] [options]
  --json            Emit the unified verdict as JSON  --ci              Exit non-zero when the gate fails (blocking by default)  --strict          Treat WARN/UNKNOWN as blocking too  --only <list>     Run only these tools (aiglare,bouncer,tieline,repoctx)  --skip <list>     Skip these tools  -h, --help        Show this help
gate mcp            Start the MCP server (stdio)

By default only a fail verdict blocks under --ci — safe to adopt without drowning a team in warnings. Add --strict when you want warnings to gate too.

Tool resolution

gate doesn't bundle the four tools; it finds each one at runtime. Per tool, first hit wins:

  1. GATE_<TOOL>_BIN environment variable (explicit override)
  2. the installed @nugehs/<tool> package (from node_modules)
  3. a sibling checkout at ../<tool> (local development)

A tool that can't be resolved is reported as skipped, never a hard failure — so gate is safe to run in a repo that only uses some of the toolchain.

In CI

yaml
- run: npx @nugehs/gate . --ci

For a machine-readable record, --json emits the full verdict (schema version, per-domain results, counts, and the blocking reasons) for dashboards or audit evidence.

MCP

gate is also an MCP server, so an agent can ask "can this ship?" in one call — the unified verdict, not four separate tools.

gate mcp                 # stdio JSON-RPC servernpx @nugehs/gate mcp

Tools:

ToolReturns
gate_checkthe unified verdict for a repo (path, optional only/skip/ci/strict)
list_checksthe four checks gate runs, each with its domain and what it answers

Registry manifest: server.json (io.github.nugehs/gate).

Editor extension

The same normalized verdict drives a VS Code / Cursor extension (clients/vscode) — the gates, shifted left from CI into the editor:

  • a verdict cockpit and a checks tree in gate's own Activity Bar container;
  • inline diagnostics, hovers, Quick Fixes (mute / open docs) and CodeLens on located findings;
  • AI-native gating — an @gate chat participant, a gate_check tool agent mode can call before it says "done", and an MCP server provider — so the assistant writing the code is checked by the same gate as CI;
  • debounced run-on-save with in-flight cancellation, and multi-root support.

Roadmap

gate is the shared spine. The same JSON already drives the CLI, the --ci gate, the MCP server, and the editor extension above. Next client on the same JSON:

  • Web cockpit — a repo/PR verdict board over the JSON, unifying the four *-web sites.

License

MIT © Oluwasegun Olumbe

Source: README.md at commit bb9ca33

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.3.0LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts