Skip to content

eosllm 0.2.0

Choose a tag to compare

@github-actions github-actions released this 07 May 01:55
v0.2.0
e6af1ba

eosllm 0.2.0 — production-ready, multi-platform release pipeline

This is the first release that produces signed-or-unsigned binaries for
every supported desktop platform in a single tag-driven workflow.
It also ships the new eosllm-server HTTP/SSE daemon and the stable
--stream-jsonl CLI protocol that the companion VS Code + browser
extensions consume.

What's new

Engine portability

  • New Win32 OS shim (src/os/win32.c) — _aligned_malloc/_free,
    QueryPerformanceCounter, _fseeki64. Auto-installed by
    eos_init_defaults() on Windows.
  • WASM Phase F slots reserved (src/os/wasm.c,
    src/kernels/wasm/wasm.c) as EOS_E_UNSUPPORTED stubs so a future
    Emscripten build doesn't have to invent build-system real estate.

Multi-platform release pipeline (.github/workflows/release.yml)

  • 5 build jobs in parallel + a publish aggregator
    (linux x86_64, linux aarch64 cross+qemu, macOS arm64+x86_64
    lipo'd, windows x86_64 MinGW64, source).
  • SHA256SUMS over every artifact; optional SHA256SUMS.minisig.
  • Signing is gracefully gated on secrets: missing
    APPLE_DEVELOPER_ID_* / APPLE_NOTARY_* / WINDOWS_CERT_* /
    MINISIGN_* cause the corresponding artifact to ship unsigned
    with this note, instead of failing the whole release. See
    docs/release.md
    for the full secret list.

eosllm-cli --stream-jsonl (stable wire protocol)

One JSON record per token to stdout:

{"t":"<text>","i":<token_id>}

followed by a single terminator:

{"done":true,"reason":"eos|max|user|error","n_tokens":N,"ms":M,"tok_per_s":T}

Documented as a long-term contract in
docs/cli.md.
The VS Code extension and the browser extension parse this format.

eosllm-server (new binary)

Single-binary local HTTP/SSE daemon, pure C99 zero deps. Routes:
GET /healthz, GET /caps, POST /generate (SSE token stream).
Loopback bind by default; CORS default-deny with --allow-origin
allow-list. See
docs/server.md.

v1.0.0 ABI freeze candidate

docs/abi.md
now enumerates every public symbol intended to make the v1.0.0 promise,
plus the two out-of-band tooling contracts (CLI JSONL + server SSE).

⚠️ This release ships UNSIGNED

The maintainer's Apple Developer ID, Windows Authenticode cert, and
minisign key are not configured in this repo's GitHub Actions secrets
yet. As a result:

  • macOS: Gatekeeper will refuse to launch on first run. Bypass
    with one of:
    xattr -dr com.apple.quarantine eosllm-cli
    
    or right-click → Open the first time.
  • Windows: SmartScreen will warn on first launch. Click
    More info → Run anyway.
  • No SHA256SUMS.minisig is included. Verify integrity via
    sha256sum --check SHA256SUMS only.

The signing pipelines are wired and will activate the moment the
respective secrets are added — no code change required, just a re-tag.

Install

# Pick your platform (linux x86_64 example)
curl -L -o eosllm.tar.gz \
  https://github.com/embeddedos-org/eosllm/releases/download/v0.2.0/eosllm-0.2.0-linux-x86_64.tar.gz

# Verify
curl -L -o SHA256SUMS \
  https://github.com/embeddedos-org/eosllm/releases/download/v0.2.0/SHA256SUMS
sha256sum --check SHA256SUMS --ignore-missing

# Extract
tar xzf eosllm.tar.gz
cd eosllm-0.2.0-linux-x86_64

# Run a chat (need a Llama-class GGUF on disk)
./bin/eosllm-cli --model /path/to/model.gguf --prompt "Hello, " --max-tokens 64

# Or start the local HTTP/SSE daemon for the browser extension
./bin/eosllm-server &
curl http://127.0.0.1:7777/healthz   # → ok

Reproducible build

From the source tarball:

tar xzf eosllm-0.2.0-src.tar.gz
cd eosllm-0.2.0
make all-checks         # full ~5 min health gate (168/168 unit checks)

Companion extensions

Both run fully offline against this release's eosllm-server.

Full changelog

CHANGELOG.md
under the [Unreleased] heading documents each phase landed in this
release as a separate Added entry.