[Unreleased]
Date unavailable
Added Sessions remember their last terminal size and (re)spawn at it instead of the fixed 80x24 floor.
opendray updateReadable release notes from GitHub, designed for humans.
Date unavailable
Added Sessions remember their last terminal size and (re)spawn at it instead of the fixed 80x24 floor.
opendray updateAdded Sessions remember their last terminal size and (re)spawn at it instead of the fixed 80x24 floor.
Fixed Terminal sessions recover from a corrupted render on (re)connect. opendray replays its output ring buffer to a new connection, which for a full screen (alt screen) TUI like grok could begin mid escape sequence and
--strict-mcp-config, so a session uses only opendray-managed MCP servers
(the --mcp-config set) and ignores the account's claude.ai connectors and
user ~/.claude.json. Those connectors require interactive OAuth that a
headless gateway session can't complete, so they only produced noise.--strict-mcp-config, so a session uses only opendray-managed MCP servers
(the --mcp-config set) and ignores the account's claude.ai connectors and
user ~/.claude.json. Those connectors require interactive OAuth that a
headless gateway session can't complete, so they only produced noise.Added [session] gains env dotenv files — a list of dotenv style files (KEY=VAL per line) whose every entry is injected into each spawned session.
[session] gains env_dotenv_files — a list of dotenv-style files
(KEY=VAL per line) whose every entry is injected into each spawned
session. This is the modular way to feed a whole bundle of host secrets
(e.g. a secrets.env) into sessions with one config line, instead of one
file per variable via env_files. Blank lines and # comments are
skipped, a leading export is stripped, and surrounding quotes removed.
Precedence, lowest to highest: env_dotenv_files < env < env_files.Fixed The install wizard now actually installs the Grok Build CLI when you opt in.
@xai-official/grok,
so it now installs the same way as Claude Code and Codex, in both the Linux
and macOS wizards.opendray providers list / opendray providers update now include grok
(@xai-official/grok) alongside claude and codex.npm install -g opendray ships the gateway
binary only — it does not provision PostgreSQL, a service user, the AI CLIs,
or a system service. It points to the curl installer for a fully-managed
setup and documents installing at least one AI CLI (claude/codex/grok) for
the npm route. Also removed the stale "Gemini" reference.@xai-official/grok,
so it now installs the same way as Claude Code and Codex, in both the Linux
and macOS wizards.opendray providers list / opendray providers update now include grok
(@xai-official/grok) alongside claude and codex.npm install -g opendray ships the gateway
binary only — it does not provision PostgreSQL, a service user, the AI CLIs,
or a system service. It points to the curl installer for a fully-managed
setup and documents installing at least one AI CLI (claude/codex/grok) for
the npm route. Also removed the stale "Gemini" reference.Added Grok accounts now show the signed in account holder (name and email) as a tag in the Grok Accounts panel, read on each list from the on disk grok login (<GROK HOME /auth.json).
<GROK_HOME>/auth.json). This mirrors the Claude accounts panel's
oauth_email tag so you can tell which xAI account each row authenticates
as. Derived on every read, never persisted; empty when logged out.Fixed Web terminal now sizes the session to the browser window automatically on open.
Fixed Grok sessions stay working across account switches and are never bricked by a logged out account.
Changed Reworked the Jev (TypeSafe) integration into a generic, modular session environment mechanism.
[jev] config section
baked into the core, sessions now inherit operator-defined env vars from
[session.env] (inline) and [session.env_files] (value read from a
file, keeping secrets out of config.toml). This injects any host tool's
credentials into every provider's agent with no per-provider setup and
nothing tool-specific in the codebase. Jev is now just one consumer:
point TYPESAFE_API_KEY at a key file under [session.env_files]. The
[jev] section is removed.[jev] config section
baked into the core, sessions now inherit operator-defined env vars from
[session.env] (inline) and [session.env_files] (value read from a
file, keeping secrets out of config.toml). This injects any host tool's
credentials into every provider's agent with no per-provider setup and
nothing tool-specific in the codebase. Jev is now just one consumer:
point TYPESAFE_API_KEY at a key file under [session.env_files]. The
[jev] section is removed.Fixed The one line installer no longer crashes or hangs when there is no controlling terminal (LXC / pct exec, Docker without t, CI, cloud init).
pct exec, Docker without -t, CI,
cloud-init). It aborted at startup trying to open /dev/tty, and a
menu prompt could spin forever on end-of-input. It now reattaches to a
terminal only when one can actually be opened, and menu prompts fail
fast with guidance instead of looping. Interactive curl … | bash
installs are unchanged; automated installs now work or fail cleanly.
(install-linux.sh, install-macos.sh)Added Grok sessions keep their conversation across a stop and restart. On a same account restart opendray now resumes the current working directory's most recent grok session instead of starting a blank one, matching how
Added Jev (TypeSafe) integration. Jev is a "System One" decision CLI that returns calibrated probabilities and a verdict as JSON (classify, verify, route, screen, match, rank) instead of prose.
[jev] config section and opendray injects it into every
session, so any provider's agent (Claude, Grok, Codex, Antigravity,
OpenCode, shell) can call the jev CLI with no per-provider setup.
api_key or api_key_file, and an env_var override for OpenRouter or
Cloudflare providers. Install the CLI on the host with npm i -g jevctl.[jev] config section and opendray injects it into every
session, so any provider's agent (Claude, Grok, Codex, Antigravity,
OpenCode, shell) can call the jev CLI with no per-provider setup.
api_key or api_key_file, and an env_var override for OpenRouter or
Cloudflare providers. Install the CLI on the host with npm i -g jevctl.Fixed Grok sessions no longer come up as a blank screen, and grok is back in its clean scrollback native mode so sessions scroll on desktop and mobile.
Operator polish, reconnect stability, memory improvements, and clearer docs.