From bfe0d0c7473ca38ddd89193778efdf3b51aabd2c Mon Sep 17 00:00:00 2001 From: macbook Date: Sun, 7 Jun 2026 11:18:19 +0300 Subject: [PATCH 1/4] docs(byok): add Atomic Chat as a local OpenAI-compatible provider MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Atomic Chat (https://atomic.chat) runs open-weight models on-device and exposes an OpenAI-compatible server, so Droid can be used fully locally via BYOK (generic-chat-completion-api). Tested locally with droid 0.108.0 against Atomic Chat's server on 127.0.0.1:1337 (Qwen3-5-9B) — droid exec returned a successful response. Co-Authored-By: Claude Opus 4.8 --- docs/cli/byok/atomic-chat.mdx | 71 +++++++++++++++++++++++++++++++++++ docs/docs.json | 1 + 2 files changed, 72 insertions(+) create mode 100644 docs/cli/byok/atomic-chat.mdx diff --git a/docs/cli/byok/atomic-chat.mdx b/docs/cli/byok/atomic-chat.mdx new file mode 100644 index 000000000..467811fea --- /dev/null +++ b/docs/cli/byok/atomic-chat.mdx @@ -0,0 +1,71 @@ +--- +title: Atomic Chat +description: Run open-weight models locally through Atomic Chat's OpenAI-compatible server +keywords: ['atomic chat', 'local', 'self-hosted', 'byok', 'offline', 'on-device', 'openai-compatible', 'privacy'] +--- + +[Atomic Chat](https://atomic.chat) is a private, local AI app (macOS, Windows, Linux, iOS, Android) that runs open-weight models on-device and exposes an OpenAI-compatible server. Point Droid at it via BYOK and run agentic coding fully locally — no cloud, no API keys. + +Atomic Chat is model-agnostic: it serves whichever model you have loaded (Llama, Gemma, Qwen, Mistral, Phi, and others from Hugging Face), and can also route to cloud providers. It even ships a one-click **Run Droid** action in the app. + + + **Performance Notice**: Models below 30 billion parameters have shown significantly lower performance on agentic coding tasks. For production coding, load a larger coding-focused model in Atomic Chat (e.g. a 30B+ Qwen Coder). Smaller models (7B, 13B) are great for experimentation and offline use. + + +## Configuration + +Add to `~/.factory/settings.json`: + +```json +{ + "customModels": [ + { + "model": "unsloth/Qwen3_5-9B-GGUF-Qwen3_5-9B-IQ4_XS", + "displayName": "Atomic Chat", + "baseUrl": "http://127.0.0.1:1337/v1", + "apiKey": "atomic", + "provider": "generic-chat-completion-api", + "maxOutputTokens": 16384 + } + ] +} +``` + + + The `model` value must **exactly match** the model id Atomic Chat is currently serving. Atomic Chat serves the model you have loaded in the app and matches requests by id — if the id doesn't match, the server returns `404 No running session found for model ...`. Run `curl http://localhost:1337/v1/models` to see the exact id of the active model. + + +## Setup + +1. Install Atomic Chat from [atomic.chat](https://atomic.chat) +2. Download and load a model in the app (**Models** tab). The local server starts automatically at `http://127.0.0.1:1337/v1`. +3. Confirm the active model id: + ```bash + curl http://localhost:1337/v1/models + ``` +4. Add the configuration above to your Factory config, setting `model` to that id. +5. Run Droid against it: + ```bash + droid exec -m custom:Atomic-Chat-0 "Say hi in one short sentence." + ``` + + + The server binds to `127.0.0.1` by default for privacy. To use Atomic Chat from another machine on your LAN, set `host: 0.0.0.0` in Atomic Chat's settings and update `baseUrl` accordingly. + + +## Troubleshooting + +### `404 No running session found for model ...` +- The `model` id in your config doesn't match the model Atomic Chat is serving. +- Check the active id with `curl http://localhost:1337/v1/models` and set `model` to match. + +### Local server not connecting +- Make sure Atomic Chat is running and a model is loaded. +- Check the server: `curl http://localhost:1337/v1/models` +- Confirm nothing else is using port `1337`. + +## Notes + +- Everything runs on-device — your code and prompts stay local. +- Any `apiKey` placeholder works (the local server doesn't require authentication). +- Atomic Chat can also proxy to cloud providers; use the locally served id either way. diff --git a/docs/docs.json b/docs/docs.json index 8f2f75378..1e357cf88 100644 --- a/docs/docs.json +++ b/docs/docs.json @@ -117,6 +117,7 @@ "group": "Bring Your Own Key", "pages": [ "cli/byok/overview", + "cli/byok/atomic-chat", "cli/byok/baseten", "cli/byok/deepinfra", "cli/byok/fireworks", From a1de3596e1b283d837e1c886b900bcff141331dc Mon Sep 17 00:00:00 2001 From: macbook Date: Sun, 7 Jun 2026 11:27:30 +0300 Subject: [PATCH 2/4] docs(byok): tighten Atomic Chat intro, drop platform list + perf note Co-Authored-By: Claude Opus 4.8 --- docs/cli/byok/atomic-chat.mdx | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/docs/cli/byok/atomic-chat.mdx b/docs/cli/byok/atomic-chat.mdx index 467811fea..b1df6d48d 100644 --- a/docs/cli/byok/atomic-chat.mdx +++ b/docs/cli/byok/atomic-chat.mdx @@ -4,13 +4,9 @@ description: Run open-weight models locally through Atomic Chat's OpenAI-compati keywords: ['atomic chat', 'local', 'self-hosted', 'byok', 'offline', 'on-device', 'openai-compatible', 'privacy'] --- -[Atomic Chat](https://atomic.chat) is a private, local AI app (macOS, Windows, Linux, iOS, Android) that runs open-weight models on-device and exposes an OpenAI-compatible server. Point Droid at it via BYOK and run agentic coding fully locally — no cloud, no API keys. +[Atomic Chat](https://atomic.chat) runs open-weight models locally (llama.cpp / MLX) and exposes an OpenAI-compatible server at `http://127.0.0.1:1337/v1`. Point Droid at it via BYOK to run agentic coding fully on-device — no cloud, no API keys. -Atomic Chat is model-agnostic: it serves whichever model you have loaded (Llama, Gemma, Qwen, Mistral, Phi, and others from Hugging Face), and can also route to cloud providers. It even ships a one-click **Run Droid** action in the app. - - - **Performance Notice**: Models below 30 billion parameters have shown significantly lower performance on agentic coding tasks. For production coding, load a larger coding-focused model in Atomic Chat (e.g. a 30B+ Qwen Coder). Smaller models (7B, 13B) are great for experimentation and offline use. - +It serves whichever model you load (Llama, Qwen, Mistral, Phi, and others from Hugging Face) and ships a one-click **Run Droid** action in the app. ## Configuration From dacdb55ddad43d4256711b848d2b43b9ea3f01e8 Mon Sep 17 00:00:00 2001 From: macbook Date: Sun, 7 Jun 2026 11:30:27 +0300 Subject: [PATCH 3/4] docs(byok): trim Atomic Chat intro to a single line (Ollama-style) Co-Authored-By: Claude Opus 4.8 --- docs/cli/byok/atomic-chat.mdx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/cli/byok/atomic-chat.mdx b/docs/cli/byok/atomic-chat.mdx index b1df6d48d..9e405e97d 100644 --- a/docs/cli/byok/atomic-chat.mdx +++ b/docs/cli/byok/atomic-chat.mdx @@ -4,9 +4,7 @@ description: Run open-weight models locally through Atomic Chat's OpenAI-compati keywords: ['atomic chat', 'local', 'self-hosted', 'byok', 'offline', 'on-device', 'openai-compatible', 'privacy'] --- -[Atomic Chat](https://atomic.chat) runs open-weight models locally (llama.cpp / MLX) and exposes an OpenAI-compatible server at `http://127.0.0.1:1337/v1`. Point Droid at it via BYOK to run agentic coding fully on-device — no cloud, no API keys. - -It serves whichever model you load (Llama, Qwen, Mistral, Phi, and others from Hugging Face) and ships a one-click **Run Droid** action in the app. +[Atomic Chat](https://atomic.chat) runs open-weight models locally (llama.cpp / MLX) and exposes an OpenAI-compatible server at `http://127.0.0.1:1337/v1`. ## Configuration From 6e7f33a5a78b5a910a257e834b24083abd2e683a Mon Sep 17 00:00:00 2001 From: macbook Date: Sun, 7 Jun 2026 11:32:53 +0300 Subject: [PATCH 4/4] docs(byok): tighten Atomic Chat setup/notes Co-Authored-By: Claude Opus 4.8 --- docs/cli/byok/atomic-chat.mdx | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/docs/cli/byok/atomic-chat.mdx b/docs/cli/byok/atomic-chat.mdx index 9e405e97d..7f715367c 100644 --- a/docs/cli/byok/atomic-chat.mdx +++ b/docs/cli/byok/atomic-chat.mdx @@ -26,26 +26,16 @@ Add to `~/.factory/settings.json`: ``` - The `model` value must **exactly match** the model id Atomic Chat is currently serving. Atomic Chat serves the model you have loaded in the app and matches requests by id — if the id doesn't match, the server returns `404 No running session found for model ...`. Run `curl http://localhost:1337/v1/models` to see the exact id of the active model. + The `model` value must **exactly match** the id Atomic Chat is serving (it matches requests by id; a mismatch returns `404 No running session found for model ...`). Get the active id with `curl http://localhost:1337/v1/models`. ## Setup 1. Install Atomic Chat from [atomic.chat](https://atomic.chat) -2. Download and load a model in the app (**Models** tab). The local server starts automatically at `http://127.0.0.1:1337/v1`. -3. Confirm the active model id: - ```bash - curl http://localhost:1337/v1/models - ``` -4. Add the configuration above to your Factory config, setting `model` to that id. -5. Run Droid against it: - ```bash - droid exec -m custom:Atomic-Chat-0 "Say hi in one short sentence." - ``` - - - The server binds to `127.0.0.1` by default for privacy. To use Atomic Chat from another machine on your LAN, set `host: 0.0.0.0` in Atomic Chat's settings and update `baseUrl` accordingly. - +2. Load a model in the app (**Models** tab) — the local server starts automatically. +3. Get the active model id: `curl http://localhost:1337/v1/models` +4. Add the config above, setting `model` to that id. +5. Run Droid: `droid exec -m custom:Atomic-Chat-0 "Say hi in one short sentence."` ## Troubleshooting @@ -61,5 +51,5 @@ Add to `~/.factory/settings.json`: ## Notes - Everything runs on-device — your code and prompts stay local. -- Any `apiKey` placeholder works (the local server doesn't require authentication). -- Atomic Chat can also proxy to cloud providers; use the locally served id either way. +- Any `apiKey` placeholder works; the local server doesn't require authentication. +- Bound to `127.0.0.1` by default. To use it across your LAN, set `host: 0.0.0.0` in Atomic Chat and update `baseUrl`.