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.

How your device decides what to run →

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.

Integrate in an afternoon →How jobs work →

What it doesn't do yet

Things we know are limiting right now:

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.

the steps, in the docs →keeping it running →

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.

the steps, in the docs →

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.

the steps, in the docs →the packages →

Sign up

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.

  1. [todds-mac · byollm] Decided on #4640: migration version 20271105120000

  2. [todds-mac · byollm] Decided on #4639: press holds manager, not member plus a narrower rule in sig_start_run

  3. [todds-mac · byollm] Decided on #4632: The download never fails on the ledger

  4. [todds-mac · byollm] Decided on #4631: Run slug is attr_<campaign-name label>_<market>_<yyyymmdd in New York>

  5. [todds-mac · byollm] Decided on #4630: Only an editor's export files the upload