33[ ![ ci] ( https://github.com/TheStreamCode/hermes-muse-code/actions/workflows/ci.yml/badge.svg )] ( https://github.com/TheStreamCode/hermes-muse-code/actions/workflows/ci.yml )
44
55Use Meta ** Muse Spark** in [ Hermes Agent] ( https://github.com/NousResearch/hermes-agent )
6- billed to your ** Muse Code monthly subscription** — no pay-as-you-go API key.
6+ billed to your ** Muse Code monthly subscription** — no pay-as-you-go API key required .
77
8- Hermes' built-in ` meta-ai ` provider only accepts explicit API keys, so
9- subscription users burn pay-as-you-go tokens there while the same model bills
10- to their subscription elsewhere (upstream: Hermes issue
11- [ #102535 ] ( https://github.com/NousResearch/hermes-agent/issues/102535 ) , PR
12- [ #102536 ] ( https://github.com/NousResearch/hermes-agent/pull/102536 ) — macOS
13- only). This plugin closes the gap wherever the ` omp ` CLI is installed by
14- reusing its Muse Code login.
8+ Hermes' built-in Meta provider only accepts explicit API keys, so subscribers
9+ end up metered twice: once for the subscription, once per token. This plugin
10+ adds a ` muse-code ` provider that reuses the local ` omp ` login, routing the
11+ same models through the subscription you already pay for.
1512
1613## Requirements
1714
15+ - Hermes Agent ` >= 0.21.3 `
1816- The ` omp ` CLI (Oh My Pi) with an active Muse Code login
1917
2018One-time login (browser OAuth, done once in ` omp ` ):
@@ -36,28 +34,27 @@ hermes plugins install TheStreamCode/hermes-muse-code --enable
3634hermes chat -m muse-spark-1.3 --provider muse-code
3735```
3836
39- Or pick provider ` muse-code ` from ` hermes model ` . Available models are the
40- Muse Spark family (` muse-spark-1.1/ 1.2/ 1.3 ` , ` -contributor ` tiers).
37+ Or pick provider ` muse-code ` from ` hermes model ` . Serves the Muse Spark
38+ family (` muse-spark-1.1 ` / ` 1.2 ` / ` 1.3 ` , including ` -contributor ` tiers).
4139
4240## Configuration
4341
4442| Variable | Purpose | Default |
4543| ---| ---| ---|
46- | ` MUSE_CODE_SUB_TOKEN ` | Explicit subscription key. Wins over the auto-fetch; set this to pin a key manually. | _ (fetched from ` omp ` )_ |
44+ | ` MUSE_CODE_SUB_TOKEN ` | Explicit subscription key. Wins over the auto-fetch; set it to pin a key manually. | _ (resolved from ` omp ` )_ |
4745| ` HERMES_MUSE_CODE_SUB_AUTO ` | Set to ` 0 ` to disable the automatic ` omp ` lookup. | ` 1 ` |
4846
4947## How it works
5048
51- On load the plugin runs ` omp token muse-code --raw ` (a JSON blob;
52- ` omp ` owns OAuth + refresh), extracts the subscription-bound ` apiKey `
53- field, and exposes it as ` MUSE_CODE_SUB_TOKEN ` for a regular ` api_key `
54- provider against ` https://api.meta.ai/v1 ` over the Responses API
55- (` codex_responses ` , same wire as the bundled ` meta-ai ` provider, so prompt
56- caching applies). The key lives only in process memory and is never logged.
57- Each fresh ` hermes ` process resolves a fresh key; explicit configuration
58- always keeps priority. A standalone login flow inside the plugin is
59- deliberately out of scope: Meta's OAuth client is private to the official
60- apps, so reusing their login is the only stable path.
49+ On load the plugin runs ` omp token muse-code --raw ` (` omp ` owns OAuth and
50+ refresh), takes the subscription-bound ` apiKey ` from the returned credential,
51+ and exposes it as ` MUSE_CODE_SUB_TOKEN ` for a standard ` api_key ` provider
52+ against ` https://api.meta.ai/v1 ` over the Responses API — the same wire as
53+ the bundled Meta provider, so prompt caching applies. The key lives only in
54+ process memory and is never logged. Every fresh ` hermes ` process resolves a
55+ fresh key; explicit configuration always takes precedence. A standalone login
56+ flow inside the plugin is deliberately out of scope: the OAuth client belongs
57+ to the official apps, so reusing their login is the only stable path.
6158
6259## Troubleshooting
6360
@@ -68,6 +65,7 @@ apps, so reusing their login is the only stable path.
6865- ** Long-lived gateway workers** — the key is resolved once per process:
6966 ` hermes chat ` always gets a fresh one, but restart gateway workers after
7067 an ` omp ` credential rotation.
68+ - ** No ` omp ` on PATH** — the plugin silently skips; install ` omp ` first.
7169
7270## Contributing
7371
0 commit comments