simple tools is an umbrella for a set of small, composable Rust libraries. The point is to keep each piece simple enough that a harness — a coding agent that may be partly or entirely a local model — can wire them together into a working tool in one sitting, without dragging in a heavy framework.
Each library does one thing and exposes a small surface: a terminal UI layer, a networking layer, a capability-scoped shell, a secrets manager, a remoting layer, and a sandbox. They are designed to be read end-to-end, audited, and recombined. Several are formally specified (Lean 4 models) and post-quantum where it matters.
This is the toolbox half of Le Harnais:
the harness drives the model and the loop; simple tools are the building blocks it reaches for.
Together with leanlift (proof
automation) and the security toolkit, the goal is tools you can stand up quickly and trust.
TUI widgets (tables, depth ladder, charts, an agent-activity log) plus a markdown engine with live IPC updates. The rendering layer an agent can drive in real time.
Async transport with a post-quantum secure channel (hybrid ML-KEM + XChaCha20 + ML-DSA) and an optional Tor onion carrier. C++/Go FFI bridges.
A capability-scoped shell language: parse, type-check, schedule and execute commands under explicit resource and policy limits. Lean 4 models of the role hierarchy and policy engine.
Post-quantum secret manager with advanced secret sharing, TOTP, and a documented threat model. Built on the secure-memory and simple-network libraries.
A remoting layer: run a limited-shell session over simple-network, so an agent can act on a remote host under the same capability limits.
A sandbox for AI agents and the tools they run: contain side effects, mediate filesystem and network access, and keep an audit trail.
Simple, verifiable backups: content-addressed snapshots an agent can create and restore as part of a safe edit loop.
Small over general. Each crate is meant to be read in an afternoon. No plugin systems, no config sprawl.
Capabilities, not trust. Execution is scoped by explicit limits (limited-shell), contained (simple-sandbox), and encrypted post-quantum on the wire (simple-network, simple-secrets).
Public means just the code. The -public mirrors carry the source that compiles — no internal history — with dependencies pointed at their own -public siblings.