spotta85

Anyagent — Development skill for Claude Code

Development community

A Rust crate to connect multiple harnesses under one, simple, up-to-date interface.

How to install Anyagent

This entry records only its repository, not the path inside it, so there is no exact command to give. Open spotta85/anyagent and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

What Anyagent does

A Rust crate to connect multiple harnesses under one, simple, up-to-date interface.

Alternatives in Development

  • Agentic Stack — One brain, many harnesses 2.2k ★
  • Claude Engineer — A version of command line interface(CLI) that leverages the power of Claude Opus(3-4.7) 954 ★
  • Harnessrouter — HarnessRouter Community Edition: the self-hosted, Apache-2.0 edition of the unified interface for agent harnes 618 ★

README

anyagent

For apps that want to use the AI subscriptions a user already pays for.

[![CI](https://github.com/spotta85/anyagent/actions/workflows/ci.yml/badge.svg)](https://github.com/spotta85/anyagent/actions/workflows/ci.yml) [![crates.io](https://img.shields.io/crates/v/anyagent.svg)](https://crates.io/crates/anyagent) [![docs](https://img.shields.io/badge/docs-anyagent.mintlify.site-8B5CF6)](https://anyagent.mintlify.site) [![docs.rs](https://img.shields.io/docsrs/anyagent)](https://docs.rs/anyagent) [![license](https://img.shields.io/badge/license-MIT%20OR%20Apache--2.0-blue.svg)](#license)

One Up-to-date, feature-rich Rust interface to the agents already on a users machine.

Users have Claude Code, Codex, Cursor, Grok, OpenCode, Kiro, Antigravity, and friends on their machines — each with its own CLI, protocol, and quirks. If you're building an app on top of them, you end up writing and maintaining a driver per agent. anyagent is that layer, **once: it finds the agents, speaks each one's protocol (native or [ACP](https://agentclientprotocol.com)), and gives you one typed API — `Runtime`, `Session`, and a stream of `Events`**.

Your app keeps its own transcript, UI, and policy. anyagent owns the processes, the wires, and the turn rules — every agent behaves the same way through it.

image

Use

[dependencies]
anyagent = "0.0.5"
use anyagent::{EventKind, Runtime, SessionOptions};
use futures::StreamExt;

let runtime = Runtime::new();
let report = runtime.discover().await;
let agent = report.require("claude")?;
let (session, mut events) = runtime.open(agent, SessionOptions::in_dir(".")).await?;

session.prompt("explain this repo").await?;
while let Some(event) = events.next().await {
    match event?.kind {
        EventKind::TextDelta { text, .. } => print!("{text}"),
        EventKind::TurnEnded { ..