Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 14 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,11 @@
> The `omniroute` package on npm is published by upstream — `npm install -g omniroute` installs **upstream**, not this fork;
> the dashboard update check and `omniroute update` know the difference and only offer releases of this repository.
>
> **Published right now:** the container tags `:next` and `:next-web`, built from the current default branch,
> plus installation from source. `:latest` and the desktop installers begin to exist when a versioned release
> is cut; until then every command below uses `:next`, so each one works exactly as written.
> **Published right now:** desktop installers for Windows, macOS and Linux, attached to every
> [GitHub Release](https://github.com/LMPrado-DZ23/OmniRoute/releases); the container tags `:latest`
> and the immutable `:X.Y.Z`; the rolling `:next` and `:next-web`, built from the current default
> branch; and installation from source. The commands below use `:latest` — pin `:X.Y.Z` when you
> need a deployment you can reproduce.

<div align="center">

Expand Down Expand Up @@ -730,7 +732,7 @@ of your shell history. → [CLI Integrations](docs/guides/CLI-INTEGRATIONS.md)
<table>
<tr><th align="left">Platform</th><th align="left">Install</th><th align="left">Highlights</th></tr>
<tr><td align="left" nowrap>📦 <b>GitHub Releases</b></td><td align="left" nowrap><a href="https://github.com/LMPrado-DZ23/OmniRoute/releases">installers for this fork</a></td><td align="left">Windows <code>.exe</code> · macOS <code>.dmg</code> · Linux <code>.AppImage</code></td></tr>
<tr><td align="left" nowrap>🐳 <b>Docker</b></td><td align="left" nowrap><code>docker run … ghcr.io/lmprado-dz23/omniroute:next</code></td><td align="left">Multi-arch <b>AMD64 + ARM64</b></td></tr>
<tr><td align="left" nowrap>🐳 <b>Docker</b></td><td align="left" nowrap><code>docker run … ghcr.io/lmprado-dz23/omniroute:latest</code></td><td align="left">Multi-arch <b>AMD64 + ARM64</b></td></tr>
<tr><td align="left" nowrap>🧪 <b>npm (upstream package)</b></td><td align="left" nowrap><code>npm install -g omniroute</code></td><td align="left">Installs the <b>upstream</b> build, not this fork</td></tr>
<tr><td align="left" nowrap>🖥️ <b>Desktop (Electron)</b></td><td align="left" nowrap><code>npm run electron:build</code></td><td align="left">Native window + system tray — <b>Windows / macOS / Linux</b></td></tr>
<tr><td align="left" nowrap>🎩 <b>Menu-bar (OmniRouteTray)</b></td><td align="left" nowrap><code>brew install --cask zoispag/tap/omniroute-tray</code></td><td align="left">Supervises &amp; auto-updates the server — <b>macOS</b></td></tr>
Expand Down Expand Up @@ -990,7 +992,7 @@ Auto-trigger by token threshold, flip on the adaptive dial, pin a named profile,
Pick the channel of **this fork** that fits you:

- **Desktop installer** — not published for this fork yet. When a version is released the `.exe` / `.dmg` / `.AppImage` for your OS appear on [GitHub Releases](https://github.com/LMPrado-DZ23/OmniRoute/releases), and opening one starts the server and the dashboard. Until then use Docker or source; both are supported.
- **Docker** — `docker run -d --name omniroute -p 127.0.0.1:20128:20128 -v omniroute-data:/app/data ghcr.io/lmprado-dz23/omniroute:next`
- **Docker** — `docker run -d --name omniroute -p 127.0.0.1:20128:20128 -v omniroute-data:/app/data ghcr.io/lmprado-dz23/omniroute:latest`
- **From source** (needs Node.js 22/24 LTS):

```bash
Expand Down Expand Up @@ -1046,10 +1048,10 @@ Use these only for clients that cannot attach `Authorization: Bearer ...`. Heade

```bash
docker run -d --name omniroute --restart unless-stopped --stop-timeout 40 \
-p 127.0.0.1:20128:20128 -v omniroute-data:/app/data ghcr.io/lmprado-dz23/omniroute:next
-p 127.0.0.1:20128:20128 -v omniroute-data:/app/data ghcr.io/lmprado-dz23/omniroute:latest
```

`:next` is the channel this fork publishes today, from the current default branch. `:latest` follows the highest **published** stable SemVer. It does not track git `main`. Pin `:X.Y.Z` for GitOps. See [Docker Release Channels](docs/guides/DOCKER_GUIDE.md#release-channels).The image pins **`OMNIROUTE_MEMORY_MB=1024`**. That is enough for the dashboard and a light chat. **Coding agents** (`POST /v1/responses` from Claude Code, Codex, Grok, …) need a much larger V8 heap or the process `FATAL ERROR`s at ~12 GiB under two overlapping long contexts. Size the container above the heap (native buffers sit outside V8):
`:latest` is a moving pointer: pulling it again later gives you whatever the newest stable release is by then. Pin `:X.Y.Z` for anything you need to reproduce. `:latest` follows the highest **published** stable SemVer. It does not track git `main`. `:next` is the rolling channel built from the current default branch, so it runs ahead of the last release. Pin `:X.Y.Z` for GitOps. See [Docker Release Channels](docs/guides/DOCKER_GUIDE.md#release-channels).The image pins **`OMNIROUTE_MEMORY_MB=1024`**. That is enough for the dashboard and a light chat. **Coding agents** (`POST /v1/responses` from Claude Code, Codex, Grok, …) need a much larger V8 heap or the process `FATAL ERROR`s at ~12 GiB under two overlapping long contexts. Size the container above the heap (native buffers sit outside V8):

| Workload | Heap (`-e OMNIROUTE_MEMORY_MB`) | Container (`--memory`) |
| ----------------------------------- | ------------------------------- | ---------------------- |
Expand All @@ -1060,19 +1062,18 @@ docker run -d --name omniroute --restart unless-stopped --stop-timeout 40 \
```bash
docker run -d --name omniroute --restart unless-stopped --stop-timeout 40 \
-e OMNIROUTE_MEMORY_MB=8192 --memory=10g \
-p 127.0.0.1:20128:20128 -v omniroute-data:/app/data ghcr.io/lmprado-dz23/omniroute:next
-p 127.0.0.1:20128:20128 -v omniroute-data:/app/data ghcr.io/lmprado-dz23/omniroute:latest
```

Full table: [Docker Guide — runtime RAM](docs/guides/DOCKER_GUIDE.md#runtime-ram-for-coding-agents).

> **About the `:next` channel:** `ghcr.io/lmprado-dz23/omniroute:next` and
> `ghcr.io/lmprado-dz23/omniroute:next-web` follow the current default `release/v*`
> branch, and today they are the only images this fork publishes. They are mutable:
> pulling again later can give you a different build, so for a reproducible
> deployment pin the digest that
> branch, so they run ahead of the last release. They are mutable: pulling again later
> can give you a different build, so for a reproducible deployment use an immutable
> `:X.Y.Z` tag, or pin the digest that
> `docker image inspect ghcr.io/lmprado-dz23/omniroute:next --format '{{index .RepoDigests 0}}'`
> reports. Immutable `:X.Y.Z` tags and the stable `:latest` pointer appear once a version
> is released. See [Docker Release Channels](docs/guides/DOCKER_GUIDE.md#release-channels).
> reports. See [Docker Release Channels](docs/guides/DOCKER_GUIDE.md#release-channels).

**🥟 Bun**

Expand Down
11 changes: 8 additions & 3 deletions docs/guides/DOCKER_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -483,9 +483,14 @@ Multi-platform manifest: `linux/amd64` + `linux/arm64` native (Apple Silicon, AW

### Release Channels

> **What exists today for this fork:** only `:next` and `:next-web`. No versioned release has been
> published yet, so `:latest`, `:latest-web` and the immutable `:X.Y.Z` tags are not resolvable and the
> examples in this guide use `:next`. The rows below describe what each channel means once releases begin.
> **What exists today for this fork:** the first versioned release was published on 2026-09-19, so
> `:latest`, `:latest-web` and the immutable `:X.Y.Z` tags now point at real images, alongside the
> rolling `:next` and `:next-web` — all five resolve for an anonymous pull. **`:main` and `:main-web`
> do not exist here** (verified: `404`); this fork develops on `release/v*` branches, not on `main`,
> so the `:main` row below describes the channel's meaning, not something you can pull. `:latest`
> only moves when the version being published is the highest stable SemVer —
> `scripts/ci/should-promote-latest.sh` compares it against every `v*` tag first, and a pre-release
> identifier never promotes it.

OmniRoute publishes separate Docker channels for stable releases, active release-branch testing, and development builds.

Expand Down
Loading