← Changelog

octet 0.4.0

Ygg v0.4.0 is a stable native-integration, session-performance, navigation, and presentation release. It includes the terminal application, the versioned ygg-host process protocol, and the separately packaged, loopback-only Ygg Serve web interface.

Ygg and its extensions are not operating-system sandboxes. They run with the authority of the user who launches them; use OS isolation for untrusted workspaces, models, or extension packages.

Install Ygg#

Ygg requires rg (ripgrep). The version-pinned installer selects and verifies a prebuilt binary for GNU/Linux x86-64, macOS x86-64, or macOS Apple silicon:

curl --proto '=https' --tlsv1.2 -LsSf \
  https://github.com/skaft-software/ygg/releases/download/v0.4.0/install-ygg.sh | sh

The default installation does not require Rust. To compile the pinned release instead, install Rust 1.86 or newer and run:

curl --proto '=https' --tlsv1.2 -LsSf \
  https://github.com/skaft-software/ygg/releases/download/v0.4.0/install-ygg.sh \
  | sh -s -- --from-source

Or use Cargo directly without changing a shell profile:

cargo install --locked \
  --git https://github.com/skaft-software/ygg \
  --tag v0.4.0 \
  --bins \
  ygg-coding-agent

Verify the installation with ygg --version and ygg --help. The installer and Cargo command also install ygg-host; see the native host protocol for embedding Ygg from another application.

Install Ygg Serve#

The graphical interface is an optional application extension. The normal Ygg binary does not contain its web server or embedded frontend.

ygg extension install ygg-serve
ygg serve

The official package must exactly match Ygg 0.4.0. Supported artifacts are provided for GNU/Linux x86-64 (x86_64-unknown-linux-gnu), macOS x86-64, and macOS Apple silicon. Linux musl targets are not supported by this release. To install a package downloaded separately:

ygg extension install --path ./ygg-serve-0.4.0-TARGET.tar.gz

Lifecycle commands are:

ygg extension list
ygg extension update ygg-serve
ygg extension remove ygg-serve

Serve binds IPv4 loopback only. ygg serve --no-open --port 0 starts it without opening a browser and asks the operating system for a free port. Removing the package preserves sessions and other user data.

Highlights#

  • The new ygg-host binary exposes protocol v1 over bounded NDJSON for native application integrations, with streaming events, ordered typed image/audio input, inline and configured providers, durable session creation/resume, and seeded history.
  • Headless tool confirmations are denied, typed input requests are cancelled, and consumers can cancel a run by terminating the dedicated process group they created for the host. Release archives and installers ship both Ygg binaries.
  • Existing Codex credentials can be copied on first use from the owner-only Codex or Hamr stores into Ygg's owner-only store without changing the source.
  • Serve session inventory now uses bounded, targeted catalog scans, and resume hands the already authorized transcript descriptor directly to the worker. On the isolated 891-transcript fixture, startup improved from 43.01 seconds to 19.41 seconds; large-session resume completed in 2.39 seconds.
  • Catalog and resume regressions cover corrupt, symlinked, and trashed sessions, unsafe metadata, active-branch model selection, and pathname replacement after descriptor authorization.
  • /overview now loads session inventory without creating or opening a provisional task, including reconnects and navigation races.
  • The Fleet command center prioritizes sessions needing attention and supports task and project search, while sidebar activity indicators make running work visible.
  • Prompts submitted during an active graphical run steer by default, failed selection no longer moves to a broken focused surface, and retries preserve the intended route mode.
  • The graphical source viewer shows line numbers.
  • Configured-provider acceptance now exercises bearer auth/model selection, streamed text and tool replay, 429/408 retries, explicit compaction, restart/resume, cancellation, and secret-safe provider/phase failures against a disposable loopback fixture. Credentialed checks remain separately protected and optional.
  • Release dependency gates audit both lockfiles. Serve remains on audited lopdf 0.42.0, and a hostile-input regression verifies that a 4,096-level PDF is rejected by Ygg's bounded preflight before parser entry.
  • Plain no-color terminal output no longer acquires an ANSI reset when a line is truncated, and compact footer costs use three significant figures.
  • Redundant interactive /tool, /docs, /sessions, and /cycle-model commands were removed; top-level ygg sessions remains available.
  • /help and the source-checkout system prompt now expose local self-documentation paths when Ygg is run from its own repository.

Release acceptance#

The deterministic configured-provider matrix passed on the local release worktree on 2026-08-10. Credentialed OpenAI Responses, Anthropic Messages, OpenAI Chat, and native-audio representatives were not run because no live release credentials were available. That optional check is explicitly waived for v0.4.0; release packaging records the waiver and does not require provider secrets. See the configured-provider acceptance record.

See the changelog, extension documentation, and security policy for the complete behavior and boundaries.