Skip to content

Run every model through the shared Redrob Code engine - #98

Closed
its-janghoon wants to merge 2 commits into
developfrom
feat/engine-only
Closed

its-janghoon wants to merge 2 commits into
developfrom
feat/engine-only

Conversation

@its-janghoon

Copy link
Copy Markdown
Member

Summary

One way to reach a model: the user's shared Redrob Code daemon. Depends on redrob-code PR #89 (redrob acp --attach, redrob service start --json, /api/clients).

  • AIProviderID is now engine | acp:redrob-code. Removed: OpenRouter, Anthropic, OpenAI, Google AI, DeepSeek, Z.ai, MiniMax, OpenAI-/Anthropic-compatible, the Pi harness, and the Claude Code / Codex / Gemini ACP agents (plus their Tauri shell allowances)
  • Design loop: ACP over redrob acp --attach (client of the daemon, not an engine of its own)
  • Design / review / fast / vision profiles: one OpenAI-compatible adapter at the daemon's /v1/chat/completions; model list from the engine's GET /api/model (provider/model ids, capabilities from the engine; Redrob Auto first)
  • src/app/ai/engine/daemon.ts: finds or starts the daemon via redrob service start --json; secret = Basic password; fresh: true re-reads after 401 / connection loss
  • src/app/ai/engine/auth.ts: Connect Redrob hands the Console key to the engine (PUT /auth/redrob); signed-in status read from the engine's provider list (same contract Cowork uses); this app stores no key. Legacy provider keys in local storage are deleted (migration v2)
  • Privacy: the app's own masker (rules, vault, Strict confirm, protected tools/prompt) removed; the composer level is carried to the engine switch via PUT /api/privacy (standard -> regex, high/strict -> model). Cross-check and image analysis are masked in the engine now
  • README (en/ko), CHANGELOG (Breaking changes + Changed), ProfileEditor: no key / base URL / API type fields; Test runs against the daemon

Tests

  • bun test ./tests/engine: 3226 pass; the 85 failures are identical to develop (fig fixtures, CLI, fonts, no new ones)
  • New tests/engine/app/ai/engine-account.test.ts; rewritten model, model-roles, vision, image, cross-check, credential-migration, ACP tests
  • tsgo --noEmit 0, check:vue 0, lint 0 errors, check:deps, check:i18n, check:docs, check:changelog, check:arch, check:packages, check:monorepo, check:secrets, test:type-shapes, test:tools, test:dupes green

Not done here

  • packages/harness is still a workspace package (nothing in the app imports it now); removing the package is a separate decision
  • privateTerms (the names list) is kept in storage for workspace policies but the engine masker takes no names list yet

Redrob Design had three ways to reach a model: the Redrob Code agent over ACP (its own engine
process), ten direct providers with their own keys, and the Pi harness. Each kept its own secrets
and its own masking, and none shared anything with the other Redrob apps on the machine. Now
there is one: the user's shared Redrob Code daemon.

The design loop still speaks ACP, but `redrob acp --attach` makes that process a client of the
daemon rather than an engine of its own. The design, review, fast and vision profiles go to the
daemon's OpenAI-compatible route (`/v1/chat/completions`) through one adapter; the engine picks
the real provider behind a `provider/model` id, lists the models it can reach (GET /api/model),
and masks personal details before anything leaves the computer. AIProviderID is `engine |
acp:redrob-code`; the direct providers, the harness, the Claude Code / Codex / Gemini agents and
their Tauri shell allowances are gone.

Finding the daemon is `redrob service start --json` (src/app/ai/engine/daemon.ts): it prints the
record with url and secret, starts the daemon when none answers, and the secret becomes the Basic
password the adapter sends. The engine's Redrob account is the "credential" of the one model
connection (src/app/ai/engine/auth.ts): Connect Redrob hands the Console key to the engine with
PUT /auth/redrob and this app stores nothing; signed-in status is read from the engine's provider
list, the way Cowork reads it, so the launcher's shared sign-in shows up too. Keys an earlier build
kept for the removed providers are deleted on first start (credential migration v2).

The app's own privacy masker (pattern rules, placeholder vault, Strict confirm, protected tools and
prompt) is removed. The composer's level stays and is carried to the engine's switch
(standard -> regex, high/strict -> model) through PUT /api/privacy, which is the same switch Cowork
and Office run under. Cross-check and image analysis now reach the model through the engine, so
they are masked there as well; the models.dev catalogue is replaced by the engine's list.

Requires Redrob Code with the shared daemon (redrob-code PR #89): `redrob acp --attach`,
`redrob service start --json`, /api/clients.

Tests: tests/engine 3226 pass with the same 85 pre-existing failures as develop (fig fixtures, CLI,
fonts); new engine-account tests cover sign-in status, key hand-over and the daemon secret; model,
model-roles, vision, image, cross-check, credential-migration and ACP tests rewritten for the
engine. tsgo and vue-tsc clean, oxlint 0 errors, check:deps/i18n/docs/changelog/arch and the rest
of `check` green.
@its-janghoon

Copy link
Copy Markdown
Member Author

Superseded by #99 (same commits; this PR's pull_request workflows never started).

@its-janghoon
its-janghoon deleted the feat/engine-only branch October 13, 2026 05:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant