jevkit

module
v0.2.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 6, 2026 License: MIT

README

Jevkit

Jevkit is a local Go CLI that connects coding agents to TypeSafe AI's Jev service. Agents can use it to classify requests, rank useful lines in noisy output, and ask structured questions. Jevkit redacts configured patterns on your machine before sending text to Jev.

Install

On macOS or Linux, the installer downloads the latest GitHub Release, checks its checksum, and places jevkit in ~/.local/bin:

curl -fsSL https://raw.githubusercontent.com/JoshJancula/jevkit/main/install.sh | sh

On Windows, download the matching ZIP from GitHub Releases or run install.ps1 in PowerShell.

Run jevkit version to confirm the installation. On macOS and Linux, add ~/.local/bin to your PATH if needed. For source builds and development, see the build guide.

Get started

From a project directory:

jevkit key set             # securely store your TypeSafe API key
jevkit key test            # check that it works
jevkit install codex       # or claude, opencode, cursor, antigravity, all
jevkit doctor              # check the local setup

jevkit install adds hooks and an MCP server for the selected agent. Compaction is optional and starts off; set JEVKIT_COMPACT=1 when you want Jevkit to shorten supported tool output. The original output stays available locally. See the agent guide for the supported behavior and settings.

Redaction is pattern based, so check it against your own data before using Jevkit with sensitive output: jevkit redact test --diff <file>. Read the redaction guide for its limits.

More to explore

Directories

Path Synopsis
cmd
jevkit command
Command jevkit is the jevkit CLI entrypoint.
Command jevkit is the jevkit CLI entrypoint.
jevkit/util
Package util holds the small single-file jevkit commands.
Package util holds the small single-file jevkit commands.
internal
agents
Package agents is the jevkit hook framework and per-agent adapters.
Package agents is the jevkit hook framework and per-agent adapters.
breaker
Package breaker is a circuit breaker persisted in a state file, so short lived processes (hooks, CLI invocations) share one view of it.
Package breaker is a circuit breaker persisted in a state file, so short lived processes (hooks, CLI invocations) share one view of it.
compact
Package compact is the deterministic shell-output compactor behind the jev tier's fallback path.
Package compact is the deterministic shell-output compactor behind the jev tier's fallback path.
filelock
Package filelock provides an exclusive advisory lock on a file, shared by concurrent goroutines and processes.
Package filelock provides an exclusive advisory lock on a file, shared by concurrent goroutines and processes.
globmatch
Package globmatch compiles the small, anchored glob language used by local policies.
Package globmatch compiles the small, anchored glob language used by local policies.
jev
Package jev is the typed client for TypeSafe AI's closed-set SystemOne API (https://api.typesafe.ai/v1/systemone).
Package jev is the typed client for TypeSafe AI's closed-set SystemOne API (https://api.typesafe.ai/v1/systemone).
keepawake
Package keepawake stops the host from idle-sleeping while long work runs.
Package keepawake stops the host from idle-sleeping while long work runs.
keystore
Package keystore resolves the Typesafe API key from a fixed chain of sources, first hit wins, and reports which source won.
Package keystore resolves the Typesafe API key from a fixed chain of sources, first hit wins, and reports which source won.
mcp
Package mcp is the jevkit decision server: a stdio JSON-RPC MCP server (built on the official Go SDK) that exposes Jev as five tools.
Package mcp is the jevkit decision server: a stdio JSON-RPC MCP server (built on the official Go SDK) that exposes Jev as five tools.
plugins
Package plugins generates distributable host plugin packages for Claude Code and OpenCode from templates under plugins/templates/.
Package plugins generates distributable host plugin packages for Claude Code and OpenCode from templates under plugins/templates/.
plugins/cmd/gen command
Command gen regenerates distributable host plugin packages under plugins/jevkit/.
Command gen regenerates distributable host plugin packages under plugins/jevkit/.
redact
Package redact is the built-in, fail-closed redaction engine that runs before any text is sent to Jev.
Package redact is the built-in, fail-closed redaction engine that runs before any text is sent to Jev.
redact/audit
Package audit is the transparency layer for what leaves the machine: an append-only audit log of counts (never content), an opt-in store of the exact redacted payloads of recent sends, and an optional confirm step.
Package audit is the transparency layer for what leaves the machine: an append-only audit log of counts (never content), an opt-in store of the exact redacted payloads of recent sends, and an optional confirm step.
registry
Package registry loads the embedded Jev question-set registry and applies the act/gather/fallback decision policy to answers.
Package registry loads the embedded Jev question-set registry and applies the act/gather/fallback decision policy to answers.
sdlc/adaptive
Package adaptive is a pure next-action SDLC loop.
Package adaptive is a pure next-action SDLC loop.
sdlc/catalog
Package catalog builds discovery inventory from native definitions and optional project runtime declarations.
Package catalog builds discovery inventory from native definitions and optional project runtime declarations.
sdlc/compile
Package compile turns a validated spec.Workflow into a frozen, acyclic graph.Graph: it resolves every reroute loop by unrolling it up to the workflow's budgets.maxReroutes bound, so the engine only ever walks a DAG.
Package compile turns a validated spec.Workflow into a frozen, acyclic graph.Graph: it resolves every reroute loop by unrolling it up to the workflow's budgets.maxReroutes bound, so the engine only ever walks a DAG.
sdlc/engine
Package engine is the pure fold at the center of jevkit SDLC execution: Apply(graph, state, event) -> (state, []Effect).
Package engine is the pure fold at the center of jevkit SDLC execution: Apply(graph, state, event) -> (state, []Effect).
sdlc/enrollment
Package enrollment separates agent discovery from permission to route work.
Package enrollment separates agent discovery from permission to route work.
sdlc/graph
Package graph is the frozen, read-only-at-run-time node/edge model that internal/sdlc/compile produces from a spec.Workflow.
Package graph is the frozen, read-only-at-run-time node/edge model that internal/sdlc/compile produces from a spec.Workflow.
sdlc/journal
Package journal is the append-only, observability-only record of every event applied to a run: events.jsonl.
Package journal is the append-only, observability-only record of every event applied to a run: events.jsonl.
sdlc/ledger
Package ledger is the authoritative, on-disk record of a run: run.json holds the engine's current State (what resume loads directly — never by replaying internal/sdlc/journal's observability log), and nodes/<id>.json holds each node's own execution history for audit and `sdlc status`.
Package ledger is the authoritative, on-disk record of a run: run.json holds the engine's current State (what resume loads directly — never by replaying internal/sdlc/journal's observability log), and nodes/<id>.json holds each node's own execution history for audit and `sdlc status`.
sdlc/route
Package route wraps registry.Decider with everything internal/sdlc/engine needs to turn an AskJev effect into a JevDecided event: call-time criteria assembly for a select node's candidates and for top-level workflow selection (one assembler serving both, so their criteria have identical shape), bounded and redacted state, and Jev-unavailable/shadow-mode handling that always yields a usable decision — "a run never stalls on the classifier".
Package route wraps registry.Decider with everything internal/sdlc/engine needs to turn an AskJev effect into a JevDecided event: call-time criteria assembly for a select node's candidates and for top-level workflow selection (one assembler serving both, so their criteria have identical shape), bounded and redacted state, and Jev-unavailable/shadow-mode handling that always yields a usable decision — "a run never stalls on the classifier".
sdlc/seed
Package seed resolves `sdlc start --file` arguments against a workflow's declared seedable artifacts: a pre-existing document takes the place of whatever node would otherwise have produced it, which is why only an artifact the workflow author explicitly marked seedable: true is ever a valid target — an artifact a node merely happens to produce is not automatically safe to substitute (that node's own execution may do more than write the file).
Package seed resolves `sdlc start --file` arguments against a workflow's declared seedable artifacts: a pre-existing document takes the place of whatever node would otherwise have produced it, which is why only an artifact the workflow author explicitly marked seedable: true is ever a valid target — an artifact a node merely happens to produce is not automatically safe to substitute (that node's own execution may do more than write the file).
sdlc/spec
Package spec loads and validates jevkit SDLC workflow definitions: authored YAML at .jevkit/sdlc/*.yaml, declarative only (no shell, no templates, no code), following the compaction.yaml precedent (internal/compact/policy.go).
Package spec loads and validates jevkit SDLC workflow definitions: authored YAML at .jevkit/sdlc/*.yaml, declarative only (no shell, no templates, no code), following the compaction.yaml precedent (internal/compact/policy.go).
sdlc/worker
Package worker invokes enrolled CLI agents and parses their structured reply.
Package worker invokes enrolled CLI agents and parses their structured reply.
security/config
Package config loads layered security policies.
Package config loads layered security policies.
usage
Package usage records one JSONL line per observed Jev transport attempt and aggregates those lines into a report with an estimated cost.
Package usage records one JSONL line per observed Jev transport attempt and aggregates those lines into a report with an estimated cost.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL