Repository navigation
feat(opencode): mistral + vibe-direct providers behind the mistral-plan route - #5722
Merged
Merged
Conversation
…an route Completes Drew's Mistral provider set (opencode#1653): - flake.lock: bump the opencode fork input 63c50eec -> 7774bf07 (PR #1661 merged: native vibe provider incl. the attribution-stamp fix — metadata.call_source vibe_code on every wire request, the metering key for the Vibe quota marts). - .opencode/opencode.jsonc: provider mistral (@opencode/ai/providers/mistral; credential = the enrolled server credential, integration mistral) and provider vibe-direct (@opencode/ai/providers/vibe) with Vibe's 8 preset models declared in config (models.dev has no vibe entry for sync-models; only the default preset's context limit was verified from the binary). Route mistral-plan in experimental.provider_routes: ordered [vibe-direct, mistral] — the Vibe-attributed leg burns first, the plain API leg is the reserve. - MISTRAL_API_KEY into the opencode server unit: Bitwarden mistral.api-key mirrored into secrets/sops/common/bws.yaml (lib/bws-to-sops.sh, +1 key), declared as sops secret agent-auth/mistral-api-key (nixos/agent-auth, /run/secrets/agent-auth/mistral-api-key, 0400), and materialized into a systemd EnvironmentFile by an ExecStartPre on the user unit (home/common) — the openclaw-facade-auth-materialize pattern; the value never enters the Nix store or the repo.
developing-today
Bot
requested review from
a team and
dezren39
as code owners
November 5, 2026 00:36
|
Important Review skippedBot user detected. To trigger a single review, invoke the
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Completes Drew's Mistral provider set (opencode#1653). The fleet side of developing-today-forks/opencode PR #1661 (merged
7774bf07): the nativevibeprovider, including the attribution-stamp fix — every wire request carriesmetadata.call_source: "vibe_code", the metering key for the Vibe quota marts (evidence + correction on opencode#1653).Changes
63c50eec→7774bf07(the merged mcpx(cli): shell completions strand command aliases — flag completion keys on canonical names only in bash/zsh, and fish never offers aliases at all #1661 rev; narHash updated bynix flake lock --update-input opencode, diff confined to that node)..opencode/opencode.jsoncmistral—@opencode/ai/providers/mistral, name "Mistral API (drewrypope)". Credential: the enrolled server credential (integrationmistral, created + activated against the standing server; the key lives in Bitwarden asmistral.api-key). Model catalog stays with sync-models in the runtime overlay (code#4544).vibe-direct—@opencode/ai/providers/vibe, name "Mistral Vibe Direct (native wire clone)". Vibe's 8 preset models are declared in config — models.dev has no vibe entry, so sync-models cannot maintain this catalog. Only the default preset's context limit (262144) was verified from the binary; the remaining entries carry the preset ids + names from Vibe's own catalog, no invented limits (opencode#1653's contract).mistral-planinexperimental.provider_routes:{"providers": ["vibe-direct", "mistral"], "selection": "ordered"}— the Vibe-attributed leg is attempted first on every dispatch; the plain API leg is the reserve. Leg order changes in that list and nowhere else.secrets/sops/common/bws.yaml— re-mirrored vialib/bws-to-sops.sh; the only content change is+ mistral.api-key(rest is sops re-encryption).nixos/agent-auth/default.nix— declaresagent-auth/mistral-api-keyfrom the bws mirror (decrypts to/run/secrets/agent-auth/mistral-api-key, owner user, 0400).home/common/default.nix— anExecStartPreon the user unit materializes a systemdEnvironmentFileat every server start from that sops file, and the unit consumes it viaEnvironmentFile— theopenclaw-facade-auth-materializepattern. The value never enters the Nix store or this repo.Verification (laptop)
nix-instantiate --parseclean on both edited .nix files; targetednix evalagainstnixosConfigurations.amdresolves the unit's mergedExecStartPre(materialize script) +EnvironmentFile, and the sops secret path.GET /api/credential: exactly onemistralentry, active, stored value hash-matches the Bitwarden item (sha256 prefix144cdb68d8d89c4b, len 45) — value never printed.Deploy = the next fleet switch (this PR's generation), then
bin/sync-models.mjsonce for the mistral catalog, then live completion proofs per leg with route-attempt records.Open in [code]smith · Need help on this PR? Tag
@codesmith-botwith what you need.