Repository navigation
ProcLease v0.1.9 experimental preview
Pre-releaseProcLease v0.1.9 is an experimental release adding session-scoped foreground
execution and file controls for agent hosts that retain a native execution task.
Runtime dependencies and the Rust 1.89 minimum are unchanged.
Session-scoped foreground mode
Use run --foreground inside a host-supported persistent execution session or
background Bash task. The invocation stays alive until its job finishes, and
with --json emits one flushed startup/readiness object. Application output
stays in the bounded job log. The default detached mode remains unchanged.
proclease --json run --foreground --ttl 45m --owner codex --task preview \
--wait-for-port 5173 -- npm run dev -- --host 127.0.0.1Foreground jobs use bounded private request/reply files for stop and extend,
without creating or probing a Unix socket. Status/log reads do not renew leases.
The existing keeper/guardian owns expiry and group cleanup; there is no command
broker, elevated daemon, automatic fallback or broader sandbox grant.
A retry key includes the launch mode. Wrong-mode retries fail even with
--reuse; a matching retry returns the retained job immediately without
attaching, launching or renewing. An extension with an unknown reply is never
automatically resent. Request IDs remain protected through their validity
window, and capacity pressure refuses work instead of allowing replay.
File state has the existing private same-user trust boundary, not authenticated
agent identity or an atomic global queue admission limit.
Cleanup and compatibility limits
The first ordinary SIGINT, SIGTERM or SIGHUP requests bounded keeper cleanup
and exits with 128 + signal, independently of blocked stdout/stderr. Notices
are best effort. Repeated signals exit immediately. A job lasts at most as long
as its session and lease. Whole-client/sandbox teardown can kill supervisors
before a final record: unverified jobs remain protected as unknown or
interrupted, never relabelled as proven cleanup.
The compatibility matrix
records pre-release Codex/strict-Claude Linux checks of cross-call file control,
logs, extension/reuse, stop and expiry under unchanged policies. This supports
session-scoped control, not survival after client exit. Claude early normal
exit was not exercised because that invocation remained alive through expiry.
Strict Claude still denies Unix sockets and isolates each tool call's localhost;
later HTTP checks fail while file controls work. No port forwarding, private
network joining or new Vite/Next.js workflow compatibility is claimed.
The suite contains 32 unit and 64 lifecycle tests, including full-pipe signal,
file-type/size/time limits, replay pressure, backwards-clock refusal and mixed
transport controls. Release automation runs the suite, format/Clippy checks,
optimized builds and archive/installer smoke checks natively on macOS ARM64/Intel
and Ubuntu 22.04 ARM64/x64 (glibc). These are distinct from real-agent tests.
The macOS minimum is 15.0; Windows and Linux musl/Alpine binaries are not provided.
Installation
Review this release's install.sh, then run:
sh install.sh --skills both
proclease --versionThe checksum-verifying installer installs the CLI and matching portable skill
without sudo or Rust. Omit --skills both for CLI only. Existing unrelated skill
directories and links are preserved. Cargo installs only the CLI:
cargo install proclease --version 0.1.9 --lockedUpgrading does not replace running keepers or watches or restart managed work.
Do not signal a saved PID or delete unverified history. A service can escape
group cleanup by creating another process group/session. Retention protection
requires cooperating clients and keepers.
macOS Developer ID signing/notarization remains deferred for this experimental
prerelease and required before stable promotion. Ad hoc signatures and checksums
do not establish publisher identity. The CLI-only crate provides a docs.rs
README/source overview rather than a library API.
Created by Jared Chu, with Codex and Claude contributions. See the README for credits.