PicoClaw
A PicoClaw audit flags five races as its provider surface grows
A public PicoClaw code audit reports five concurrency and lifecycle defects across session compaction, channel reloads and hook writes. At the same time, an OrcaRouter integration and an Anthropic SDK update widen provider and streaming behavior, increasing the value of settling those core synchronization contracts first.
sipeed/picoclaw issue #3308 is the inspected primary source: “[BUG].” The two related records below were inspected as supporting context, not treated as independent confirmation.
The facts
- sipeed/picoclaw issue #3308 was created 2026-07-30T19:09:18Z and was open at inspection; its title is “[BUG].” - sipeed/picoclaw PR #3309 was created 2026-08-01T03:45:45Z and was open at inspection; its title is “feat(providers): add OrcaRouter as an OpenAI-compatible provider.” - sipeed/picoclaw PR #3304 was created 2026-07-30T17:13:52Z and was open at inspection; its title is “build(deps): bump github.com/anthropics/anthropic-sdk-go from 1.55.1 to 1.61.0.” - The repository reported 29791 stars, 56 open issues, default branch main, and last push 2026-07-30T18:32:36Z. - The latest tagged-release baseline checked was nightly published 2026-07-02T01:26:53Z.
What changed
sipeed/picoclaw issue #3308 reports: [Code Review] Concurrency hazards, goroutine leaks, and memory/speed optimizations in SeaHorse, Channel Manager, and Hooks** Hey team! First off, huge congrats on PicoClaw—building a native Go AI assistant that runs on $10 hardware with <10MB RAM and sub-second boot times is seriously awesome architecture. I was doing a deep-dive code audit across pkg/ to see how the concurrency model, memory store (seahorse), and channel orchestration work under the hood. During the review, I identified **5 concrete bugs/race conditions** (concurrency hazards in SeaHorse and Manager.Reload(), a goroutine leak in ProcessHook.send(), and error-handling edge cases) as well as **3 zero-behavior-change performance & memory optimizations** that reduce
sipeed/picoclaw PR #3309 reports: Description Adds **OrcaRouter** as a first-class OpenAI-compatible provider (orcarouter). OrcaRouter is a multi-vendor router that speaks the OpenAI Chat Completions contract at https://api.orcarouter.ai/v1 and addresses upstream models as vendor/model ids — the same shape as the existing openrouter provider, so this threads through the existing compatibility path rather than adding a new one. Disclosure: I'm an engineer on the OrcaRouter team. It also runs gateway-level, zero-trust security for AI agents on the same endpoint — screening every prompt/response and governing every tool call on a default-deny basis, with no application code changes. Changes (8 files, +79/−2):** pkg/providers/provider_metadata.go — new orcarouter catalog entry (DefaultAPIBase, SupportsFetch,
sipeed/picoclaw PR #3304 reports: Bumps [github.com/anthropics/anthropic-sdk-go] from 1.55.1 to 1.61.0. Release notes Sourced from github.com/anthropics/anthropic-sdk-go's releases. v1.61.0 1.61.0 (2026-07-24) Full Changelog: v1.60.0...v1.61.0 Features api: add claude-opus-5 model ( bb7dc83 ) api: add tool addition/removal blocks and tool_change events ( bb7dc83 ) api: expand client-side fallback credit token types and add server-side fallbacks default option ( bb7dc83 ) v1.60.0 1.60.0 (2026-07-23) Full Changelog: v1.59.0...v1.60.0 Features api: add new stop reason 'model_context_window_exceeded' ( 94caa5d ) Bug Fixes apijson: correct unmarshaling for param types ( #73 ) ( 661be2e ) client: escape HTML in RawJSON overrides of nested properties ( 3b163e2 ) refer to the CLI as ant in auth error
Why it matters
Small binaries are not exempt from large concurrency failures. Detached reload mutations, timed-out write goroutines and unsynchronized session compaction can corrupt exactly the state that new providers and tool events make busier. This is an operator boundary: persisted state, execution ownership and visible controls must describe the same event. A workaround that broadens access, deletes state or hides the symptom would trade a visible defect for an unmeasured one.
Current
The primary record was open when captured on 2026-08-02. The release baseline was nightly published 2026-07-02T01:26:53Z. Current 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/sipeed/picoclaw/issues/3308. Supporting records are https://github.com/sipeed/picoclaw/pull/3309 and https://github.com/sipeed/picoclaw/pull/3304. Their source bodies, timestamps and states were captured 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. Issue closure would not by itself prove a deployed fix. Search residue, package mirrors and historically published source spines were excluded.
Operator take
Reproduce each audit finding with race-aware tests before accepting fixes, keep vendor security claims attributed, and exercise provider streaming and tool-change events against cancellation and reload paths. 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.