에이전트는 텍스트 안에만 머물러 있었습니다
아무리 뛰어난 에이전트라도 할 수 있는 일은 답변뿐이었습니다. 터미널을 열고, 파일을 고치고, 화면을 보고, 마우스를 움직이는 일은 여전히 사람의 몫이었습니다. 직접 기기를 다루는 에이전트가 필요했습니다.
Zyris는 확장 가능한 프로토콜입니다. 노드가 웹소켓 하나로 서버에 연결해 터미널, 파일, 입력, 화면, 브라우저 같은 기능(capability)을 도구로 공시합니다. Attacca는 이 프로토콜의 레퍼런스 구현체로, 공시된 도구를 에이전트가 그대로 호출합니다.
{
"kind": "hello",
"protocol": { "major": 1, "minors_supported": [0] },
"capabilities": ["terminal", "file_io", "screen_capture"]
}원리
아무리 뛰어난 에이전트라도 할 수 있는 일은 답변뿐이었습니다. 터미널을 열고, 파일을 고치고, 화면을 보고, 마우스를 움직이는 일은 여전히 사람의 몫이었습니다. 직접 기기를 다루는 에이전트가 필요했습니다.
Zyris의 노드는 웹소켓 하나로 서버에 연결해 자신의 기능(capability)을 공시합니다. 방향 대칭적인 프로토콜이기 때문에 핸드셰이크가 끝나면 클라이언트도 서버도 없습니다 — 어느 쪽이든 서로를 부르고, 스트림을 열고, 세션 중에 제공하는 기능을 바꿀 수 있습니다. 터미널이든 화면이든, 노드가 공시하는 순간 곧바로 에이전트의 도구가 됩니다.
이 프로토콜은 Attacca를 레퍼런스 구현체로 만나 비로소 현실이 되었습니다. 노드가 공시한 도구는 그대로 에이전트가 호출할 수 있는 도구가 되고, 서버는 attacca_api를 되돌려 공시해 노드가 에이전트 세션을 직접 운영할 수도 있습니다.
Out-of-the-Box Tools
terminal, file_io, input, screen_capture, browser_chrome — 기본 제공되는 capability만으로 에이전트가 곧바로 당신의 기기에서 명령을 실행하고, 파일을 다루고, 화면을 보고 조작할 수 있습니다.
Device-Grant Auth
노드를 실행하면 8자리 코드가 출력됩니다. Attacca에 그 코드를 입력하고 원하는 권한(scope)만 골라 승인하세요. 비밀키를 기기 간에 옮길 필요가 없습니다.
Two-Way Calls
핸드셰이크가 끝나면 클라이언트도 서버도 없습니다. 노드가 도구를 공시하는 동시에, 서버가 공시하는 attacca_api를 받아 에이전트 세션을 직접 부를 수도 있습니다.
노드 만들기
Zyris는 Rust 라이브러리로 제공됩니다. 트레이트에 #[zyris::capability]를 붙이면 매크로가 디스크립터와 서버 래퍼, 클라이언트를 만들어 주고, 독스트링은 그대로 모델이 읽는 도구 설명이 됩니다.
다음 crates.io 릴리스 전까지는 git으로 받습니다. enroll은 8자리 코드로 자격 증명을 발급받는 흐름을 더합니다.
[dependencies]
zyris = { git = "https://github.com/attacca-cc/zyris-protocol", features = ["enroll"] }트레이트 하나가 곧 도구 묶음입니다. 이름과 버전을 붙이고, 모델이 읽을 설명을 독스트링으로 적으세요.
#[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>;
}노드를 만들어 capability를 싣고 서버에 연결합니다. connect는 연결이 끊겨도 알아서 다시 붙습니다.
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"라고 답합니다.
사용 사례
터미널부터 화면과 입력, 브라우저까지 — 표준 capability만으로 에이전트가 실제로 할 수 있는 일들을 확인하세요.
노드의 terminal capability로 에이전트가 원격 셸 명령을 실행합니다. 빌드, 배포, 스크립트 실행까지 — 당신의 기기 그대로에서.
screen_capture로 화면을 캡처하고 input capability로 마우스와 키보드를 조작합니다 — GUI 자동화, 데스크톱 작업 대행.
browser_chrome capability로 실제 Chrome 브라우저를 열고, 폼을 채우고, 클릭합니다 — 웹 기반 워크플로우를 그대로 대행.
제품
직접 노드를 만들지 않아도 됩니다. 데스크탑, 터미널, 서버 — 연결하려는 곳에 맞는 프로그램을 고르세요.
내 컴퓨터를 Attacca에 연결해 두는 데스크탑 앱
트레이에 머물며 셸·파일·키보드와 마우스·화면을 에이전트의 도구로 내줍니다. 쓰고 있던 로컬 MCP 서버도 함께 올라갑니다. Windows와 Linux용입니다.
터미널에서 바로 쓰는 코딩 에이전트
설치는 한 줄이면 끝납니다. Windows·Linux·macOS 빌드가 있고, 에이전트는 Attacca에서 도구는 내 컴퓨터에서 돕니다.
Docker·Kubernetes 서버를 Attacca에 붙이는 컨테이너 노드
컨테이너 안에서 시스템·Docker·Kubernetes 상태를 지켜보다가, 멈춘 것이 있으면 에이전트를 불러 원인을 찾고 고치게 합니다.