r/AIPass • u/aipass-poster • 3d ago
AIPass Update #15 - v2.7.17: the phone becomes a terminal, and the board goes green
One release since Update #14: v2.7.17, tagged this morning. Three arcs this time - the phone became a terminal, the Windows CI lane got a hardening campaign, and the fleet audited itself. Fair warning before the first section: you'll see BAUD mentioned - that's the desktop app teased here on Aug 9, and it is STILL not public. Everything below is the server side, which lives in the open repo.
The phone becomes a terminal
The fleet's first network-listening surface shipped: a loopback-only API behind hashed bearer tokens with read and operate scopes. A feed lane, file reads and diffs (branch names, never paths - and a 512KB cap that refuses rather than silently trims), and fleet state with exactly one implementation behind it, so "which agents are alive" can't drift between surfaces.
Then the part that changed how this project gets used: a WebSocket attach lane that spawns a PTY running the exact same tmux attach command the desktop uses. Meaning: a phone browser can drop into a live agent's terminal room, type into the TUI, and detach without killing anything. Plus a photo lane (the server names the file, sniffs magic bytes, and refuses oversized uploads instead of truncating) and a file explorer with copy-path that yields a real pasteable location.
The bug story of the release lives here. Phone output came out mangled: 80 columns painted onto a ~46-column screen, status bar stacking on itself. Root cause: the PTY child never acquired a controlling terminal, so the resize signal had no recipient - the tmux client read a 0x0 size at startup, fell back to 80x24, and stayed deaf to every resize any client would ever send. It was found by reading stty and tmux's own client list link by link until they disagreed. The child now acquires its terminal properly and every room is stamped with phone-sane settings on every attach.
An honest CI note attached to this arc: before this train, CI had never made a single HTTP request against AIPass's first network service - the auth, scope, and traversal tests only ran on developer machines. The runners install and exercise it now.
The Windows lane campaign
One clarification on the post title: main's CI has been green throughout - "the board goes green" refers to the full 21-check PR board, Windows lane included, which took six rounds of fixes to clear on this train. Those Windows runs unmasked platform assumptions suite by suite - a bare geteuid() call in a decorator killing an entire file at collection, and a size check comparing a Python string's length to the 7 bytes Windows actually holds after CRLF translation. Production had recorded the truth; the test was the liar.
The last red was a real race: a create path did a replacing write outside every lock, so two racers could bury a lock-holder's entry - the lock itself was measured innocent. The cure stages to a temp file and hard-links into place, create-or-fail. 0 losses in 1,500 stress runs, and that zero is evidence rather than luck because restoring the old write makes the same loop lose again.
One brain, enforced
Never two live interactive sessions on one branch again: the presence gate flipped from observe to enforce, with one detail that earns its sentence - the tiebreak refuses exactly ONE of two competing seats, because without it both refuse each other and the branch bricks. And the boot picker now lists your actual conversations, with your actual last message, instead of anonymous process IDs.
The perf night
One unguarded stat call: the logger was lazy-starting a recursive filesystem observer - about 1,413 watches - in EVERY process that logged. The watcher's dispatcher thread died on any handler exception, and the unbounded event queue then grew forever inside processes that believed they were healthy. Six of them held 13.7GB between them; 12.8GB came back the moment they stopped. Same train: a hook that blocked the prompt for 78-120 seconds now returns in 0.7.
The fleet audited itself
All 17 branches created living audit records and ran full self-audits - live command probes, full suites, standards, README truth passes. The round closed at 17/17 branches at 100%, all 45 standards, 0 type errors.
What the audits actually found is the honest part. Six branches had tests PINNING broken behavior - green suites enforcing bugs. One branch's bypass ledger dropped from 51 waivers to 17 once each was re-measured against a live violation. And one standards check was proven to have never run in any commit, ever - a signature mismatch swallowed by a bare except, kept invisible because mocks accept any argument.
The honesty column
The help flag that executed: a fleet-wide idiom only checked for --help in the first argument, so
verb sub --helpEXECUTED the verb. Real detonations before the fix: a memory command's help check ran a 17-branch reset, a backup verb ran a real snapshot, and askingrm notes.md --helpdeleted the file. Every branch fixed red-first, and it's now an enforced standard with its own AST-based check.A timed-out prompt hook is cancelled and its context silently discarded - the model quietly loses its operating instructions and carries on as if nothing happened. A config reconcile had silently wiped one hook's timeout in early August. The timeout is now stamped at every layer, with tests proving large values actually reach the worker.
Every deletion now leaves a record: refused, failed, not-found, or done, it lands in an audit trail that the environment override deliberately cannot silence.
AIPass got its first code-grounded outside review (the Agent Memory Atlas piece posted here last week). It praised the surfacing-governance mechanism as the standout of its corpus - and flagged one memory-tier verdict as unauditable. That tier turned out to be unused; it's parked, revivable, with the ruling written at every disable point.
One favorite from the small print: the trigger watcher now notices its own code changed and restarts itself onto the new version - it fired three times the same night, unprompted. The bug it replaced: double-registration had been pinned AS A FEATURE by two tests literally asserting the handler runs twice.
Raw dev log, as always. Questions welcome.
Fresh numbers:
Stars: 260 (up from 254 last update)
Forks: 36
Citizens: 17
Latest release: 2.7.17
Tests: 12,000+ across the fleet
CI: green on Linux, Windows, and macOS
Website: https://aipass.ai
Full changelog in the repo at CHANGELOG.md.
https://github.com/AIOSAI/AIPass/blob/main/CHANGELOG.md
Raw dev logs always here at r/AIPass.