Skip to content

CapyAgent - a program on your own computer.

What the program does instead of a person

Twenty three jobs
the program takes off your managers

Taking enquiries, meeting minutes, invoices, reports, chasing overdue payments. Pick your department or the program you work in and see which of these happen without a person.

For 23 jobs the whole run is shown: what the person asked, what was done and what came back. For 3 of them the line is named next to it: the program does not cross it on purpose, and will not. How it works inside is at the bottom of the page.

How it works

Three levels

01 skill

Skill

A SKILL.md file with a header and a procedure. It sits in the skills directory, appears in the agent's catalogue and opens when needed.

SKILL.md

02 plugin

Plugin

A directory with a manifest, its own connectors and its own skills. Installed by command, it cannot silently replace a built-in connector.

capyagent.plugin.json

03 extension

Browser extension

A panel beside the page. It requests permissions through a manifest and receives the intersection of what it asked for and what was granted, not everything it asked for.

manifest.json

Rules

What was made deliberate here

  • Catalogue first, bodies on demand. Twenty full skills in the prompt eat the model window before the work even starts.
  • Data directories come before the home folder. The service runs under a dedicated user and the unit closes off the home folder with ProtectHome=true. While plugins were searched for only in the home folder, there was physically nowhere to put them on a production machine.
  • An unreachable directory means "no plugins here", not a refusal to work. The service writes a warning and moves on.
  • A broken manifest inside an installed plugin is an error. A human put it there, and ignoring it silently would mean lying that the plugin works.
  • A plugin does not grant itself permissions. The manifest asks, a human grants, and the intersection goes into the process.

Format

Plugin manifest, version 1

capyagent.plugin.json
{  "schema_version": 1,  "id": "example",  "name": "Example Business API",  "version": "1.0.0",  "connectors": [{    "id": "api",    "command": ["python3", "${PLUGIN_DIR}/server.py"],    "env": ["EXAMPLE_API_TOKEN"]  }],  "skills": ["skills"],  "permissions": {    "network": ["api.example.com"],    "secrets": ["EXAMPLE_API_TOKEN"]  }}

${PLUGIN_DIR} is expanded only after the manifest passes validation. At runtime the connector is named example.api, and it cannot be used to shadow a built-in one.

Catalogue

What exists today

Two finished entries and one format. Everything else is written for the task at hand: half a page of skill usually closes work that previously needed its own script.

01 skill

Equipment price research

Builds an evidence table of offers: source, date checked, price, VAT, availability, delivery, confidence. A search snippet is never treated as a price; the page is always opened.

skills/поиск-цен

02 plugin

Calltouch

Calls, requests and sources as a separate plugin with its own manifest and permissions. The first plugin with install and removal.

plugins/calltouch

03 template

Your own skill in half an hour

A header with a name and a description, then a numbered procedure in plain words. No code, no build step.

How to write one

Example

What a good skill looks like

Taken from the price research skill that is already in use. Notice that every step closes a specific way of producing a beautiful and wrong answer.

  • Clarify what we are looking for. Category, specs, region, acceptable alternatives. A vague answer is worse than no answer: it looks like work.
  • Search with several phrasings. A snippet is a hint about where to go, not a source of price.
  • Open the page. The cheap way first; if an empty shell comes back, use the browser. The price is taken only from a page we opened.
  • Merge duplicates. One supplier on their own site and on a marketplace is one offer. Three links to the same shop do not widen the sample.
  • Assemble a table with the date checked and a confidence level on every row.
A skill like this is portable: it works in CapyAgent, and its text reads to a human as an ordinary instruction. That is the point of the format.

Need a skill for your own work?

Describe the procedure in words and we will turn it into something the agent performs every day.