Skip to content

Eugene Plexus v0.1.0

Choose a tag to compare

@troycorbinz troycorbinz released this 03 Oct 03:28
· 373 commits to main since this release

The first release. Version 0.1 in the old sense: it works, it is early, and
it has rough edges and known limits, listed below. It is not a claim of
production readiness. Start with the
installation guide.

alpha.6, alpha.5 and alpha.4 update from the console: Machines → the
machine → Versions → Update (alpha.5 and alpha.4 show it as Nodes →
Versions), or run the installer again. See Moving to v0.1.0.

Changes since alpha.6

Cache-aware balancing

  • A conversation goes back to the copy of a model that already holds it.
    Agent clients such as Claude Code and Codex resend their whole conversation
    every turn; on the copy that remembers it, that turn starts sooner. One
    Claude Code session on two copies of an 8B model went from 52.8% of its
    prompt reused and 6.0 s a turn to 75.3% and 3.2 s.
  • A new conversation goes to the copy holding the fewest conversations per
    slot
    (loadBalancing: spread, the new default). conversationAffinity is
    its own setting, on by default, for every placement.
  • A llama.cpp server is never sent more than its memory holds. Eugene reads
    each server's context pool from the server itself, keeps a running total of
    what the turns in progress need, and holds a turn for a moment when it will
    not fit, instead of letting the server refuse it or cut a reply off.
  • A full server is busy, not broken. It no longer trips the circuit breaker
    and takes healthy copies out of service, and Claude Code and Codex are told
    to retry rather than stop. On an 8B model with four agents per copy, 204 of
    204 turns now answer, where 46 did.
  • The Metrics page shows cached tokens and evictions per copy: a turn that
    went back home and found its history gone is a sign that model needs more
    memory or another copy.
  • Slot pinning, a per-profile setting for llama.cpp, off by default, gives
    each conversation its own slot and never sends a request to a slot that is
    still busy.
  • The research behind it, with every number:
    Sending each conversation home.

Agent clients reuse more of their prompt

  • Claude Code's per-session header no longer defeats the prompt cache. A
    new Claude Code session on a local model reads about 1,860 tokens instead of
    about 19,700.
  • Claude Code works on Qwen 3.5 and later models, whose templates refused
    its mid-conversation system messages (it answered 0 of 20 requests; now
    20 of 20). How those messages are folded is a gateway setting,
    inConversationSystem.
  • A template refusal no longer takes a model out of service for every
    other client.
  • vLLM now reports its cached tokens, so the Metrics page shows them.

Open WebUI in the app registry

  • Install Open WebUI from Apps, in an operating-system account of its own
    on a Windows service or a Linux system install. People sign in to it with
    their Eugene accounts.
  • People can have an optional email address, which Open WebUI uses as their
    identity.

Fixes

  • A confirmation inside a table row no longer widens the page: the row's
    other buttons step aside while it asks
    (ui #14).
  • A recovery checkpoint keeps an app's own data on a Linux system install,
    such as Workbench's chats
    (specs #11).
  • Flash attention is On, Off or not set, and not set lets llama.cpp
    decide. A profile saved with it unticked before now reads as not set, never
    as off (agent #6).

Known issues

  • A Claude Code turn reserves its whole answer allowance. The memory budget
    counts a turn's max_tokens in full, and Claude Code asks for 32,000, so a
    llama.cpp server with a 64k-token pool runs one Claude Code turn at a time
    where two would usually fit. The others wait, they do not fail.
  • With many llama.cpp servers on one machine, a reply can stall. llama.cpp
    pauses for several seconds while it saves and restores its prompt cache;
    several pauses in a row trip Eugene's 30-second stall check. In our tests,
    3 turns in 3,808.
  • Brave's rate-limit headers are read as Brave documents them; they have not
    been seen from a live Brave account by us.

Verification and limits

  • The exact pins passed Windows and Linux CI, the installer suites, and
    container acceptance before the image was published.
  • The packaged installers passed a clean install on Windows and in WSL, as
    recorded in the release record.
  • Upgrading alpha.6 in place on a Linux system install in WSL, as recorded
    there.
  • Cache-aware balancing was measured with 64 real Claude Code and Codex
    sessions on up to eight llama.cpp servers
    (record); Open WebUI
    passed 39 of 39 on GitHub's Windows and Ubuntu runners
    (record). The
    support matrix links the rest.
  • An Intel Arc has now been checked on a tester's machine.
  • Still owed:
    • two physical cards in one machine;
    • models on a passed-through NVIDIA card in the container;
    • a physical Mac;
    • modest-GPU capacity;
    • native Linux unattended boot;
    • the Windows reboot-before-sign-in checks;
    • moderated sessions with people new to Eugene.
  • Use a trusted LAN or VPN, and finish first-run setup before enabling remote
    access.

Moving to v0.1.0

  • From alpha.6, alpha.5 or alpha.4: update each machine from any console
    (Machines → the machine → Versions → Update; on alpha.5 and alpha.4,
    Nodes → Versions). Or run the installer again:
    • Windows:
      irm https://eugeneplexus.com/releases/v0.1.0/install.ps1 | iex
    • Linux or macOS:
      curl -fsSL https://eugeneplexus.com/releases/v0.1.0/install.sh | sh
  • From alpha.3: run the installer again, the command above. It keeps your
    passphrase, models, client keys and joined machines.
  • The container: select ghcr.io/eugene-plexus/control-plane:v0.1.0 and
    keep the same data folder.
  • From alpha.2: a fresh install, as the
    alpha.3 notes describe.
  • A saved load-balancing choice: a loadBalancing the gateway wrote for
    you moves to the new default, spread; one you chose is kept, and the old
    conversation value reads as the default with affinity on.

Make a checkpoint before updating, as the
recovery guide describes. A checkpoint
made on alpha.6 restores alpha.6.

Distribution

The GitHub release
provides install.ps1, install.sh, manifest.json and SHA256SUMS.

  • The tag is annotated and immutable.
  • The manifest records the specs commit and all seven component commits,
    the built UI export included. That export's join commands name the v0.1.0
    installer, so a worker installs the version its root runs.
  • Workbench and Open WebUI install from the agent's catalogue at versions
    pinned in the agent, so what an install offers is fixed by the release.

The Linux amd64 image is built from the tag and published only after container
acceptance passes (29 checks): ghcr.io/eugene-plexus/control-plane:v0.1.0,
digest sha256:53114c69f5504e36aebba3fdb28e14d62066bbe478e10b649cc22dbf452543d0.
The alphas' tags, assets, containers and website installer URLs remain
available.

These pins fix Eugene's source, not every upstream dependency: Python packages,
uv, engine downloads and model catalogue data can change.