npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@artinet/sdk

v0.6.0

Published

A TypeScript SDK for building collaborative AI agents.

Downloads

939

Readme

Create agents that communicate across frameworks.

The @artinet/sdk is a universal, robust and production ready AgentExecutor library that adds a standardized, interoperable communication layer to any agent.

Runs on the Agent2Agent (A2A) Protocol from the Agentic AI Foundation.

Installation

npm install @artinet/sdk express @a2a-js/sdk @modelcontextprotocol/sdk

Features

  • Hassle Free: Use cr8 to quickly spin-up an A2A compatible agent.
  • No Vendor Lock-In: Let your agents communicate with other agents no matter the framework and across ecosystems.
  • Flexible Design: Everything you need to build collaborative agents while remaining modular enough for advanced configuration.
  • Pluggable Observability: Bring your own logger (Pino, Winston) and/or tracer (OpenTelemetry).
  • Persistent Storage: Roll your own Task storage or use our built-in SQLiteStore (backed by drizzle-orm).

Quick Start

Use the create-agent command:

npx @artinet/create-agent@latest

It has several template projects to jump right into agent building.

Or use easy-a2a:

const agent = a2a({
  baseURL: "https://your-api.com/api/v1",
  apiKey: "your-api-key",
})
  .ai("You are a helpful assistant.")
  .createAgent({
    agentCard: "MyAgent",
  });
npm install easy-a2a

Examples

Create an A2A Server

Turn your agent into an express server so it can receive messages from anywhere:

import { cr8 } from "@artinet/sdk";

cr8("QuickStart Agent")
  .text(async ({ content }) => `The user said: ${content}`)
  //starts an express a2a server on port 3000
  .server.start(3000);
  • ensure that the url/path of your AgentCard matches the server.

🚧 Coming Soon: Support for Hono.

No Servers Needed

Embed agents directly into your app:

import { cr8, A2A } from "@artinet/sdk";

const agent = cr8("Local Agent").text(
  ({ content }) => `The user said: ${content}`
).agent;

const response: A2A.Task | A2A.Message = await agent.sendMessage("Hello");
  • See cr8 for more information

Connect to Remote Agents

AgentMessenger provides a streamlined Client interface for communicating with remote A2A Servers:

import { AgentMessenger, createMessenger } from "@artinet/sdk";

const messenger: AgentMessenger = await createMessenger({
  baseUrl: "http://localhost:3000/a2a",
  headers: {
    Bearer: "xxxx",
  },
});

const stream = messenger.sendMessageStream("Hello World!");

for await (const update of stream) {
  console.log(update);
}

Simple Multi-Agent Orchestration

cr8 provides easy to use tools for orchestrating multiple agents:

import { cr8 } from "@artinet/sdk";
import { localAgent } from "./local.ts";
import { remoteAgentMessenger as remoteAgent } from "./remote.ts";

const orchestrator = cr8("Director")
  .text("Request Received")
  .sendMessage({ agent: localAgent, message: "initiate billing" })
  .text("Billing Started")
  .sendMessage({ agent: remoteAgent, message: "Retrieve Secrets" }).agent;

For more robust multi-agent support, checkout orc8, our dynamic agent orchestration library that can be used with any openai compatible API.

Documentation

| Topic | Description | | ------------------------------------------ | ----------------------------------------------------- | | Agent Creation | Scaffolding agents with cr8 | | API Reference | Complete reference of SDK objects, types, and methods | | Execution | Subscriptions and custom event handlers | | Messenger | Messenger methods, streaming, browser support | | Storage | FileStore, SQLiteStore, custom storage backends | | Configuration | Logging (Pino, Winston) and OpenTelemetry setup | | Customization | native, tRPC, and AgentEngines | | MCP Integration | Model Context Protocol compatibility | | Migration Guide | Upgrading from v0.5.x to v0.6.0 |

Requirements

  • Node.js ≥ 18.9.1 (Recommended: 20 or ≥ 22)

Running Tests

npm test

Contributing

Contributions are welcome! Please open an issue or submit a Pull Request on GitHub.

Ensure code adheres to the project style and passes linting (npm run lint) and tests (npm test).

License

This project is licensed under Apache License 2.0.

See the LICENSE for details.

Join the Community