BYOLLM Cloud
BYOLLM – Bring Your Own LLM – lets you use your own AI on websites you authorize.
A small program installed on your machine lets you use your own models and subscriptions on any BYOLLM-integrated site, including new models the moment you get access – no site updates required. BYOLLM Cloud connects sites to your devices with end-to-end encryption, so no one, including us, can see your data.
BYOLLM is open source (MIT). Learn more on byo-llm.com →
Why it matters
For you
- Your favorite model, everywhere you go.
- New models the moment you get them – not when a site gets around to adding them.
- Encrypted end-to-end. Your prompts go to your own device; byollm.cloud can't read them.
- Sites never learn which model you use, and your subscriptions are never shared.
- Pay less. Sites that don't pay for AI can charge you less – or nothing.
For sites and developers
- Zero AI bills. Your users bring their own compute.
- No floating money – you don't pay LLM bills up front and hope to collect later, and you never ask people to prepay just to try you.
- Free trials that cost you nothing to offer.
- Ship the AI features you kept private for fear of the API bill.
- One small integration. Your users choose the models.
What it doesn't do yet
Things we know are limiting right now:
- Tool use
- Access to your local files
- Streaming — a result comes back whole
- Job kinds beyond llm.generate and llm.chat — no embeddings or images yet
- Jobs while your device is offline — your device has to be online for your jobs to run
We have plans for every one of these, and we are building in public.
How it works
Your device
The byollm program runs on your computer. It knows which AI services you have set up: free open-source models on your machine, metered services you pay per use, or your own subscriptions like Claude Pro/Max. When a website you have enabled sends work, your device runs it with the service you chose. Your prompts are encrypted end-to-end to your own device. byollm.cloud passes them along and cannot read them.
Sites
A website that wants to use BYOLLM says what it needs — "writing help," "chat," and so on. When you connect the site, you pick which of your services answers each one. The site never learns which model you use. You can turn a site off at any time, and it stops getting your work.
Teams (optional)
A team lets you share what runs on your devices with people you name — the free open-source models on your machine, or a metered service with a spending limit you set. Your subscription accounts (like Claude Pro/Max) are never shared with anyone. That is a rule, not a setting.
byollm.cloud (or your own relay)
Many sites, many devices, many people. byollm.cloud keeps track of who has allowed what and sends each job to the right device. It never sees your prompts. If you would rather run this part yourself, the relay is open source — you can run your own instead of using byollm.cloud.
You already have an AI. Hand it this.
Paste the prompt into whatever you use — Claude, ChatGPT, Codex, Cursor, a local model — and it does the setup, stopping where a step needs you.
Set up my computer
Set up BYOLLM on my computer so websites I approve can use the AI I already have. Some steps need me at the keyboard: tell me exactly what to type, then wait. First I open Terminal (Mac) or PowerShell (Windows). Run `node --version`; if it fails or is below 22.14, I install the LTS version of Node.js — the free program BYOLLM runs on — from https://nodejs.org and reopen the window. Then run `npm install -g byollm@latest`. Then I run `byollm setup` myself, because it asks questions: it finds what I have (Ollama, MLX or llama.cpp here, or my Claude Pro/Max or Codex sign-in — subscriptions stay mine, never shared) and pairs with byollm.cloud. When it prints a pairing code and fingerprint, STOP: I approve it at https://dashboard.byollm.cloud/devices and check the fingerprint matches. Then run `byollm status` and `byollm services`, fix anything they name, and `byollm start` if it is not running. Finish by having me press Connect at https://test.byollm.cloud. Reference: https://docs.byollm.cloud/#what-is-byollm and https://docs.byollm.cloud/#keep-daemon-running. Don't guess commands: `byollm --help` is the authority.
Add BYOLLM to my site
Add BYOLLM to this project so my users bring their own AI. Install
`@byollm/server`, generate site keys once with
`npx --package @byollm/server keygen` and put them in env (never in the
repo), mount the handler at `/byollm` (not under `/api` — the daemon pairs
with an origin), and add one `enqueue` with a timeout and a no-runner path —
never a bare await. Then register the site at https://dashboard.byollm.cloud
and add the Connect button exactly as https://docs.byollm.cloud/#embed says:
the iframe gets `site`, `state` and `return`, the page posts
`{ byollm: "hello" }` first, and the return page posts
`{ byollm: "connected" }` and closes. Job states and why an answer stopped:
https://docs.byollm.cloud/#job-states and
https://docs.byollm.cloud/#stop-reason. Test against
https://test.byollm.cloud's flow before you tell me it works. STOP and ask
me for anything that needs my dashboard login.Run my own relay
Stand up my own BYOLLM relay instead of byollm.cloud. Use `@byollm/relay` and `@byollm/control-plane` from npm — one replica on the built-in memory store, or give the relay a shared `RoutingStore` to run more — and prove it with `@byollm/conformance` (`npx --package @byollm/conformance byollm-certify <target>`) before pointing any daemon at it: a server is byollm-compatible when the kit passes. Then pair a daemon with `byollm connect <my relay origin>`. The relay never sees prompts (https://docs.byollm.cloud/#what-we-see) and that must stay true in my deployment. Reference: https://github.com/oftomorrowinc/byollm#packages. STOP and ask me before anything that costs money or opens a port to the internet.
Not ready to sign up? Join the list and we will email you when we release something new.
The build log
The whole log →What the people and agents building BYOLLM did, as the ledger recorded it — newest first.
[todds-mac · byollm] Decided on #4640: migration version 20271105120000
[todds-mac · byollm] Decided on #4639: press holds manager, not member plus a narrower rule in sig_start_run
[todds-mac · byollm] Decided on #4632: The download never fails on the ledger
[todds-mac · byollm] Decided on #4631: Run slug is attr_<campaign-name label>_<market>_<yyyymmdd in New York>
[todds-mac · byollm] Decided on #4630: Only an editor's export files the upload