v0.2.0 (early release)
Install or update:
- macOS / Linux:
curl -fsSL https://enowx.ai/install.sh | sh - Windows (PowerShell):
irm https://enowx.ai/install.ps1 | iex
Each archive has a .sha256 checksum beside it.
Still an early release: expect rough edges, and please report them in
Issues. The highlights: settings move to a Settings tab beside the chat;
agents can work together (messages, a shared board, cross-review) when you
turn it on; built-in code search over your project (rag); built-in MCP
servers for Coolify, Dokploy and your VPSes; a stopped or failed sub-agent
can be read back by the agent that sent it; every shortcut now works on
Linux, macOS and Windows; and enx updates itself (enx update, /update).
Agents and delegation
-
Sub-agents count, and are logged. What a delegated agent uses comes
up to the interface as it works: the Log tab lists every agent's model
calls, retries, trims and errors, named; the SESSION card's newused
row and the cost count the whole session, sub-agents included (a
reviewer's tokens too); and with a sub-agent's transcript open, the
context shown is that agent's own. -
A finished sub-agent leaves the sidebar once its transcript is
cleared, so no row leads nowhere; one at work, failed or stopped stays. -
One reviewer across cross-review rounds. It waits between rounds in
its own session (so the delegate can answer it) and carries on there,
keeping its context and the prompt cache. -
Stop a sub-agent with a right-click on it in the sidebar. Its caller
gets a report that it was stopped by the user, with the files it had
changed and what it said last, and is woken by it like any report; its
transcript is kept. -
The orchestrator and maestro can read what a delegation did
(delegation_log): what it was asked, said and called, so after one is
stopped or fails the next brief starts where that work stopped. -
Agents can work together (Settings > Team, off by default). Agents at
work at the same time message each other (message_agent), share a board
for the run (team_board), and a delegate's work that changed files is
cross-reviewed: the reviewer's corrections go back to the delegate and the
work is checked again, up to the rounds set (1 to 5). Each part can be
turned off on its own. -
New
maestroagent: an all-rounder in the LEAD group. It has the
orchestrator's reach (delegate and hand off to anyone) but carries every
tool, so it can change files, run commands and check interfaces itself
rather than only handing work out. For a job that mixes doing and
delegating. The orchestrator stays the default; pick it with
/agent maestro. -
A delegated agent always comes back with a report. The four fields
(DONE, CHANGED, VERIFIED, NEXT) are now read however the model dresses them
(markdown, changed case); every ending without a report is nudged; after two
nudges the model is asked once more with no tools, so all it can do is write
the report; and if it still will not, the caller gets the four fields built
from what the branch actually did. -
A delegation at work is never run twice. Resuming a branch that is still
running is refused, and the orchestrator is told up front what it left
running, so a "continue" from the user can no longer start the same work a
second time. -
A finished delegation is cleaned up. Once a delegation reports
successfully its report stays in the conversation and its transcript (and any
delegation under it) is deleted instead of filling the disk. One that failed
or stopped short is kept, to be resumed. -
Reviewers are firm, tidy and honest.
reviewandperfopen with one
verdict on a fixed scale (Good, Good with fixes, Needs work, Bad) that
follows from the findings, call bad work bad and good work good with the
reason, and treat inconsistency as a finding rather than a nit to drop. -
Give an agent its own model from the roster. In
/agent,mopens the
model list for the selected agent anddputs it back on the default.
Every agent shows the model it runs on under its description.
Interface
-
enx updates itself.
enx updateinstalls the latest release in place
of the running binary after checking its published checksum (--check
only looks,--forcereinstalls). The interface looks for a new release
in the background at start and notes it in the status bar until
/updateinstalls it. Settings > Updates turns the check off, or has it
install by itself, used from the next start. -
Line edits show as diffs. An edit by line anchors used to show the
tool's raw anchored text; it now returns a small diff the interface draws
like any edit. -
Chat and Settings tabs at the top right. Settings takes the whole main
column in place of the chat: its sections (Models, Providers, Agents, Team,
MCP, RAG, Skills, Sessions, Theme) are listed on the left and the chosen one is
beside them.Ctrl+Pswitches between Chat and Settings. Settings opens
on the section list:Up/Downpick a section,Entergoes in, andEsc
steps back one level (form to list, section to section list, list to
chat); a click on a section picks it, a click inside goes in. The searchable command list
moved to/commands(typing/still lists commands inline). -
Queue messages typed while a turn runs. Enter during a turn puts the
message in a queue above the composer, with a[send now]button; queued
messages go one at a time as each turn ends.Ctrl+EnterorCtrl+Ssends
now,Shift+EnterorAlt+Enteris a newline at any time, andUpin an
empty composer edits the last queued message. -
/handoffto a fresh session. Folds the conversation into a summary in a
new, light session held by the same agent; asks first whether to keep the old
session's history or delete it. -
The SESSION card shows what the session costs the machine: the memory and
CPU of enx and the processes it started (MCP servers, language servers, the
preview browser), and the history on disk. -
A sub-agent's transcript is read only. Viewing a delegation shows no
composer; nothing is typed or sent from it. -
The wheel scrolls, a row at a time, and never moves a selection. In
any list (models, MCP, skills, sessions, the command list, a settings form)
the wheel scrolls the view and leaves the selection where it is; the next
key brings the view back to it. The side card scrolls by lines instead of
turning pages, its position shown as▲ 21-40/69 ▼. In Settings the wheel
over a section scrolls it at once, without Enter. -
Every shortcut works on Linux, macOS and Windows. Each one has a form
that reaches enx through the terminals that swallow the first:Ctrl+Ssends now where a terminal cannot tellCtrl+Enterfrom Enter;
Shift+Enteris a newline where it can.- Terminals that speak the kitty keyboard protocol (kitty, WezTerm, foot,
Ghostty, Alacritty, iTerm2) are asked to use it, so those keys are told
apart there. Alt+Upopens the message menu (macOS takesCtrl+Up),Alt+V
attaches from the clipboard (Windows Terminal takesCtrl+V), and
Alt+B/Alt+Fpage the sidebar (macOS sends them for Option+arrows).- AltGr characters (
@,{,€on many European layouts) type on
Windows instead of being read as Ctrl+Alt shortcuts. - A multi-line paste on Windows arrives as one paste instead of sending
each line as its own message. Ctrl+BackspaceandAlt+Backspaceerase a word;Ctrl+Dquits only
from an empty composer and erases forward otherwise; anAltchord no
longer types its letter.
-
Ctrl shortcuts instead of function keys, since not every terminal passes
F-keys through:Ctrl+Tnext sidebar tab,Ctrl+G/Ctrl+Xthe log's filter
and detail, and in/modelCtrl+Nadd,Ctrl+Eedit,Ctrl+Rrefresh.
Models
- Model names are matched however the upstream spells them.
claude-opus-4.7,
claude-opus-4.7-1m,anthropic/claude-opus-4.7:thinking,
us.anthropic.claude-opus-4-7and the like now resolve to the right
catalogue entry, so context window, prices, vision and thinking efforts are
correct. The maker's listing wins over a reseller's. - Edit a model's properties (context window, thinking effort, vision,
prices) from the model list.
Built-in MCP servers
coolify,dokploy,vpsandrag, served by enx itself (no Node or
Python). All four are listed in/mcp, off by default;Tabturns one on,
andcopens its setup form. Credentials can also be set from the CLI
(enx mcp set coolify --url ... --token ...,enx vps add), which an agent
can run for you, and the running session reloads MCP the moment they land:
no restart.enx mcp clear <name>forgets a setup. Tokens and passwords go
toauth.json; secret fields and environment values are redacted from tool
output; a VPS host key is pinned on first connection.- RAG indexes by itself and cuts code along its syntax. The workspace
is indexed when a session starts, a file an agent writes or edits is
indexed the moment the tool returns, other changes every half minute, and
everything right before each search, so agents no longer callindex
first. Indexing runs at low OS priority and holds its full scan while a
turn runs.
Chunks follow the syntax tree: a function, type, method or config key is
whole, with its comments, and carries where it sits and what it defines;
only an item over about 4,000 characters is split, along its own body.
Markdown is cut at headings, other text at paragraphs. Code that only
moved keeps its embedding. Turn auto-indexing off in Settings > RAG or
with--auto-index off. vpssigns in the waysshdoes. Encrypted key files (with their
passphrase), PuTTY.ppkkeys, ssh-agent (Pageant and the OpenSSH agent on
Windows), hosts written as~/.ssh/configaliases (theirHostName,
User,PortandIdentityFile), the default~/.ssh/id_*keys, and
keyboard-interactive answered with the stored password. A failed sign-in
says what was tried and why each was refused, and a prompt for a one-time
code is reported rather than answered.- Built-in code search (
rag), with a Settings section of its own.
Indexes the workspace into Postgres with pgvector, local or cloud, and
searches it with dense and keyword matches fused, then reranked. SettingsRAG (or
/rag) turns it on and picks the database and the embeddings:
Voyage AI, OpenAI, or any OpenAI-compatible endpoint (Ollama, LM Studio,
Jina, a gateway), with the model, the vector width and the reranker.
enx mcp set ragtakes the same as flags. A change of model makes the
nextindexembed the project again rather than mix vectors. Indexing is
incremental and honours.gitignore; secrets and lockfiles are never
indexed. Off by default, and its skill reaches the agents only while it is
on.
Skills
-
A theme toggle is an icon, with no text.
ui-themes,ui-part-header
andcanvas-datanow say so: a sun or moon button, named by its
aria-labelalone. -
Desktop apps in Rust:
systems-desktopandsystems-gpui. The first
chooses the stack (Tauri for a web UI with a Rust core, GPUI for a native
GPU-drawn app, with egui, iced and Slint in brief) and settles packaging,
signing and updates up front. The second covers GPUI, the framework Zed
is built on: setup per platform, entities and views,notify, events,
actions, key bindings and focus,uniform_list, async work, testing and
shipping. Carried bysystemsandfe. -
New
ui-layout-gridskill: CSS Grid and Flexbox mechanics for tidy
layouts. -
New
canvasagent and skills: standalone single-file HTML pages, tools,
visualisers and games. -
UI skills enforce layout mechanics: every layout is flexbox or grid,
cards in a group share one size and row height, controls in a row share a
height, and dropdowns are custom because the native select renders
differently on every OS (with a keyboard- and ARIA-complete custom select in
ui-part-choices).
Tools
- The
todotool keeps nested steps instead of silently dropping them: a
step may be an object with sub-steps, flattened with indentation. - The
asktool reads a call however the model dresses its fields (a
question namedprompt/text/q/title, options namedchoices/answers,
a bare string, a single question not wrapped in a list).
Fixes
- Backspace works everywhere. Terminals that send Backspace as
^H(many
Linux terminals and SSH sessions) now erase instead of doing nothing. - Windows builds.
nixis used only on Unix, and the bash tool and preview
browser fall back to theshfrom Git for Windows, or PowerShell. - The session resource card counts only enx's real descendants, not
unrelated processes caught by macOS recycling a pid. /resumelists conversations only, never a delegation's transcript.- Enter saves a built-in MCP server's setup form. It did nothing before;
only the CLI could save one. - Long files are written in parts. A reply of several hundred lines
takes minutes and the provider could cut it off mid-call, so nothing was
written (thecanvasagent failed this way repeatedly).write, the
harness and the canvas prompt now ask for at most about 150 lines per
call, continued witheditfrom a marker comment. - The
writetool refuses an empty write with a message telling the
model to send the file in parts, instead of silently creating an empty file
when a long reply was cut off. - No more freeze on Windows. The session resource card measured
processes on the interface thread, which on Windows could take long enough
to stop scrolling and typing; it now measures in the background.
Project
- Install from enowx.ai (
curl -fsSL https://enowx.ai/install.sh | sh,
orirm https://enowx.ai/install.ps1 | iexon Windows). The installer adds
enx to yourPATHand the site counts installs. - Licensed under Apache-2.0 (was MIT).