01
A batch request loses pages silently
Bitrix serves batch with halt=0 and keeps going after an error inside the batch. Code that only looks at the response status gets an incomplete export and treats it as complete.
batch completeness check
CapyAgent an agent that walks into your business systems itself. Go core, Python connectors, your data stays with you.
v0.9.0 · closed beta
Ask in plain words. It decides where to go, finds out how your particular account is built, checks the export for completeness, and answers to the point. Not a digest from someone else's analytics, but an answer assembled on your data.
One binary on your machine. History, notes and jobs sit next to it as ordinary files. Nothing leaves: there is no telemetry sending that is «off by default», there is none in the code at all.
The numbers were recounted from the code on 22.08.2026, not copied from the previous version of this page. Core tests run with -race, connector tests run against a local HTTP server.
01 / Problem
Every connector is written around specific ways of losing data silently. Not «we support the API», but «here are four places where the export leaks, and here is a check for each».
01
Bitrix serves batch with halt=0 and keeps going after an error inside the batch. Code that only looks at the response status gets an incomplete export and treats it as complete.
batch completeness check
02
Direct queues heavy reports and answers 201 or 202. Treat «not 200» as a failure and you declare keyword reports unavailable. Treat 200 as success and you never read the error in the body.
parse the body, not the status
03
The service declared 4,812 records and returned 3,900. The honest answer is to name the gap and stop. An ordinary library returns whatever it managed to collect, and you find the difference a month later in a report.
declared against received
04
Fields, pipelines, dictionaries and smart processes differ for everyone. The agent first discovers how your portal is built and only then counts. A schema assumed in advance breaks on the second client.
discover before analysis
02 / Capabilities
01 memory
Durable facts about you and about the work are kept for the long run and apply across every chat at once. Learned in Telegram - remembered in the browser.
02 schedule
«Every Monday at 9:00 put together a summary» - and it assembles the summary itself, visits the systems it needs and sends the result.
03 policy
Sending an email, editing a deal, writing off money. All of it is held and shown to you before it happens, with the exact operation name and its arguments.
04 channels
Telegram, Discord, the Bitrix chat, a page in the browser, the extension panel and the terminal. Each channel keeps its own history.
05 integrations
Bitrix24, Yandex.Direct and Mail, UIS, Roistat, Calltouch, VK, ZenMoney. A new connector is one Python file with no dependencies.
06 perimeter
One binary on your machine or server. Data sits as ordinary files, keys are passed through the environment rather than through process arguments.
03 / Systems
The live-verification status is stated honestly. «Per API contract» means the code is written and covered by tests, but we never had a production account.
04 / How it works
Telegram, Discord, the browser panel, a web page or the terminal. No command to learn.
It looks at which services are connected and decides where to go. What is not on the list it does not think about and does not invent.
First it works out how your account is built: fields, pipelines, dictionaries. Only then does it count.
It compares the actual output against the declared one, catches errors in the response body, accounts for limits and pagination. A gap is named, not smoothed over.
It shows which systems it visited. Recurring work goes on a schedule, important things are remembered for the long run.
05 / Quick start
Requires Linux, Go 1.26+, Python 3.12+ and Git. A step-by-step walkthrough is on the quick start page.
# build and configure$ git clone https://github.com/nobi-k/interclaw && cd interclaw$ make build$ ./bin/interclaw setup # check that the connector answers$ ./bin/interclaw connector tools -- python3 connectors/bitrix24/server.pycrm_discover_portal, crm_fields, crm_list, crm_smart_process, ... # start the service and open the chat$ ./bin/interclaw servelistening on 127.0.0.1:8790, telegram channel alive
The address is nailed to 127.0.0.1 in the code rather than taken from configuration: the core holds keys to other people's CRMs, and there is nothing to open a port for.
06 / Security
The audit on 19.08.2026 closed 21 findings. Below are not promises from the model but properties of the code, each with a test.
01 confirmations
Anything that changes data in an external service is shown before it runs: the exact operation name and its arguments. Consent is single-use and only inside its own chat.
02 injection
The contents of emails and records are wrapped in a boundary with a random marker. An instruction that arrives inside a stranger's email does not become a command.
03 isolation
Each connector receives only its own environment variables. Credentials for one service are invisible to the connector of another.
04 telemetry
Usage counters are anonymous and stay on your machine. Telemetry sending does not exist in the code.
05 shell
A deliberate decision, not an unfinished feature. An agent with access to other people's systems should not be able to run anything it likes on the machine.
06 fatigue
Reading, searching and parsing need no confirmation. A question asked for the twentieth time in a day turns into a «yes» button that gets pressed without looking.
07 / Questions
08 / Apply
Tell us which systems you run and what you would like to ask the agent. We answer ourselves, with no funnel in between.