NullClaw
NullClaw unifies proxy transport on MIPS gateways
NullClaw proposes routing proxied provider and Telegram requests through its pinned curl path after native HTTP failed on a physical MIPS32 OpenWrt gateway. The patches keep credentials in mode-0600 header files, preserve native transport for direct connections, and add configurable memory auto-recall as a separate change.
nullclaw/nullclaw PR #983 is the inspected primary source: “fix(providers): use pinned curl path for proxied requests.” The related records below were inspected as supporting context rather than independent confirmation.
The facts
- nullclaw/nullclaw PR #983 was created 2026-08-03T08:38:36Z and was open at inspection; its title is “fix(providers): use pinned curl path for proxied requests.” - nullclaw/nullclaw PR #982 was created 2026-08-03T07:23:52Z and was open at inspection; its title is “fix(telegram): use curl transport for explicit proxies.” - nullclaw/nullclaw PR #979 was created 2026-07-29T20:01:17Z and was open at inspection; its title is “feat(memory): add configurable auto-recall, recall_limit, max_context_bytes.” - The repository reported 7990 stars, 83 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 #983 reports: Summary route non-streaming provider POSTs through the existing secure curl path when a safe pinned resolve entry is available keep credential headers out of argv by reusing the mode-0600 temporary header file preserve the std.http fallback when no pinned resolve entry is available pass the configured provider timeout to curl instead of discarding it Why On MIPS32 OpenWrt behind an explicit HTTP proxy, streaming provider requests worked because they use curl, while both DeepSeek non-streaming models consistently failed through the std.http proxy path with CompatibleApiError. This also prevented the non-streaming reliability/model-fallback chain from being usable on that target. Validation zig fmt src/providers/helpers.zig MIPS32r2 static build: zig build -Dtarget=mipsel-linux-musleabi -Dcpu=mips32r2 -Doptimize=ReleaseSmall -Dembedded_wasm3=false real-device forced non-streaming calls succeeded for both deepseek-v4-flash and deepseek-chat through the HTTP proxy
nullclaw/nullclaw PR #982 reports: Summary route Telegram Bot API POST requests through the existing curl transport when channels.telegram.accounts..proxy is configured retain the native HTTP transport for direct connections honor the per-request timeout on the proxied path Problem The live channel probe already uses curlPostWithProxy, but the Telegram runtime uses the native proxy client. On an OpenWrt MIPS32r2 device behind an explicit HTTP proxy, the probe and direct Bot API checks succeeded while every runtime request (deleteWebhook, command sync, and getUpdates) returned a non-2xx status. This caused the channel manager to mark Telegram unhealthy and restart it repeatedly. Using the same curl proxy path as the live probe fixed polling and delivery on the physical device. Keeping the change conditional preserves the native HTTP path for installations without an
nullclaw/nullclaw PR #979 reports: Summary Adds three new JSON config keys under memory to control memory recall behavior: auto_recall (bool, default true) - when false, skips memory enrichment entirely (no FTS5/LIKE queries on user messages) recall_limit (u32, default 5) - max memory entries injected per request max_context_bytes (u32, default 4000) - total context budget in bytes Validation Closes #919
Why it matters
Constrained gateways are where “works in the probe” and “works in the runtime” become expensive distinctions. Reusing one pinned proxy transport reduces that split, but two open patches and environment-sensitive tests still leave integration work. The operator test is whether persisted state, execution authority and the visible user outcome describe the same event after retries, restarts or delegation.
Current
The primary record was open when captured on 2026-08-04. The release baseline was v2026.5.29 published 2026-05-29T13:41:10Z. Repository metadata, pull requests, issues, release records, Google News discovery, Hacker News discovery, Lobsters, Metamesh and the rendered ClawCharts row were checked. ClawCharts selected the subject; it did not prove the claim.
Evidence
The primary URL is https://github.com/nullclaw/nullclaw/pull/983. Supporting records are https://github.com/nullclaw/nullclaw/pull/982 and https://github.com/nullclaw/nullclaw/pull/979. Source bodies, timestamps and states are preserved in the daily evidence bundle. Test counts, reproductions and deployment observations remain attributed to their authors unless explicitly 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
Verify resolve pinning, timeout propagation and restart recovery on the target device; keep provider, channel and memory changes independently reversible. Preserve a before-state receipt, make the smallest reversible change, and verify the original failure independently after intervention.
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.