ZyrisDocs

Introduction

Zyris is an expandable, direction-symmetric protocol that turns what a machine can do into tools an AI agent can call.

A Zyris node is any machine that dials a server over one websocket and announces capabilities — named, versioned sets of tools whose arguments are described by JSON Schema. On the same connection it can also consume the capabilities the server announces back.

The protocol is direction-symmetric. Once the handshake is done there is no client role and no server role: either peer may call the other, open streams, and change what it offers in the middle of a session.

Attacca is the reference deployment. The tools a node announces become tools its owner's agents can call, and Attacca announces attacca_api back so the same node can drive agents and sessions in return.

What you can build

  • A tool for an agent. Write a Rust trait, put #[zyris::capability] on it, and every method becomes a tool. Doc comments become the descriptions the model reads.
  • A machine an agent can use. Serve the standard catalogue — terminal, file_io, input, screen_capture, file_transfer — with the reference implementations, and an agent can run commands, edit files and drive the screen.
  • A program that drives agents. Consume attacca_api to create sessions, send messages and stream turns, over the same connection you serve tools on.

The programs on zyris.attacca.cc — Zyris, zyris-code and zyris-docker — are all built this way.

Where to go next

Which version these docs describe

These docs track the main branch of zyris-protocol, which uses long-lived zc_ credentials. The 0.2.0 release on crates.io predates that and still uses znt_ node tokens, so until the next release, depend on the git repository as the quickstart shows.

On this page