Rebuilt from one page into nine, in Russian and English. Content lives in JSON per locale, and the build fails itself if the locales diverge on keys: a page with half of it untranslated looks fine, and the visitor is the one who notices.
numbers
Tests recounted from the code
910 tests: 639 in the core and 271 in connectors. The previous site showed 905, and the README still says 737. A number on a public page comes from the code, not from a neighbouring document.
naming
The agent people talk to is called CapyAgent
Internally the platform stays InterClaw: paths, environment variables, the service unit and the Go module. Renaming the internals breaks every existing installation, and fixing that means a migration, which on a client's machine is separate work with a separate risk.
Browser actions are allowed only on sites from the list, only with confirmation, and only via a link from a snapshot. Before clicking, the connector compares the label against the live page: what you confirmed is exactly what gets clicked.
audit
Checks that written code is actually wired up
Over three days the same thing happened eleven times: code written, covered by tests, green in CI - and nothing to invoke it. Twice it was inside tasks already marked done. Now make check-wiring fails the build instead of adding a warning to a list that gets read exactly once.
security
The audit closed 21 findings
The most expensive one: the /call command had its own road into a connector, bypassing the deny list, disabled tools and confirmations. Closed. Execution now records an outcome in the journal: a trail with consent and no outcome does not answer the only question that matters - did it actually happen.
service
The core runs as a service on a production server
Scheduled jobs are executed by the agent, and a primary model failure switches to the fallback. A channel crash now brings the process down: previously the service showed as active while the bot stayed silent for days, and we heard about it from the client.
comparison
Compared against three foreign cores
Hermes, OpenClaw and GoClaw were studied after our own version was written, not before. Comparing beforehand produces a copy; comparing afterwards shows what you missed. It found three places where load knocked out the dialogue.
decision
We build our own core, not a fork
Forking any of the three means an endless chase after upstream: the neighbouring cores push daily. The core language is Go because of memory and because a client receives one binary. Connectors sit outside the core as separate MCP servers: they will outlive a change of core, and that is the product.
Want this by email?
There is no newsletter yet. Write to us and we will call you when something worth your attention appears.