claw-core-protocol 0.1.0

Async Rust client and protocol types for the claw_core daemon (JSON-over-Unix-socket). Use standalone or with ZeroClaw via --features claw-core.
Documentation

claw-core-protocol

Async Rust client and protocol types for the claw_core daemon.

The claw_core daemon provides session-managed terminal execution over a Unix socket (JSON protocol). This crate gives you:

  • Protocol typesRpcRequest, RpcResponse, method-specific param/result structs
  • Async clientClawCoreClient with typed convenience methods

Quick start

use claw_core_protocol::{ClawCoreClient, CreateSessionParams, ExecRunParams};

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let mut client = ClawCoreClient::connect("/tmp/trl.sock").await?;

    // Create a session
    let session = client.create_session(CreateSessionParams {
        shell: Some("/bin/zsh".into()),
        working_dir: Some("/tmp".into()),
        ..Default::default()
    }).await?;

    // Run a command
    let result = client.exec_run(ExecRunParams {
        session_id: session.session_id.clone(),
        command: "echo hello from claw_core".into(),
        timeout_s: Some(30),
        stdin: None,
        env: None,
    }).await?;

    println!("exit_code={}, stdout={}", result.exit_code, result.stdout);

    // Clean up
    client.destroy_session(claw_core_protocol::DestroySessionParams {
        session_id: session.session_id,
        force: None,
    }).await?;

    Ok(())
}

With ZeroClaw

ZeroClaw can use this crate via an optional feature flag:

cargo install zeroclaw --features claw-core

Then enable in ~/.zeroclaw/config.toml:

[claw_core]
enabled = true
socket_path = "/tmp/trl.sock"
# auto_session = true      # create/destroy session per call (default)
# default_timeout_s = 60   # command timeout (default)

This adds a claw_core_exec tool that the agent can use for session-managed command execution with timeouts, alongside the built-in shell tool.

Protocol

All communication is line-delimited JSON over a Unix socket (default: /tmp/trl.sock).

Methods

Method Description
system.ping Health check (returns uptime, version)
system.stats Runtime statistics
session.create Create a terminal session
session.list List active sessions
session.info Get session details
session.destroy Terminate a session
exec.run Execute a command (buffered, waits for completion)

Error codes

Code Meaning
SESSION_NOT_FOUND No session with given ID
SESSION_BUSY Session already running a command
COMMAND_TIMEOUT Command exceeded timeout
INVALID_PARAMS Missing or malformed parameters
INTERNAL_ERROR Unexpected runtime error
RESOURCE_PRESSURE System under resource pressure
MAX_SESSIONS_REACHED Session limit reached

Requirements

  • The claw_core daemon must be running and listening on the configured socket path.
  • Start the daemon: claw_core (or ./target/release/claw_core).
  • Default socket: /tmp/trl.sock (override with TRL_SOCKET_PATH env var).

License

MIT