Connect a provider

Providers by API key

What exists today under the words “API key”, what does not, and what would have to be written before a model could be reached that way.

PLANNEDWritten and covered by tests, not yet observed in a live runDeskworth · published · updated · 3 sources · Deskworth OS 0.0.48

Nothing is written yet. This page says what is missing.

Still missingNo model is reached by API key today. Every model call goes through a vendor CLI that you installed and signed into yourself. What exists is a written register of twelve adapters, their transport, their authentication, what each vendor announces, and not one line of adapter code. This page exists so the question has an answer instead of a silence.

#Two different things share one phrase

“API key” means one thing when it buys model tokens and another when it opens a market data feed. Deskworth uses the second and not the first, and merging the two in a sentence would be the easiest way to imply a capability that does not exist.

  • AVAILABLEData vendor keys, market data, macro seriesSeveral tools read from named vendors, and some of those vendors need a key. The tools refuse cleanly and say so when the key is absent, rather than silently falling back to another source. Keys live in the macOS keychain.
  • AVAILABLEPublic sources with no key at allFilings, European central bank series, the delayed option chain, the public state of a source repository: these read without any credential, and that is worth knowing before you go looking for a key.
  • PLANNEDA written register of twelve API adaptersThe descriptors exist and are published in the matrix on the previous page: transport, authentication, announced capabilities, official source, date read, and what is missing for each. A descriptor is not an adapter, and the manifest says so in its own words.
  • PLANNEDA model reached directly by API keyNo adapter, no contract, no code. It is not a switch waiting to be flipped: a card is a real terminal driving a real process, and an API adapter would be a second, different way for an agent to exist.

#Why the CLI, and not the API

The decision is not about cost. Driving the CLI you sign in to yourself means Deskworth never holds your CLI sign-in, never meters your usage, and never becomes a party to your vendor relationship. It also means the trace shows a real process with a real command line, reproducible by hand outside the application, which an internal API call would not be.

The price of that decision is written down too: Deskworth depends on what each CLI publishes. Usage is shown when the CLI publishes it and reported as unavailable when it does not, and a vendor that changes its stream format changes what one adapter can read.

#What would have to exist first

  • A place for a model credential that is not the vendor CLI’s own store, which means a second secret to protect, and a reason good enough to justify it.
  • A trace that stays honest without a process: today every line of trace is an event from a real stream, and the raw output stays openable underneath. An API adapter would have to produce the same, not a reconstruction.
  • A cancellation path with the same guarantee as killing a process.
  • A usage report that says nothing rather than guessing, exactly as the current header does.

LimitUntil all four exist, this page stays PLANNED. It is deliberately not marked PREVIEW: preview means written and covered by tests but out of reach, and no adapter code exists at all, a descriptor is not an implementation.

#Sources

  1. The provider manifest, generated by the coreDeskworthinternal registry · providers-manifest.json · Deskworth OS 0.0.23 · lu à bcae42d · published 2026-09-10 · read 2026-09-10Internal document, not published
  2. Deskworth OS, product state at 0.0.23Deskworthinternal handover report · Deskworth OS 0.0.23 · commit produit 5968ef0 · lu à bcae42d · published 2026-09-10 · read 2026-09-10Internal document, not published
  3. The tool registry, mirrored on this siteDeskworthinternal registry · tool registry mirror of mcp::tools::TOOLS, crossed with the roles’ declared capabilities · read 2026-09-10Internal document, not published