{"slug": "show-hn-s1code-a-decision-first-rust-coding-agent-with-jev", "title": "Show HN: S1Code, a decision-first Rust coding agent with Jev", "summary": "Developer mertcicekci0 released S1Code 0.3.0-rc.8, an experimental native Rust coding agent for macOS and Linux that combines deterministic policy, bounded decisions, and generative reasoning from Claude or OpenAI, with optional Jev integration for action selection and context eviction. S1Code runs in the terminal against a real repository, letting users inspect and approve exact patches and commands, resume saved sessions, and rehydrate evicted evidence without rerunning tools; it ships via source installation with no npm package and pins Rust 1.94.0, with Windows currently unsupported.", "body_md": "**A native Rust coding agent with inspectable decisions and recoverable context.**\n\nPlan with a generative model. Choose concrete actions. Review the changes. Resume the work.\n\nS1Code brings a coding agent into your terminal: describe a task, inspect its actions and diff, approve changes, and see the actual verification result. Sessions and captured evidence survive restarts.\n\nIts native runtime combines **deterministic policy**, **bounded decisions**, and\n**generative reasoning**. Claude or OpenAI handles planning and code generation.\nOptional Jev integration selects among fully specified actions and can help decide\nwhich evidence stays in the active context. S1Code owns local tool execution.\n\n**Experimental preview · 0.3.0-rc.8** — macOS and Linux. Source installation\nis available; binary distribution details are in the [installation guide](https://github.com/mertcicekci0/S1Code/blob/main/docs/install.md).\nSee [implementation status](https://github.com/mertcicekci0/S1Code/blob/main/docs/BUILD_STATUS.md)\nfor verified paths and remaining limits.\n\n- **Work in a real repository.** Search and read source, apply validated patches,\ninspect Git changes, and run[supported verification commands](https://github.com/mertcicekci0/S1Code/blob/main/docs/project-checks.md) for Node, Python, Cargo and existing npm scripts.\n- **Keep the conversation readable.** Streaming replies and tool outcomes up front;\ncandidates, decisions, context and diffs in an optional inspector.\n- **Control execution.** Review exact patches and commands, or preapprove supported\nactions for a trusted workspace. Cancel from the keyboard.\n- **Pick up where you left off.** Saved sessions retain requests, artifacts and\nactivity. Resume without blindly repeating completed tools.\n- **Recover evicted evidence.** Context eviction removes material from the working\nset while preserving captured bytes for rehydration without rerunning commands.\n- **Use the same engine in scripts.** Headless mode emits JSONL and persists approval\nrequests for later review.\n\nFor prebuilt binaries, verification and updates, see [installation](https://github.com/mertcicekci0/S1Code/blob/main/docs/install.md).\nThere is no npm package to install.\n\n**Build from source:** requires Git and [Rust via rustup](https://rustup.rs/). The repository pins Rust\n1.94.0. Python 3 runs the included parser demo; Windows is currently unsupported.\n\n```\ngit clone https://github.com/mertcicekci0/S1Code.git\ncd S1Code\ncargo install --path . --locked\ns1code doctor\n```\n\nOn macOS, save each API key once using a hidden prompt backed by login Keychain:\n\n```\ns1code auth set claude\ns1code auth set typesafe\n```\n\nOpen S1Code **inside the repository you want to work on**:\n\n```\ncd /path/to/your/project\ns1code\n```\n\nEnter these commands in the S1Code input field, one at a time:\n\n```\n/provider claude\n/model opus\n/jev typesafe\n```\n\nThen type your task directly:\n\n```\nFind why the parser tests fail, make the smallest correct fix, and run the tests.\n```\n\nProvider and model choices are remembered. Keys are reused from Keychain; never\npaste them into a task. On Linux, configure `ANTHROPIC_API_KEY` and\n`TYPESAFE_API_KEY` through your environment or secret manager.\n\n**Jev is optional.** `/decision rules` uses deterministic selection without a\nlearned decision backend. `/eviction jev` separately enables Jev-assisted context\neviction. Jev credentials and billing are independent of the generation provider.\n\nThe separate Codex bridge uses the official installed Codex CLI and its managed login:\n\n```\ns1code login codex\ns1code run \"Investigate and fix the failing parser test\" --mode codex\n```\n\nCodex owns execution, internal model turns and context in this mode. This is a\ndelegation to the official runtime, not the native S1Code loop. See\n[provider setup](https://github.com/mertcicekci0/S1Code/blob/main/docs/providers.md) for CLI compatibility and permissions.\n\nNative OpenAI generation is also available through the Responses API using an\nOpenAI API key. `/claude-code` hands the terminal to the installed official Claude\nCode application; that handoff does not run S1Code's native loop or Jev decisions.\n\n```\ns1code login claude\ns1code account claude\ns1code claude-code\n```\n\nLogin stays inside the official Claude Code client. To make Jev evidence ranking\navailable there, connect the optional [MCP companion](https://github.com/mertcicekci0/S1Code/blob/main/docs/claude-companion.md).\nClaude Code retains its tool loop and context; Jev uses a separate TypeSafe key.\nNative S1Code still uses API-key generation.\n\n| Action | Command or key | \n|---|---|\n| Inspect activity, decisions, context and diff | `Ctrl+O` or`F2` during a task | \n| Review the diff from the follow-up field | `/diff` | \n| Return from the inspector | `Esc` | \n| Cancel a running task | `Esc` or`Ctrl+C` | \n| List saved tasks | `/sessions` on the home screen | \n| Resume the latest task in this workspace | `/resume` on the home screen | \n| Resume a particular task | `/resume ID` or a unique ID prefix | \n| Show setup commands | `/help` | \n\nContinue a task in its follow-up field to retain the conversation. A new prompt from the home screen starts an independent saved task.\n\nNative patches and processes require approval by default. For a trusted workspace,\n`/permissions full-access` preapproves **supported actions** for the session;\n`/permissions manual` restores prompts. Denied actions remain denied. This is not\nan OS sandbox: approved tests and build scripts execute repository code with your\nuser's filesystem and network access.\n\n```\nObserve → construct concrete candidates → filter by policy → select\n   ↑                                                        ↓\nVerify and update ← persist evidence ← execute ← revalidate\n```\n\nThe generator supplies plans, complete tool arguments, patches or answers. Forced transitions run directly; ambiguous candidate selection can use Jev. Deterministic policy and workspace checks apply again before execution, regardless of which backend selected the action. Completion requires current verification evidence.\n\nThe active context is a working set over durable artifacts. Budget-triggered\n**reversible eviction** preserves pinned constraints and dependency groups; evicted\ncontent can be retrieved exactly as captured. Historical snapshots stay historical.\nRehydration preserves evidence, not a guarantee that a model will ask for it.\n\nClaude prompt-cache usage, provider calls, tool actions and verification outcomes are recorded when exposed. Lower cost, greater speed and better task performance are hypotheses to evaluate, not promises.\n\n```\ns1code demo --offline --workspace /tmp/s1code-parser-demo\ns1code context-demo --workspace /tmp/s1code-context-demo\n```\n\nUse empty destination directories. The parser demo uses a labeled **OFFLINE\nSIMULATION** for generation, with real reads, patch approvals and failing/passing\ntests. The context demo stores, evicts and rehydrates actual evidence. Neither is\na live model demonstration.\n\nFor a disposable, budgeted **live Claude + Jev** task, run this from the source\ncheckout:\n\n```\npython3 scripts/try_live.py task\n```\n\nThe launcher shows its request allowance before any API calls and reuses saved\nmacOS keys. See the [demo guide](https://github.com/mertcicekci0/S1Code/blob/main/docs/demo.md) for preparation and interpretation.\n\n```\ns1code run \"Fix the failing parser test\" --provider claude --decision jev --headless\ns1code resume <session-id> --headless --approve <exact-candidate-id>\n```\n\nStdout contains machine-readable JSONL; diagnostics go to stderr. Approval is bound to the exact action and its preconditions. A run does not automatically commit or push your changes.\n\n```\ncargo fmt --check\ncargo clippy --locked --all-targets -- -D warnings\ncargo test --locked\ncargo build --locked --release\npython3 scripts/release_check.py\n```\n\nDefault tests need no credentials or network inference. `scripts/check.sh` runs the\nbroader local checks; [evaluation](https://github.com/mertcicekci0/S1Code/blob/main/docs/evaluation.md) explains fixture validation,\nlive trials and matched-policy comparisons. Fixture success is not agent success.\nProvider-restricted results stay private pending clearance.\n\n- [Quickstart](https://github.com/mertcicekci0/S1Code/blob/main/docs/quickstart.md) ·[Providers and authentication](https://github.com/mertcicekci0/S1Code/blob/main/docs/providers.md)\n- [Architecture](https://github.com/mertcicekci0/S1Code/blob/main/docs/architecture.md) ·[Implementation status](https://github.com/mertcicekci0/S1Code/blob/main/docs/BUILD_STATUS.md)\n- [Demo guide](https://github.com/mertcicekci0/S1Code/blob/main/docs/demo.md) ·[Evaluation methodology](https://github.com/mertcicekci0/S1Code/blob/main/docs/evaluation.md)\n- [Security](https://github.com/mertcicekci0/S1Code/blob/main/SECURITY.md) ·[Privacy](https://github.com/mertcicekci0/S1Code/blob/main/PRIVACY.md) ·[Contributing](https://github.com/mertcicekci0/S1Code/blob/main/CONTRIBUTING.md)\n- [Changelog](https://github.com/mertcicekci0/S1Code/blob/main/CHANGELOG.md) ·[Release process](https://github.com/mertcicekci0/S1Code/blob/main/docs/releasing.md)\n\nNew project code is [Apache-2.0](https://github.com/mertcicekci0/S1Code/blob/main/LICENSE). Dependencies retain their own licenses;\nsee [third-party notices](https://github.com/mertcicekci0/S1Code/blob/main/THIRD_PARTY_NOTICES.md). No vendor affiliation or endorsement\nis claimed. S1Code is a working name; naming availability and trademark clearance\nhave not been established.", "url": "https://wpnews.pro/news/show-hn-s1code-a-decision-first-rust-coding-agent-with-jev", "canonical_source": "https://github.com/mertcicekci0/S1Code", "published_at": "2026-09-19 17:48:19+00:00", "updated_at": "2026-09-19 18:24:23.154168+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "developer-tools", "ai-products"], "entities": ["S1Code", "Rust", "Claude", "OpenAI", "Jev", "Codex", "mertcicekci0", "GitHub"], "alternates": {"html": "https://wpnews.pro/news/show-hn-s1code-a-decision-first-rust-coding-agent-with-jev", "markdown": "https://wpnews.pro/news/show-hn-s1code-a-decision-first-rust-coding-agent-with-jev.md", "text": "https://wpnews.pro/news/show-hn-s1code-a-decision-first-rust-coding-agent-with-jev.txt", "jsonld": "https://wpnews.pro/news/show-hn-s1code-a-decision-first-rust-coding-agent-with-jev.jsonld"}}