Portable System-1 decision layer for agent harnesses.
Host-owned routing, receipts, replay, and fail-open integrations.
Hermes · OMP · Codex · generic MCP
jev-layer routes bounded choices and records evidence; the host keeps execution, permissions, approvals, retries, recovery, and final results.
Integrating jev-layer into a harness? Start with the Agent implementation guide, not this README alone.
Jev never executes a selected capability. A provider can be deterministic demo, OpenRouter Decisions, or TypeSafe; provider-backed tests are not required for normal CI.
Requirements: Node.js 20 or newer. There are no mandatory runtime dependencies.
Install the published CLI:
npm install --global jev-layerOr use a local clone:
npm install
npm link
jev install --project /path/to/workspace
jev add generic --project /path/to/workspace
jev doctor --project /path/to/workspacenpm link is local only. It does not publish the package. Use node /path/to/jev-layer/bin/jev.mjs ... instead if a global link is not wanted. The default demo provider is offline and deterministic.
To call the stdio MCP server directly:
jev mcpTo use a provider with credentials, keep keys outside the repository:
export JEV_LAYER_PROVIDER=openrouter
export OPENROUTER_API_KEY='provided-by-your-secret-store'
jev doctor --project /path/to/workspace- Routing:
jev_routeselects one capability from the host-supplied candidate set. Selection is advisory; the host validates the id and permissions. - Receipts/replay:
jev_record_executionjoins the host result to the originalcorrelation_id. JSONL cases live in.jev/replay/cases.jsonland can be evaluated offline withnpm run replay:evaluate. - Supervision:
jev_supervisereturns bounded work-state judgments; deterministic host policy maps them tocontinue,verify,retry,finish, orescalate. Jev does not perform those actions. - Context filtering: optional deterministic
shadoworconservativefiltering reduces stale context without LLM summarization. - Experimental browser fast-path:
jev_browser_stepchooses one bounded action from a host observation. The host supplies observations, approval, native execution, and recovery. It is opt-in and does not start a browser worker. - Fail-open: disabled, unavailable, invalid, or inconclusive Jev calls return control to the host's normal path. Jev never widens permissions or guesses execution.
All optional surfaces are disabled by default:
JEV_BROWSER_FAST_PATH=1 jev mcp
JEV_SUPERVISION=1 jev mcp
JEV_CONTEXT_FILTER=shadow jev cli --input examples/route-request.jsonCurrent examples live under integrations/:
integrations/hermes/integrations/omp/integrations/codex/integrations/template/
The release baseline records OMP 18.2.6, Hermes 0.21.3 (b675e6de), and Codex CLI 0.155.1 observed in the preparation environment. This is a version/contract baseline, not a claim of full provider/model coverage; see docs/COMPATIBILITY.md.
Adapters are intentionally thin. They may call the CLI or stdio MCP, but the host must retain native capability lookup, permissions, approvals, execution, retries, recovery, and final output.
The shortest PR path is:
- copy
integrations/template/adapter.mjs; - add
integrations/<harness>/and a secret-free config/example; - call
jev_route, preservecorrelation_id, execute only through the host registry, then calljev_record_execution; - add an offline smoke fixture for success, fail-open, approval denial, and execution receipt;
- document supported versions and run CI.
See CONTRIBUTING.md for the adapter contract and docs/SCHEMA-VERSIONING.md for compatibility rules.
Browser fast-path reliability is validated against the current real-browser fixtures, including action sequencing, visible-link navigation, native select execution, approval denial, and recovery. Performance optimization remains experimental. No browser speedup claim is made.
- MIT licensed; see LICENSE.
- jev-layer is not a security boundary. Host permissions and approvals are authoritative; see SECURITY.md.
- Schema, MCP tool, receipt, replay, and adapter contracts are currently version 1. Prefer additive changes; do not break v1 silently.
- Do not commit credentials, logs containing secrets,
.envfiles, or machine-specific paths.
npm test
npm run smoke
npm run fail-open-smoke
npm run clean-install-smoke
npm pack --dry-runThe GitHub Actions matrix runs these checks on Node.js 20, 22, and 24. Provider-backed tests require an explicitly configured secret-managed environment and are not part of ordinary PR CI.