NullClaw
NullClaw adds loop hygiene for long local tool runs
NullClaw proposes bounded hygiene for long local tool-heavy loops, alongside a configurable SQLite memory path and a fresh request for proxy support. The modest cluster points to operators running the agent in constrained, stateful local environments.
nullclaw/nullclaw PR #987 is the inspected primary source: “feat(agent): loop hygiene for long local tool-heavy runs.” The related records below were inspected as supporting context rather than independent confirmation.
The facts
- nullclaw/nullclaw PR #987 was created 2026-08-15T13:01:16Z and was open at inspection; its title is “feat(agent): loop hygiene for long local tool-heavy runs.” - nullclaw/nullclaw PR #986 was created 2026-08-14T17:55:21Z and was closed at inspection; its title is “GEN-548: make SQLite memory database path configurable.” - nullclaw/nullclaw issue #988 was created 2026-08-15T13:36:42Z and was open at inspection; its title is “proxy support.” - The repository reported 8023 stars, 86 open issues, default branch main, and last push 2026-07-19T04:20:06Z. - The latest tagged-release baseline checked was v2026.5.29 published 2026-05-29T13:41:10Z.
What changed
nullclaw/nullclaw PR #987 reports: Summary Split system prompt into cache-friendly stable prefix + variable datetime tail (buildStablePrefix, buildVariableTail, stablePrefixHash). Compress tool outputs before history injection (result_compress.zig); observer logs still see full output. Add per-turn identical-call loop guard with warn / veto / force-reply (loop_guard.zig). Honor agent.parallel_tools for read-only batches with slot-ordered parallel execution capped by agent.local_loop.max_parallel_readonly. Add agent.local_loop config bundle (parse, save, round-trip test) and document in docs/en/configuration.md + docs/zh/configuration.md. Defaults preserve existing behavior when local_loop is omitted and parallel_tools is false. Validation zig fmt --check src/ zig build test --summary all → 7372/7381 passed (9 skipped), 0 leaks zig build -Doptimize=ReleaseSmall Fleet deploy smoke (personal ops hosts): localhost (macOS arm64): curl http://127.0.0.1:5111/health → {"status":"ok"} OrangePi (riscv64): health OK, systemctl --user is-active nullclaw → active Radxa (aarch64): health OK, systemctl --user is-active nullclaw → active Notes Phase 0 only — no constrained-decoding envelope (Phase 1 gated on #971). Parallel path mutex-protects policy/rate-limit only; tool I/O runs concurrently for allowlisted read-only batches. Same-batch signature dedup still matches sequential semantics when calls are processed in order; duplicate signatures queued together before any execute may run more than once (edge case). Made with Cursor
nullclaw/nullclaw PR #986 reports: Summary add memory.database_path for SQLite-backed primary memory engines keep the existing /memory.db location when the setting is empty resolve relative values from the workspace and accept absolute paths for read-only workspace deployments document the setting in the example config and both beginner guides Validation zig fmt --check src/ zig build test --summary all Risk and compatibility The default is unchanged. The setting affects only the primary SQLite-backed memory database; response-cache and vector-sidecar paths retain their existing behavior.
nullclaw/nullclaw issue #988 reports: Description please add HTTP(s) and SOCKS(5h) proxy support for providers Motivation _No response_
Why it matters
Long local runs need explicit compaction and stop conditions, while portable state paths and network policy determine whether the same deployment can survive real hosts. The operator test is whether the system remains bounded and its receipts still describe the action after failure, retry or restart.
Current
The primary record was open when captured on 2026-08-16. The tagged-release baseline was v2026.5.29 published 2026-05-29T13:41:10Z. Repository metadata, full source bodies, current pull requests and issues, releases, Google News, Hacker News, Lobsters, Metamesh and the rendered ClawCharts row were inspected. ClawCharts selected the subject; it did not prove the claim.
Evidence
The primary URL is https://github.com/nullclaw/nullclaw/pull/987. Supporting records are https://github.com/nullclaw/nullclaw/pull/986 and https://github.com/nullclaw/nullclaw/issues/988. Source bodies, timestamps and states are preserved in the daily evidence bundle. Test counts and reproductions remain attributed to their authors unless identified as independently rerun.
Source boundary
Open work is described as open, closed work as closed, and operator reports as reports. A pull request is evidence of proposed or reviewed direction, not proof of a shipped release. Search residue, package mirrors and historically published source spines were excluded.
Operator take
Make loop limits observable, keep memory placement configurable and documented, and treat proxy support as a network policy surface rather than a transport toggle. Preserve a before-state receipt, make the smallest reversible change, and verify the original failure independently.
Caveat
Public project records are mutable. Status, scope and evidence can change after publication. This brief records the inspected state and does not authorize changes to a reader’s deployment.
Source inspected; source state, environment and release boundary remain explicit.