Skip to content

AgentionAI Agents Without the Magic

No hidden state machines, no forced abstractions—just typed agents, composable graphs, persistent history, and real observability.

The Problem with AI Frameworks

Most AI agent frameworks fall into two camps:

Raw SDKs give you control but you rebuild the same patterns every project—tool loops, history management, provider switching.

Heavy frameworks abstract everything away, but you lose visibility and fight the framework when you need control.

Agention is different: enough structure to be productive, enough transparency to stay in control.

From simple tool-calling agents to hierarchical RAG-powered research teams—build it your way.

Core Building Blocks

Agents

Unified interface across Claude, OpenAI, Gemini, and Mistral. Tools, history, and token tracking built-in.

typescript
import { ClaudeAgent } from '@agentionai/agents/claude';

const agent = new ClaudeAgent({
  model: 'claude-sonnet-4-5',
  tools: [searchTool, calculatorTool],
});

Learn more →

Tools

JSON Schema + handler pattern. Unique capability: wrap any agent as a tool for delegation hierarchies.

typescript
import { ClaudeAgent } from '@agentionai/agents/claude';

// Use a specialized agent as a tool
const mainAgent = new ClaudeAgent({
  agents: [researchAssistant],  // Sub-agent becomes a callable tool
  tools: [webSearchTool],
});

Learn more →

History & Context Management

Provider-agnostic, persistent (Redis, file, custom), shareable across agents of different providers. Built-in plugins keep the context window lean automatically: tool result masking removes stale large results at read time; rolling summarization compresses old turns via a cheap LLM.

typescript
import { ClaudeAgent } from '@agentionai/agents/claude';
import { RedisHistory } from '@agentionai/agents/core';
import { compressionPlugin, toolResultMaskingPlugin } from '@agentionai/agents/history/plugins';

const maskingPlugin = toolResultMaskingPlugin({ keepRecentResults: 2 });
const history = new RedisHistory(redis)
  .use(maskingPlugin)
  .use(compressionPlugin(summaryAgent, { autoReduceWhen: { maxTokens: 8000 } }));

// Context stays lean automatically — no manual trimming needed
const agent = new ClaudeAgent({
  tools: [searchTool, maskingPlugin.retrieveTool],
}, history);

History Management → · Context Management →

Graph Pipelines

Compose sequential, parallel, voting, routing, and nested graphs. Mix models and providers freely.

typescript
import { Pipeline, AgentGraph } from '@agentionai/agents/core';

const pipeline = new Pipeline([
  AgentGraph.parallel(researcher1, researcher2),  // Parallel research
  synthesizer,                                     // Sequential synthesis
  AgentGraph.votingSystem(judge),                 // Judge picks best
]);

Learn more →

Multimodal / Vision

Send images alongside text using a unified MessageContent[] interface. Works across all four providers — the transformer handles the format differences.

typescript
import { ClaudeAgent } from '@agentionai/agents/claude';
import { imageUrl, imageBase64 } from '@agentionai/agents/core';

const agent = new ClaudeAgent({ model: 'claude-opus-4-6', ... });

// Remote URL
await agent.execute([
  imageUrl('https://example.com/chart.png'),
  { type: 'text', text: 'Summarize this chart.' },
]);

// Local file as base64
const data = fs.readFileSync('./photo.jpg').toString('base64');
await agent.execute([
  imageBase64(data, 'image/jpeg'),
  { type: 'text', text: 'What plant is this?' },
]);

Learn more →

RAG Ready

LanceDB vector store, token-aware chunking, ingestion pipeline, and retrieval tools out of the box.

typescript
import { LanceDBVectorStore } from '@agentionai/agents/core';
import { ClaudeAgent } from '@agentionai/agents/claude';

const store = await LanceDBVectorStore.create({ embeddings, uri: './data' });
const searchTool = store.toRetrievalTool('Search knowledge base');

const agent = new ClaudeAgent({ tools: [searchTool] });

Learn more →

Observability

Per-call and per-node token counts, duration metrics, full execution visibility.

typescript
import { MetricsCollector } from '@agentionai/agents/core';

const metrics = new MetricsCollector();
await pipeline.execute(input, { metrics });

console.log(metrics.getMetrics());
// { totalTokens: 4600, totalDuration: 3200, nodes: [...] }

Learn more →

Quick Start Example

A research pipeline with sub-agent delegation, multi-provider setup, and graph composition:

typescript
import { ClaudeAgent } from '@agentionai/agents/claude';
import { OpenAiAgent } from '@agentionai/agents/openai';
import { Tool, Pipeline, AgentGraph } from '@agentionai/agents/core';

// Define a search tool
const searchTool = new Tool({
  name: 'web_search',
  description: 'Search the web for current information',
  inputSchema: { type: 'object', properties: { query: { type: 'string' } } },
  execute: async ({ query }) => fetchSearchResults(query),
});

// Research assistant (cheaper model for data gathering)
const researchAssistant = new OpenAiAgent({
  id: 'research-assistant',
  name: 'Research Assistant',
  description: 'Search and summarize information on topics.',
  model: 'gpt-4o-mini',
  tools: [searchTool],
});

// Lead researcher delegates to assistant, synthesizes findings
const researcher = new ClaudeAgent({
  id: 'researcher',
  name: 'Lead Researcher',
  description: 'Research topics thoroughly using your assistant.',
  model: 'claude-sonnet-4-5',
  agents: [researchAssistant],  // Assistant available as a tool
});

// Writer produces final output
const writer = new ClaudeAgent({
  id: 'writer',
  name: 'Writer',
  description: 'Write a clear, engaging summary from the research.',
  model: 'claude-sonnet-4-5',
});

// Compose into a pipeline
const pipeline = new Pipeline([researcher, writer]);
const result = await pipeline.execute('Latest developments in quantum computing');

What this demonstrates:

  • Agents as tools — The researcher delegates to the assistant when needed
  • Multi-provider — GPT-4o-mini for bulk searching, Claude for synthesis
  • Graph composition — Extend to parallel branches, voting judges, or nested pipelines

See more examples →

Why Developers Choose Agention

Raw SDKsHeavy FrameworksAgention
ControlFullLimitedFull
BoilerplateHighLowLow
TransparencyFullLimitedFull
Multi-providerManualVariesBuilt-in
TypeScriptVariesOften partialNative
  • Ship faster — Stop rebuilding agent infrastructure for every project
  • Stay flexible — Swap providers, mix models, customize everything
  • Keep control — See exactly what's happening at every step
  • Scale confidently — Built-in metrics, token tracking, and observability

Installation

bash
npm install @agentionai/agents

Install provider SDKs as needed:

bash
npm install @anthropic-ai/sdk  # For Claude
npm install openai             # For OpenAI/GPT

Get started →

Documentation

Agention - AI Agents and Workflows