zyris protocol에이전트 - 기기 통신 프로토콜

기기로 손을 뻗는 에이전트

Zyris는 확장 가능한 프로토콜입니다. 노드가 웹소켓 하나로 서버에 연결해 터미널, 파일, 입력, 화면, 브라우저 같은 기능(capability)을 도구로 공시합니다. Attacca는 이 프로토콜의 레퍼런스 구현체로, 공시된 도구를 에이전트가 그대로 호출합니다.

WebSocket · hello
{
  "kind": "hello",
  "protocol": { "major": 1, "minors_supported": [0] },
  "capabilities": ["terminal", "file_io", "screen_capture"]
}

원리

채팅창에 갇힌 에이전트에서 기기를 다루는 프로토콜로

에이전트는 텍스트 안에만 머물러 있었습니다

아무리 뛰어난 에이전트라도 할 수 있는 일은 답변뿐이었습니다. 터미널을 열고, 파일을 고치고, 화면을 보고, 마우스를 움직이는 일은 여전히 사람의 몫이었습니다. 직접 기기를 다루는 에이전트가 필요했습니다.

그래서 만들게 된 프로토콜

Zyris의 노드는 웹소켓 하나로 서버에 연결해 자신의 기능(capability)을 공시합니다. 방향 대칭적인 프로토콜이기 때문에 핸드셰이크가 끝나면 클라이언트도 서버도 없습니다 — 어느 쪽이든 서로를 부르고, 스트림을 열고, 세션 중에 제공하는 기능을 바꿀 수 있습니다. 터미널이든 화면이든, 노드가 공시하는 순간 곧바로 에이전트의 도구가 됩니다.

Attacca와의 만남

이 프로토콜은 Attacca를 레퍼런스 구현체로 만나 비로소 현실이 되었습니다. 노드가 공시한 도구는 그대로 에이전트가 호출할 수 있는 도구가 되고, 서버는 attacca_api를 되돌려 공시해 노드가 에이전트 세션을 직접 운영할 수도 있습니다.

  • 터미널
  • 파일 I/O
  • 입력 제어
  • 화면 캡처
  • 브라우저 제어
  • 커스텀 Capability

Out-of-the-Box Tools

표준 Capability 카탈로그

terminal, file_io, input, screen_capture, browser_chrome — 기본 제공되는 capability만으로 에이전트가 곧바로 당신의 기기에서 명령을 실행하고, 파일을 다루고, 화면을 보고 조작할 수 있습니다.

Device-Grant Auth

안전한 기기 등록

노드를 실행하면 8자리 코드가 출력됩니다. Attacca에 그 코드를 입력하고 원하는 권한(scope)만 골라 승인하세요. 비밀키를 기기 간에 옮길 필요가 없습니다.

Two-Way Calls

대칭적인 프로토콜

핸드셰이크가 끝나면 클라이언트도 서버도 없습니다. 노드가 도구를 공시하는 동시에, 서버가 공시하는 attacca_api를 받아 에이전트 세션을 직접 부를 수도 있습니다.

노드 만들기

의존성 하나, 트레이트 하나로 에이전트의 새 도구

Zyris는 Rust 라이브러리로 제공됩니다. 트레이트에 #[zyris::capability]를 붙이면 매크로가 디스크립터와 서버 래퍼, 클라이언트를 만들어 주고, 독스트링은 그대로 모델이 읽는 도구 설명이 됩니다.

  1. 01

    의존성 추가

    다음 crates.io 릴리스 전까지는 git으로 받습니다. enroll은 8자리 코드로 자격 증명을 발급받는 흐름을 더합니다.

    Cargo.toml
    [dependencies]
    zyris = { git = "https://github.com/attacca-cc/zyris-protocol", features = ["enroll"] }
  2. 02

    capability 선언

    트레이트 하나가 곧 도구 묶음입니다. 이름과 버전을 붙이고, 모델이 읽을 설명을 독스트링으로 적으세요.

    src/hello.rs
    #[zyris::capability(name = "hello", version = 1)]
    pub trait Hello {
        /// Return a random friendly greeting, optionally addressed to `name`.
        async fn greet(&self, name: Option<String>) -> zyris::Result<Greeting>;
    }
  3. 03

    노드 연결

    노드를 만들어 capability를 싣고 서버에 연결합니다. connect는 연결이 끊겨도 알아서 다시 붙습니다.

    src/main.rs
    let link = Node::builder()
        .name("my-node")
        .kind(NodeKind::Service)
        .capability(HelloServer(HelloWorld))
        .build()?
        .connect(zyris::DEFAULT_SERVER_URL, std::env::var("ZYRIS_CREDENTIAL")?)
        .await?;
    
    link.wait_closed().await?;

바로 실행해 보기

$cargo run -p zyris --example hello --features enroll

아무 설정 없이 실행하면 attacca.cc에 등록을 시작하며 8자리 코드를 출력합니다. 브라우저가 있는 기기에서 Attacca에 그 코드를 입력하면 연결되고, 에이전트에게 hello.greet를 호출하게 하면 노드가 "Hello World"라고 답합니다.

crate 구성

zyris
스택 전체를 한 이름으로. 이것만 의존하면 됩니다.
zyris-core
노드 런타임 — 연결 상태 머신, 전송, capability 공시, 재연결, 기기 등록.
zyris-proto
와이어 타입만. 엔벨로프, 프레임, 핸드셰이크. I/O도 async도 없습니다.
zyris-caps
표준 capability 카탈로그 — terminal, file_io, input, screen_capture, browser_chrome, file_transfer.
zyris-fs · zyris-terminal
file_io와 terminal의 레퍼런스 구현. 순수 Rust.
zyris-screen · zyris-input
화면 캡처와 키보드·포인터 입력의 레퍼런스 구현.
zyris-transfer · zyris-p2p
노드 간 파일 전송과, 노드끼리 직접 잇는 전송 계층.
zyris-attacca
서버가 거꾸로 공시하는 attacca_api — 노드가 에이전트와 세션을 직접 다룹니다.

사용 사례

Zyris로 구축할 수 있는 것

터미널부터 화면과 입력, 브라우저까지 — 표준 capability만으로 에이전트가 실제로 할 수 있는 일들을 확인하세요.

터미널 자동화

노드의 terminal capability로 에이전트가 원격 셸 명령을 실행합니다. 빌드, 배포, 스크립트 실행까지 — 당신의 기기 그대로에서.

  • 표준 terminal capability로 즉시 사용 가능
  • 에이전트가 셸 명령을 직접 실행
  • 출력과 종료 코드를 그대로 반환
  • 긴 실행 작업도 스트림으로 확인

화면을 보고 입력을 대신하는 에이전트

screen_capture로 화면을 캡처하고 input capability로 마우스와 키보드를 조작합니다 — GUI 자동화, 데스크톱 작업 대행.

  • screen_capture로 실시간 화면 캡처
  • input capability로 마우스·키보드 제어
  • GUI 전용 앱도 자동화 가능
  • 사람이 승인한 scope 안에서만 동작

브라우저를 직접 제어

browser_chrome capability로 실제 Chrome 브라우저를 열고, 폼을 채우고, 클릭합니다 — 웹 기반 워크플로우를 그대로 대행.

  • browser_chrome으로 실제 Chrome 인스턴스 제어
  • 폼 입력, 클릭, 스크래핑까지 지원
  • 로그인 세션을 그대로 재사용
  • 웹 기반 워크플로우 자동화

제품

Zyris로 만든 프로그램

직접 노드를 만들지 않아도 됩니다. 데스크탑, 터미널, 서버 — 연결하려는 곳에 맞는 프로그램을 고르세요.

zyris

내 컴퓨터를 Attacca에 연결해 두는 데스크탑 앱

트레이에 머물며 셸·파일·키보드와 마우스·화면을 에이전트의 도구로 내줍니다. 쓰고 있던 로컬 MCP 서버도 함께 올라갑니다. Windows와 Linux용입니다.

zyris code

터미널에서 바로 쓰는 코딩 에이전트

설치는 한 줄이면 끝납니다. Windows·Linux·macOS 빌드가 있고, 에이전트는 Attacca에서 도구는 내 컴퓨터에서 돕니다.

zyris docker

Docker·Kubernetes 서버를 Attacca에 붙이는 컨테이너 노드

컨테이너 안에서 시스템·Docker·Kubernetes 상태를 지켜보다가, 멈춘 것이 있으면 에이전트를 불러 원인을 찾고 고치게 합니다.