Skip to content

feat/vercel-fx-provider: add Vercel fx as an agent provider - #21

Merged
LeulAria merged 3 commits into
mainfrom
feat/vercel-fx-provider
Oct 28, 2026
Merged

LeulAria merged 3 commits into
mainfrom
feat/vercel-fx-provider

Conversation

@LeulAria

Copy link
Copy Markdown
Owner

Summary

Adds Vercel's fx as an agent provider with its own tab in the model picker. fx speaks ACP natively (fx acp). The idea comes from pingdotgg/t3code#18277, but the wiring follows Volt's provider model:

  • Models come from fx models --json. The model fx status --json reports as the default is listed first. Volt doesn't open a throwaway ACP session to list them, because fx saves every session under ~/.fx/sessions. Each model has fx's Effort ladder (default Medium), which is written to fx's effort config option.
  • Permissions: Volt stays in charge. fx always runs in its ask mode and Volt's access rules answer every request. The first mode write after a session starts is always sent, because fx reports ask while it is still running its saved mode.
  • Setup: install script (macOS/Linux), fx login, and sign-in state read from fx status --json. Marked Early Access.
  • Picker and sandbox: fx brand glyph and rail tab, a sandbox footprint (~/.fx, AI Gateway, and the Codex/Grok backends fx can sign in to), an ACP exec route, and a seed-version bump so existing installs get the fx profile.

Also in this branch:

  • Model picker: removes the compare-models (layers) toggle from the provider bar. ⇧-clicking a model still starts a comparison.
  • Settings → Providers & Models: the detail pane's scrollbar sits at the window's right edge instead of beside the centred column. The content doesn't move.

Validation

  • Passed: 13 unit tests across fxModels, execRouter and voltSetupPure. The fx parser fixtures are copied from T3's tests, not captured from a real fx.
  • Passed: src/ type-check, and the dev watcher compile after rebasing onto main.
  • Passed: pre-commit hygiene hook.
  • Not run: a live fx session. fx isn't installed on the test machine yet (curl -fsSL https://fx.sh/setup.sh | bash, then fx login).

Known gaps

  • Picking an fx model for Tab or chat titles still leaves a saved fx session per request.
  • Not ported from T3: fx skills in the composer's skill menu, fx subagents in their own threads, and steering.

🤖 Generated with Claude Code

LeulAria and others added 3 commits October 29, 2026 00:12
fx (https://fx.sh) speaks ACP natively (`fx acp`). Inspired by
pingdotgg/t3code#18277, done Volt's way:

- Models come from `fx models --json`, with the model `fx status --json`
  reports listed first; never a throwaway ACP session, since fx saves
  every session under ~/.fx/sessions. Each row carries fx's effort
  ladder (default Medium), written to fx's `effort` config option.
- Volt stays the permission authority: fx runs in its `ask` mode and
  Volt's access rules answer every request. The first mode write after
  a session starts is always sent, because fx reports `ask` while still
  running its saved mode until a client sets one.
- Setup: install script, `fx login`, sign-in read from `fx status --json`.
- Brand glyph and its own rail tab in the model picker, sandbox
  footprint (~/.fx, AI Gateway and the Codex/Grok backends), ACP route,
  and a seed-version bump so existing installs get the fx profile.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…click still compares

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
@vercel

vercel Bot commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
volt Ready Ready Preview Oct 28, 2026 8:23pm UTC

Request Review

@LeulAria
LeulAria merged commit 7fb1f17 into main Oct 28, 2026
17 checks passed
LeulAria added a commit that referenced this pull request Nov 8, 2026
… host

The T2 host (spec H.1, N.1 #21) locks down its realm with SES and evaluates the plugin in a
Compartment. Official Endo package, Apache-2.0; deps @endo/cache-map, @endo/env-options,
@endo/immutable-arraybuffer. The host loads the self-contained dist/ses.cjs.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
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