Skip to content

the-artinet-project/artinet-sdk

Repository files navigation

Website Version Downloads License Subreddit Github Known Vulnerabilities

artinet-sdk

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.

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.

Go Serverless

Deploy your agent to AWS Lambda or other serverless platforms:

import { Handler } from 'aws-lambda';
import { serve } from '@artinet/sdk/serverless';
import { agent } from './my-agent.js';

export const handler: Handler = serve({ agent, basePath: '/a2a' }, { provider: 'aws' });

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

Any Agent, Any Framework

Docks agents from any framework into the @artinet/sdk. Letting your OpenAI, Claude, and LangChain agents collaborate.

import { Agent } from '@openai/agents';
import { dock } from '@artinet/cruiser/openai';
import { serve } from '@artinet/sdk';

const openaiAgent = new Agent({
    name: 'assistant',
    instructions: 'You are a helpful assistant',
});

const agent = await dock(agent, { name: 'My Assistant' });

await agent.sendMessage('Hello, World!');

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, AgentEngines, and serverless
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