Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@ MODEL_NAME=google/gemini-2.5-flash
# HF_HOME=~/.cache/huggingface # where the laya and cua checkpoints download on first use
# HF_HUB_OFFLINE=1 # after the first run, no network for the checkpoints

# ---- Served JEV-VL (browser --model jev-vl-served; System1-Omni native flat protocol, no extra needed) ----
# JEV_VL_URL=http://127.0.0.1:8080 # required: frontend base URL serving autotrust/JEV-27B-VL
# S1A_DECISION_TIMEOUT_S=5 # total deadline for all questions in one browser decision; no HTTP retry

# ---- Laya (the in-process decision model behind --model laya; needs `uv sync --extra laya`) ----
# LAYA_MODEL=convaiinnovations/laya
# LAYA_SUBFOLDER=multilingual # or typed-decisions
Expand Down
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); ver
- Optional local Cua-S1 4B inference through the `cua-four-b` extra and `CUA_S1_VARIANT=4b`, supporting text and
multimodal input. Desktop `--pixel-target` offers named screenshot points; clicks remain bound to the observed
window and capture.
- `jev-vl-served` in the browser front and decision-model factory: JEV-27B-VL through System1-Omni's native
flat HTTP protocol, with a mandatory current PNG/JPEG, choice/noul mapping and a shared decision deadline.
Local tests use mocks; single-H800 GPU checks and the bounded R3 browser fixture with same-trial video
are validated. See the [validation scope](docs/decision-models.md#served-jev-vl).
- Verified desktop text input through `--text`, `--text-target`, and `--text-mode` (insert or replace).
Completion requires confirmed input and fresh field readback; `--verify-file` also requires matching contents
in a freshly written file. `--window-title` selects an exact window and `--app-path` launches a macOS app bundle.
Expand All @@ -27,6 +31,8 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); ver

### Fixed

- JEV-VL browser raw traces stay scoped to `jev-vl-served`, retain only timing, request ID and content headers,
and use null request IDs for local forced choices instead of implying an HTTP request was sent.
- Malformed ticket-router JSONL now names the dataset, physical line and JSON column without printing ticket contents.
- Laya browser-state compaction preserves the recovery plan for the next decision.
- Desktop recovery resets its detection window on observed progress without resetting its cumulative budget.
Expand Down
4 changes: 3 additions & 1 deletion docs/capabilities.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Status checked against System1-Agents `90246d6b317964674412c43d0dee966a01ca515c` (2026-10-09). This page records what the code registers separately from what the repository has actually validated. A registration or contract test establishes adapter behavior, not model quality, an application success rate, or support on every device accepted by a loader.

The capability rows below reflect registrations and contract tests at the checked revision; validation rows are separately tied to their recorded Agents and model revisions.
The capability rows below reflect current registrations, including additions after that evidence audit; validation rows are separately tied to their recorded Agents and model revisions.

For issue trackers and serving support, see [System1-Omni model tracker #83](https://github.com/ThinkFlowLab/system1-omni/issues/83) and its [supported models and hardware](https://github.com/ThinkFlowLab/system1-omni/blob/main/docs/supported-models.md). Omni owns model loading and accelerator execution; Agents owns the decision adapter and agent/application behavior. Omni support alone does not validate an Agents combination.

Expand All @@ -11,6 +11,7 @@ For issue trackers and serving support, see [System1-Omni model tracker #83](htt
| Model / checkpoint | Input modality | Question types implemented | Scenario / front | Serving path | Hardware validation in this repository |
|---|---|---|---|---|---|
| TypeSafe Jev (`--model jev`; actual served model comes from the configured endpoint) | Text state and enumerated options | `choice`, `noul`; service protocol also defines `score`, but Agents has no corresponding question type | Tool decisions, browser decisions, rails, `decide`/`probe` and MCP | HTTP through TypeSafe or configured OpenRouter-compatible endpoint; configured compatible endpoint can use System1-Omni `/v1/systemone` | The adapter can address configured Jev-compatible services; exact model identity is endpoint-reported. Historical artifacts include Open-Jev-9B and an Open-Jev-27B-v1.1 load attempt; those are endpoint configurations, not model names guaranteed by the `jev` adapter. See below. Other combinations **unverified here.** |
| JEV-27B-VL (`--model jev-vl-served`; `autotrust/JEV-27B-VL`) | Exactly one current PNG/JPEG plus text state and question context | `choice`, `noul` | Browser front and direct `build_model()` factory path; other fronts are not registered | HTTP native flat `/v1/systemone` through the System1-Omni frontend at `JEV_VL_URL` | Local adapter/registration tests use mocks. Single-H800 GPU checks and bounded R3 browser task completion with same-trial video are validated; other tasks and hardware remain unverified. See [validation scope and limits](decision-models.md#served-jev-vl). |
| CLM-v0.1-8B (`--model clm`; default serving label `clm-latest`) | Text | `choice`, `noul` | Tool decisions, browser, rails, `decide`/`probe`, MCP | HTTP `/v1/systemone` to a compatible CLM service; real encoder is external | Adapter fixtures include stub responses. A historical ticket-router report records real Qwen3-8B through upstream `clm-serve` on an RTX 4090, but its Agents source SHA is not pinned in the report and the serving engine is not Omni native CLM. It reports 18/90 correct (20%) for the normal tool-loop framing and a 4/12 fit-probe verdict of “not a decision-model task”; the 90 decisions repeat the same 30-ticket set and are not 90 independent tickets. Treat this as poor, provenance-incomplete historical evidence, not current or broad validation. See [CLM report](../evals/ticket_router/CLM.md). |
| LAYA (`--model laya`; default `convaiinnovations/laya`, English; `LAYA_SUBFOLDER=multilingual` selects multilingual) | Text | `choice`, `noul` | Tool, browser, rails, `decide`/`probe`; browser state/question shaping is implemented | In-process Python `laya` | Historical English and multilingual CPU/MPS runs are documented below. Other/typed/custom checkpoints and CUDA are unverified here. |
| LAYA (`--model laya-served`; served checkpoint/revision is reported by the endpoint) | Text | `choice`, `noul` | Tool, browser, rails, `decide`/`probe`, MCP | Agents HTTP client can connect directly to a Laya worker or through System1-Omni `omni-jev` at `/v1/systemone` | Historical direct-worker and Omni-front MPS ticket-router measurements are recorded below (90 decisions/configuration, 63 correct each); historical CPU served request replay is separate and is not task-success evidence. Other hardware/checkpoints unverified. |
Expand All @@ -27,6 +28,7 @@ These rows cite exact artifacts found in this checkout or clearly identify exter

| Agents revision and artifact | Model / checkpoint and serving path | Input / question / scenario | Hardware actually identified | What the artifact establishes and does not establish |
|---|---|---|---|---|
| Agents `0def92771746ec94adc38bf41be9720bccfbf19d`, Omni `26dc76bf65c544815e7b285866791da1e703816d`; [same-trial video](https://github.com/linear3735/system1-agents/releases/download/jevvl-r3-419202-evidence/evidence-replay.mp4) and [sanitized raw records](https://github.com/linear3735/system1-agents/releases/download/jevvl-r3-419202-evidence/jevvl-r3-evidence.zip) | Native JEV-27B-VL `autotrust/JEV-27B-VL@f34b598d4ef4bcefd337bee8d8e7ddd3b7733ccc`; Omni frontend to native Rust/CUDA worker | Current PNG and choice decisions; bounded RECOVERABLE browser form | Single NVIDIA H800, Linux | R3: three executed actions, seven visual HTTP 200 responses and an independently verified `hello world` POST. Four non-forced operation choices; six forced targets excluded. All three attempts retained: oracle verified 2/3, complete evidence 1/3. Historical frozen-run evidence, not fresh validation of the merged head, broad task quality or end-to-end browser speedup. Separate chat/value work supplied text; its actual backend checkpoint and full cost remain unverified. See [validation scope](decision-models.md#served-jev-vl). |
| Agents historical `served-laya` branch (report does not give a complete Agents SHA), [`evals/ticket_router/SERVED_LAYA.md`](../evals/ticket_router/SERVED_LAYA.md) and [`served_laya_records.json`](../evals/ticket_router/served_laya_records.json) | LAYA English `convaiinnovations/laya@55cf4c4`; in-process C-in, direct worker C-direct, and Omni `omni-jev` front C-front | Ticket router, 30-ticket set shuffled across three seeds; 90 decisions/configuration | Apple M1 Pro, 16 GB, macOS 26.1; MPS for served C-direct/C-front and in-process MPS for C-in | Records 63/90 correct for each configuration. Direct worker used compiled fp16 MPS; C-front routed through Omni; all (seed,ticket) pairs agreed across configs. Historical report, incomplete Agents source SHA; one application and checkpoint only, not broad quality evidence. |
| Replay shaping at Agents `9f87fed`; separate live browser runs at `70227de` and `69ad3e5`; [`laya-browser-shaping/README.md`](results/laya-browser-shaping/README.md) and [`served-system1-omni/README.md`](results/laya-browser-shaping/served-system1-omni/README.md) | LAYA text worker through Omni `omni-jev`; Omni `ae86032cba2466f45f42c2ebdfadbcfa8c30eb9f`; worker checkpoint routing was not confirmed for every replay tick | Standalone `urllib` replay of 12 recorded Google Flights browser ticks, 45 questions; pre-shaped with Agents `laya_state()`/`laya_browser_question()`, sending requested 1536/1024 and default windows; separate live browser runs | Replay: Linux x86_64, 8 CPU cores, no GPU. Live run: Windows 11 CPU | The replay uses pre-shaped bodies and requested window fields, but it is not execution through Agents `ServedLayaModel`. The older worker ignored the requested window values and matched its default-window answers; per-tick checkpoint routing is uncertain. Separate live in-process browser attempts ended in early `DONE` and did not complete the task. These artifacts show input-shape and serving-request behavior, not a successful browser application. |
| Agents `e64eb58e7fd94806edfa6206aa08e66f01bdae78`, external [PR review evidence release](https://github.com/QianCyrus/system1-agents/releases/tag/pr-review-evidence-20261007) | Served LAYA English `convaiinnovations/laya@55cf4c4ebb4ebe31b2550e8bdf3bd21b99753851`; Omni `99865743d27316fbe81362dc0f0e6de6fda86284`, `frontend.laya_mps` direct HTTP worker | Desktop document fixture; four decisions in one task: Save, Save, type, Save; independent file check | macOS 26.2 arm64; MPS; physical chip not reported | One historical fixture task succeeded on the final Save, after two ineffective Save choices; fresh file and exact content were independently checked. External archive also pins Laya and both repository revisions. One task only; not broad desktop capability. |
Expand Down
3 changes: 2 additions & 1 deletion docs/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ Variables can be exported in your shell or placed in a `.env` file at the root o
| `TYPESAFE_API_KEY` | `jev` model | *(unset)* | API key for direct TypeSafe decisions endpoint (`https://api.typesafe.ai/v1/systemone`). |
| `TYPESAFE_API_URL` | `jev` model | `https://openrouter.ai/api/alpha/decisions` | Endpoint URL for decisions; defaults to OpenRouter proxy, or can be overridden to a custom proxy URL. |
| `TYPESAFE_MODEL` | `jev` model | `typesafe/jev-1.13` | Model identifier when proxying Jev decisions through OpenRouter. |
| `S1A_DECISION_TIMEOUT_S` | `jev` model | `5` | Seconds one decision may take, retries included. Raise it for a slower System One server behind `TYPESAFE_API_URL` (e.g. a local OneJev-27B or CLM-8B: `30`). |
| `S1A_DECISION_TIMEOUT_S` | `jev`, `jev-vl-served` models | `5` | Total deadline in seconds for one decision. Jev includes retries; JEV-VL shares it across sequential questions and does not retry HTTP requests. Must be finite and above zero. Raise it for a slower System One server. |
| `JEV_VL_URL` | `jev-vl-served` model | *(unset, required)* | Frontend base URL serving `autotrust/JEV-27B-VL` through System1-Omni's native flat `/v1/systemone` protocol, e.g. `http://127.0.0.1:8080`. Browser and direct factory paths only; requires exactly one current PNG/JPEG image. |
| `OPENROUTER_API_KEY` | `jev` model (proxy), chat model fallback | *(unset)* | OpenRouter API key, used for proxying Jev decisions or as a fallback for `LLM_API_KEY`. |
| `OPENROUTER_BASE_URL` | chat model fallback | `https://openrouter.ai/api/v1` | Fallback base URL for the chat model when `LLM_BASE_URL` or `OPENAI_BASE_URL` is unset. |
| `MODEL_NAME` | chat model (`llm` model, rethink planner, browser agent) | *(unset)* | Model identifier for the chat model (e.g. `google/gemini-2.5-flash` or `claude-fable-5-1`). |
Expand Down
Loading
Loading