# Hyperia 0.12.7 is released: an agentic terminal for agents and humans

> Source: <https://github.com/DeepBlueDynamics/hyperia/releases>
> Published: 2026-06-20 16:20:09+00:00

# Releases: DeepBlueDynamics/hyperia

## 0.12.7

The first release under the **Hyperia-Terminal** name — the terminal app, now named distinctly from its `hyperia-sidecar`

backend. Same application, **updates in place** (app identity unchanged, so existing installs auto-update). Windows is **code-signed** (Azure Trusted Signing), macOS is **signed + notarized**, Linux ships as AppImage + deb.

## Highlights

**🎛️ Stream Deck Plus support**— a new companion daemon (`tools/deck-mcp`

) turns a Stream Deck Plus into a physical control surface: focus/split/new-tab your panes from the touch strip and dials, switch apps from the keys.**⌨️**— a first-class MCP client for scripts and lightweight agents: curated verbs (`hyperia`

CLI`status`

,`run`

,`split`

,`focus`

,`open`

,`cd`

, …), a`doctor`

health check, and a`guide`

. Build standalone with`yarn build:cli`

.**🐚 Shell integration**— panes report live working directory and running app, with safe`cd`

from the picker and agents.**🎯 Agent focus that moves the pane**—`terminal_focus`

(and the CLI / Stream Deck) now switch to the owning tab and focus the terminal, entirely in-window — no OS-window stealing.**🧠 Maximus structured extraction**— tool-result extraction uses JSON-schema structured output, reliable across models.

## Terminal & panes

- Pane focus fix:
`terminal_focus`

selects the pane's tab*and*focuses it; consent requests switch to the target pane so the prompt is visible. - Panes/tabs are addressed by
**name or id only**— the positional`a/b/c`

labels are gone (they confused agents). - Web panes show load status in the label (
**404 / Unreachable / page title / host**) instead of a placeholder; split + remount fixes. - Picker:
`cd`

via the shell-state dispatcher, recent-path filtering.

## Identity & consent

- New
tool cleanly separates`request_access`

*identity*(who you are) from*access*(consent to act on a pane). - Consent panel is a contained card; consent-wait timing fixed; secret-redaction hardening.

## Windows polish

- Taskbar/window/tray icon fixes:
`AppUserModelId`

set before window creation, tray uses`icon.ico`

, explicit`window.setIcon()`

, PNG→`nativeImage`

decode.

## Build & CI

- Windows signing
**degrades gracefully** to unsigned (with a loud warning) if Azure Trusted Signing is unavailable, so an outage never blocks the macOS/Linux release. `fail-fast: false`

+ resilient release gate — one platform failing no longer drops the others.

## Downloads

**Windows:**`Hyperia-Terminal-0.12.7-x64.exe`

(signed)**macOS:**`Hyperia-Terminal-0.12.7-mac-x64.dmg`

·`…-mac-arm64.dmg`

(signed + notarized)**Linux:**`Hyperia-Terminal-0.12.7-x86_64.AppImage`

·`Hyperia-Terminal-0.12.7-amd64.deb`

## Nightly Build (unsigned)

Automated **unsigned** nightly build from `canary`

(`2b4acd59aeaaa09085a2bd4b55890f908cd6da07`

).

These installers are **not code-signed**. Expect OS security prompts:

**Windows**— SmartScreen warning; choose*More info → Run anyway*.**macOS**— Gatekeeper block; right-click →*Open*, or run

`xattr -dr com.apple.quarantine /Applications/Hyperia.app`

.

For signed, notarized releases use the tagged versions on the Releases page.

## 0.11.1

```
v0.11.1

Hyperia v0.11.1 — containerized sidecar deployment (Topology A) + use…
```

## 0.10.32

This release provides certificate signing for Mac and Windows as well as native Mac chip support for newer OSs.

Lots of new fixes, including colored tabs, shell pickers, Stickys notes and more.

## v0.10.9 — Local model reliability + LAN-reachable sidecar

Co-developed live with Antigravity (Gemini 3.5 Flash) over a shared workspace pane.

## Highlights

### Local model reliability — structured JSON + parallel candidates + `"none"`

tool sentinel

`OllamaProvider::stream`

now constrains Ollama's output to a strict JSON schema (`thought`

+ optional `tool_call`

+ optional `reply`

) via Ollama's `format`

field, and runs **N=3 parallel candidate generations** at different temperatures (0.2 / 0.7 / 0.9). The first candidate whose JSON validates against the active tool schema wins; the rest are aborted via `tokio::select!`

to free GPU memory.

A `"none"`

sentinel was added as a valid `tool_call.name`

value, so when the model has nothing to call it must explicitly select `"none"`

instead of inventing a tool name. Validation + event emission both short-circuit when `name == "none"`

, so the agent loop only sees real tool calls. (Commits `5ae64a2a`

for the structured + parallel core, `b2ab8e65`

for the `"none"`

sentinel refinement.)

Why it matters: in v0.10.8, small local models (gemma4:e2b, etc.) routinely freelanced — inventing `google:search`

, refusing to acknowledge prior conversation context, or emitting tool-call-shaped prose without firing a real call. Schema-constrained decoding eliminates the freelance path. Parallel sampling at varied temperatures gives at least one candidate room to thread the needle on hard prompts. The `"none"`

sentinel closes the remaining gap where the model wanted to reply but felt obligated to put *something* in `tool_call.name`

.

Implementation scope is contained to `provider.rs`

. `agent.rs`

and `api.rs`

are unchanged — the structured response is translated back into the same `ProviderEvent`

stream (`TextDelta`

/ `ToolCallStart`

/ `ToolCallDelta`

/ `ToolCallEnd`

/ `MessageStop`

) the agent loop already consumes.

### Other fixes since v0.10.8

-
(`--bind <ip>`

flag +`HYPERIA_BIND`

env var`5ae64a2a`

) — sidecar can now listen on`0.0.0.0`

(or any specific IP) for LAN-reachable MCP. Default stays`127.0.0.1`

. Replaces the userland Python forwarder workaround that was needed to expose the sidecar across machines. When bound to a non-loopback address, the sidecar emits a startup WARN — Hyperia's tools are full RCE, so the operator is told they're now exposed. -
**Legacy ghost.ts BrowserWindow deleted**(`acba2a2d`

, 1289 → 53 lines) — the agentic chat surface is fully unified on the shell pane (sidecar-served HTML at`/shell`

, hosted in a Hyperia`webUrl`

pane). The legacy IPC channel still routes —`Ask Hyperia`

menu entries open the shell pane in the focused window. Reset/continue/auto-reset/window.onerror ported to the shell before deletion so no regressions vs the old window. -
**Stateless MCP transport**(`3ee2f446`

) —`rmcp::StreamableHttpServerConfig::stateful_mode = false`

. Sidecar restarts (hot-swap, crash + respawn, fresh install) no longer break Claude Code's MCP client. Previously every restart returned HTTP 404 on every call until the user manually`/mcp`

→ Reconnect; now restarts are invisible. -
**Slow MCP calls fixed**(`0a043c79`

) —`get_screen`

404 was emitting WARN through the shared tracing pipeline; a background poller asking for a long-closed tab generated 858/1000 log entries and serialized real MCP calls behind log I/O. Demoted to`debug!`

. Throughput restored. -
(`.deb`

postinst sets chrome-sandbox setuid`7782331e`

) — fresh Ubuntu 24.04 installs of v0.10.8 crashed immediately with`FATAL setuid_sandbox_host.cc:166`

. Electron-builder doesn't apply the setuid bit by default; the .deb's`after-install`

script now runs`chown root:root && chmod 4755 /opt/Hyperia/chrome-sandbox`

. Also fixed the broken`/usr/local/bin/hyperia`

symlink that pointed at a non-existent path. -
(`install.sh`

Linux branch`6e723b18`

) —`site/install.sh`

now detects dpkg-based systems and downloads + installs the`.deb`

(with apt-get fallback), or falls back to the universal`.AppImage`

. Previously the Linux branch was a hardcoded "Linux builds are not yet available" message dating to v0.5.x.**NOTE:** the script in this repo is fixed; the public copy at`hyperia.nuts.services/install.sh`

still needs to be redeployed (task[#48](https://github.com/DeepBlueDynamics/hyperia/issues/48)).

## Migration notes

**Conversation memory** is now reset on shell-pane reopen if the sidecar still thinks a prior agent run is in flight. This prevents stuck sessions but means a planned "leave it running in the background then come back" workflow won't survive a refresh — by design, since the in-flight run is from a previous pane lifecycle.now open the shell pane instead of the legacy 520×700 popup window. Visual change; functional parity confirmed.`Ask Hyperia`

menu entriesis applied automatically on`/opt/Hyperia/chrome-sandbox`

permission fix`.deb`

install. Existing v0.10.8 installs that already worked around the bug manually can leave their`4755`

chmod in place — no conflict.

## Signing status

**Windows**— Signed via Azure Trusted Signing (publisher: DeepBlue Dynamics LLC). Built locally.`.exe`

**macOS**— Developer ID Application signed + notarized.`.dmg`

/`.zip`

(x64 + arm64)**Linux**— Unsigned (typical for these formats).`.deb`

+`.AppImage`

## Known issues / open follow-ups

- Task
[#48](https://github.com/DeepBlueDynamics/hyperia/issues/48)—`site/install.sh`

deploy to`hyperia.nuts.services`

still pending. `OPEN`

issues[#62](https://github.com/DeepBlueDynamics/hyperia/issues/62)-66 (Maximus stack: Streamable HTTP proxy, tool-interception list, status tool, settings UI) — not part of this release; tracked separately.

🤖 Drafted with [Claude Code](https://claude.com/claude-code), co-developed with Antigravity (Gemini 3.5 Flash) over shared workspace pane c.

## v0.10.8 — Agentic shell pane + tool_mount + model picker

## Highlights

### Agentic shell pane

The chat surface is now a Hyperia pane (`webUrl`

pane type, served from the sidecar at `/shell`

) rather than a separate BrowserWindow. Right-click anywhere → **Hyperia Shell**. The legacy ghost BrowserWindow is kept as a fallback for one more release.

`tool_mount`

SSE event

The agent can ship a self-contained HTML+CSS+JS widget into the chat scrollback. Iframe-hosted with `postMessage`

RPC; widgets fetch data via `GET /api/ghost/widget/:id/data`

and queue actions for the agent's next turn via `POST /api/ghost/widget/:id/action`

. Foundation for downstream features (DOM inspector, thermodynamic bookmark graph).

### Model picker + ollama auto-scan

- Capabilities endpoint calls ollama's
`/api/tags`

and lists installed models. - Clickable
`model`

field in the shell's status strip opens an inline picker; selection writes`config.agent.{provider,model}`

via`POST /api/ghost/set-model`

. - When ollama is reachable and no model is configured, the sidecar auto-picks the first installed non-specialist model. No more hardcoded
`llama3.2`

fallback that 404s when not pulled.

### Bootstub Level-0 micro-agent

Pure Rust state machine, no LLM dependency. Runs when `/api/ghost/capabilities`

reports `level: "none"`

— recognizes `install ollama`

, `paste anthropic token sk-ant-…`

, `what's possible`

, `show config`

, etc. The shell is always interactive, even on a fresh install.

### Hardwired typed commands in the shell

Phrases that match a UI affordance fire it deterministically — no LLM round-trip, no hallucinated tool names:

`change model`

/`switch model`

/`pick model`

→ opens the picker`list models`

/`show models`

→ installed ollama list`show config`

/`doctor`

/`version`

/`commands`

### Pasted/dropped assets

Paste a screenshot (Win+Shift+S then Ctrl+V) or drag a file onto the shell. Image/PDF/text assets land in `~/.hyperia/assets/<id>.<ext>`

and render inline as asset rows with thumbnail for images.

### Fixes since v0.10.7

**terminal_run Enter not submitting in TUIs**— Claude Code, vim, and other input-mode TUIs sometimes swallowed the trailing`\r`

. Now command + Enter ship in one atomic PTY write.**Tab name**—`'''`

bug`auto_describe`

now strips smart quotes, double quotes, backticks, and sentence-ending punctuation in one pass instead of a brittle chain.**Conversation memory + tool honesty** in agent system prompt — small local models stop refusing to use what the user told them, stop hallucinating`google:search`

.- Dropped dead
`hasAgentConfigured()`

helpers and unsafe-`any`

rpc casts (lint clean).

## Signing

**Windows**— Signed via Azure Trusted Signing (publisher: DeepBlue Dynamics LLC). Built locally and uploaded; CI is not yet wired with the signing secret.`.exe`

**macOS**— Signed with Developer ID Application + notarized, uploaded separately from the Mac build.`.dmg`

🤖 Generated with [Claude Code](https://claude.com/claude-code)

## v0.9.0 — Maximus tokenmax layer

## What's new

**Maximus tokenmax** — iterative Ollama-powered compression for tool results

- Ghost agent tool results now run through a 3-stage pipeline: classify content type → derive extraction strategy → apply iteratively until stable (up to 3 passes)
- Annotates every result with
`[tokenmax type=X pattern=Y src=ollama/Ni A→Bchars]`

so agents always know what was filtered - Adaptive hints in output:
`raw=true`

to get full content,`maximus_explain`

to see the strategy used - Ferricula-backed pattern memory — learned extraction patterns persist across sessions
- Offline heuristic fallback (cargo-test, JSON, git-diff, Rust compiler output, HTTP responses) when Ollama is unavailable
`maximus_explain`

tool — see content type, strategy, compression ratio, and iteration count from the last extraction`raw=true`

param added to`terminal_run`

,`terminal_screen`

,`file_read`

,`tab_snapshot`

,`shell_state`

- External MCP agents get the same tokenmax treatment via the Hyperia MCP server

## Installation

Download and run `Hyperia-0.9.0-x64.exe`

. Signed with Azure Trusted Signing.
