A TypeScript SDK for building collaborative AI agents.
npm install @artinet/sdkCreate 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.
``bash`
npm install @artinet/sdk express @a2a-js/sdk @modelcontextprotocol/sdk
- 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).
Use the create-agent command:
`bash`
npx @artinet/create-agent@latest
It has several template projects to jump right into agent building.
Create an A2A Server
Turn your agent into an express server so it can receive messages from anywhere:
`typescript
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:
`typescript
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' });
`
- _See Serverless Deployment for more information._
No Servers Needed
Embed agents directly into your app:
`typescript
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.
`typescript
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!');
`
- _See cruiser for more information_
Connect to Remote Agents
AgentMessenger provides a streamlined Client interface for communicating with remote A2A Servers:
`typescript
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);
}
`
- _See messenger for more information._
Simple Multi-Agent Orchestration
cr8 provides easy to use tools for orchestrating multiple agents:
`typescript
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._
| Topic | Description |
| ------------------------------------------ | ----------------------------------------------------- |
| Agent Creation | Scaffolding agents with cr8 |Messenger
| API Reference | Complete reference of SDK objects, types, and methods |
| Execution | Subscriptions and custom event handlers |
| Messenger | methods, streaming, browser support |FileStore
| Storage | , SQLiteStore, custom storage backends |native
| Configuration | Logging (Pino, Winston) and OpenTelemetry setup |
| Customization | , tRPC, AgentEngines, and serverless |
| MCP Integration | Model Context Protocol compatibility |
| Migration Guide | Upgrading from v0.5.x to v0.6.0 |
- Node.js ≥ 18.9.1 (Recommended: 20 or ≥ 22)
`bash`
npm test
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).
This project is licensed under Apache License 2.0.
See the LICENSE` for details.
- Reddit: r/theartinet
- Discord: the artinet channel