Repository navigation
PasClaw is an Object Pascal (FPC + Delphi) AI agent framework — a local
gateway, web UI, CLI and now a native desktop app for running agentic
coding/chat workflows against any provider.
This is a large release: roughly 150 pull requests since v0.1.3. The headline
is PasClaw Desktop, a native FMX application that replaces "a browser tab
pointed at the gateway" with a real desktop shell.
Downloads
| You're on… | Download |
|---|---|
| Windows (x64, incl. Windows-on-ARM) | PasClaw-0.1.4-x64-setup.exe |
| Windows (32-bit) | PasClaw-0.1.4-x86-setup.exe |
| Windows — portable (no installer) | PasClaw-0.1.4-x64-portable.zip · PasClaw-0.1.4-x86-portable.zip |
| Linux (x86-64) | pasclaw-0.1.4-linux-x86_64.tar.gz |
| Linux (ARM64) | pasclaw-0.1.4-linux-aarch64.tar.gz |
The Windows installers are self-contained (SQLite linked statically, TLS via
Windows SChannel) and can add pasclaw to your PATH. On Windows-on-ARM the
x64 installer runs via the built-in x64 emulation. Portable builds now ship as
.zip rather than a bare .exe — browsers and AV are happier with an archive.
The Linux tarballs bundle OpenSSL 1.0.2 next to the binary so HTTPS works out
of the box; their only runtime dependency is libsqlite3 (apt install libsqlite3-0 if it's missing). Unpack and run ./pasclaw.
Highlights
PasClaw Desktop
A native desktop application, not a wrapped web view. It has a real menu and
real windows instead of a dock, keeps itself off the taskbar as a shell you
talk to, and survives the things that used to kill it — a tab reload no longer
takes the gateway down with it, and closing the desktop no longer waits on the
gateway to say something first.
- One chat per app, in the app window, surviving the window; the app window
docks its editing chat on the left. - Chat rendered with FMX controls, not a browser: markdown replies,
expandable tool cards, and a transcript that shows the whole chain and lets
you act on every link of it. - A stop button that actually stops, a shell that streams as it runs, and
mid-turn steering that reaches the running turn rather than the next one. - Projects board with concurrent reconciliation, finished work that leaves
the list, and project names derived to read like names. - Self-contained HTML apps, launched from Run, opening even when the
manifest never declared them as HTML. - Notifications — it tells you when the long thing finished.
- The gateway moved off the UI thread.
Accessibility
Screen-reader support for Studio on Windows, macOS and Linux — plus the linter
that should have been checking it and never was. The units are drop-in and do
not depend on Studio.
Two new agent modes
improve— a measure-first loop: benchmark, profile, change one thing,
re-measure with the same command.space— Search, Plan, Assert, Code, Evaluate. Mutating tools are
mechanically refused until a plan has been written, which is the one rule
of that discipline cheap enough to enforce rather than merely request.
Alongside them: agent teams you can point at work out of the box (including
a virtual C-suite template), and standing agents with a durable roster, a
mailbox that reaches them mid-turn, runs and supervision.
Memory
- A dependency-free embedding tier. Vector search no longer waits on a
~90 MB ONNX download:hash-ngram-v2@256is feature hashing over word
unigrams and character 4-grams, with no model file, vocabulary or native
runtime. It is lexical, not semantic —carandautomobilescore near
zero — and it ranks without ever being trusted to merge two facts. memory_writerecords one durable fact deliberately. It is mutating, so
plan mode refuses it and MCP exposes it only under--mcp-allow-write—
which finally lets an external MCP client contribute to the store it could
already read.- Embedder identity on every stored vector, so two embedding spaces are
never compared and a model switch triggers a backfill instead of silently
wrong neighbours. - Compaction: rolling summary, config block, token-budget retention and
overflow retry; plus LLM-guided pruning that deletes what stopped mattering
and keeps the rest verbatim.
Cost and speed
- Progressive disclosure of built-in tools behind
tool_search— about
33% off every request. - Read-only tools fan out in parallel while mutating ones stay serial, with a
benchmark proving the fan-out actually happens. - Per-turn date/time injected after the cache breakpoint, so it does not
invalidate the cached prefix.
Security
/v1/fswas serving MCP OAuth tokens; the relay token comparison was not
constant-time. Both fixed.- SSRF: IPv4 smuggled inside IPv6 literals and non-dotted-quad host
spellings are now blocked. - Memory, transcripts and trajectories are never sent to a search engine —
including through the relay. - Skill provenance: what was installed is recorded, and a reinstall that
drifts is refused rather than silently accepted.
Text handling
- Text files are written and read as UTF-8 on every build, with a lint to
keep it that way. The Delphi build previously wrote the system ANSI code page,
which mangled every non-ASCII character in a transcript. - The Delphi TUI now accepts, renders and persists CJK input.
CanonicalPathgained a platform matrix — the Delphi/Windows build is fixed
and the Delphi/POSIX arm that never existed now does.
Honesty about results
A recurring theme this cycle. Verification now reports what a check did not
cover and where a command actually ran; a failed SQLite index open reports the
driver's real reason instead of a guess; stats no longer misattribute tokens
across models; startup says each thing once and says the security state
loudest.
Upgrading
Nothing to do. One note if you have used the new memory tier from a build
between #600 and this release: its vectors carry an older embedder id and are
ignored on first run, then rewritten by the automatic backfill. Retrieval falls
back to keyword ranking in the meantime. That is the identity guard working as
designed, not a fault.
First run
pasclaw onboard # configure a provider + workspace
pasclaw serve # start the gateway + web UI
Docs are bundled in each download under docs/, and in the repo README.