Skip to content

CapyAgent an agent that walks into your business systems itself. Go core, Python connectors, your data stays with you.

Quick start

From zero
to the first answer

Fifteen minutes on a Linux machine. At the end you have a working agent, one connected connector and an open chat page.

Before you begin

What you need to have

  • Linux. The main platform, everything was verified on it. Windows and the rest are on the install page.
  • Go 1.26 or newer. Needed only to build the binary.
  • Python 3.12 or newer. Connectors run on the standard library, no packages to install.
  • A model key. MiMo, any OpenAI-compatible API, YandexGPT or GigaChat.
  • Access to at least one system. A Bitrix24 webhook or a Direct token is enough for the first run.
The model needs a context of 64,000 tokens or more. MiMo additionally has a floor of 8192 on max_tokens: anything lower truncates the answer mid-sentence.

Steps

Three steps to a conversation

01

Build

Clone the repository and build the binary. make build puts it in bin/interclaw, with no dependencies to pull.

02

Configure

interclaw setup asks for the model provider, the key and a channel. Everything is written to an environment file with mode 600, not into process arguments.

03

Run

interclaw serve brings up local HTTP on 127.0.0.1 and starts the configured channels. The chat page opens at the same address.

Commands

The same thing as a script

bash
# 1. build$ git clone https://github.com/nobi-k/interclaw && cd interclaw$ make build # 2. configure the model and a channel$ ./bin/interclaw setupmodel provider: mimo | openai | yandexgpt | gigachatchannel: telegram | discord | bitrix24 | web only # 3. check the connector before starting$ ./bin/interclaw connector tools -- python3 connectors/bitrix24/server.pycrm_discover_portal, crm_fields, crm_list, crm_smart_process, ... # 4. run$ ./bin/interclaw servelistening on 127.0.0.1:8790, telegram channel alive

Step 3 stands on its own for a reason: a connector that does not answer tools/list will not work inside the agent either. Checking it with one command is cheaper than hunting for the cause in the service journal.

First conversation

What to ask to see the point immediately

A good first question is not «hello» but reconnaissance. The agent shows what it can learn about your account, and it becomes visible where data is missing.

  • «What is configured in my Bitrix: which pipelines, stages and required fields?»
  • «How many requests arrived last week and from which sources?»
  • «Compare how many deals the portal declared against how many it actually returned.»
  • «Every Monday at 9:00 send me the same thing in Telegram.»
The last line puts a job on the schedule. You can verify it was recorded with interclaw schedule list: a job the agent confirmed in words but never wrote down looks identical to a recorded one - until Monday.

Next

Where to go after the first answer

  • Run it as a service so the schedule works without an open terminal: docs/личная-обкатка.md.
  • Connect the remaining systems: the connector catalogue in docs/connectors/README.md.
  • Restrict the dangerous parts: the list of tools requiring confirmation and of sites allowed for browser actions, docs/безопасность.md.
  • Add your own skill: the SKILL.md format and the plugin manifest are described on the skills page.

If it did not go

Common snags

The channel started but the bot is silent
The sign of life is the time of the last successful exchange, not a «running» flag. A poller that stopped receiving answers leaves the process alive and the journal clean. Look at the time of the last exchange in the status, not at the word «active».
Telegram will not connect from Russia
It needs SOCKS5. The proxy is set through an environment variable; the core will not use one without being told explicitly.
The connector starts but shows zero tools
Most often its environment variables were not passed. Each connector receives only its own, and without them it honestly answers with an empty list instead of crashing.
The model truncates the answer mid-sentence
Check max_tokens. MiMo has a floor of 8192, below which the answer is cut. A tool result is separately capped at a fraction of the model window, and the truncation is marked explicitly so the model does not invent the remainder.
The service shows as active but nothing is happening
A channel crash used to leave the process alive, and the service looked healthy for days. Now it exits with a non-zero code and systemd restarts it. If you see otherwise, an older binary is installed.

Did it work?

Tell us what you want to automate next. Or look at what changed in the recent releases.