Skip to content

Programmatic API

Alessio Rocchi edited this page Jan 27, 2026 · 1 revision

Programmatic API

Using aistack programmatically in TypeScript/JavaScript.


Installation

npm install @blackms/aistack

Basic Usage

import {
  spawnAgent,
  getMemoryManager,
  startMCPServer,
  getConfig
} from '@blackms/aistack';

// Spawn agent
const agent = spawnAgent('coder', {
  name: 'my-coder'
});

// Use memory
const memory = getMemoryManager();
await memory.store('key', 'content');

const results = await memory.search('query');

// Start MCP server
const server = await startMCPServer(getConfig());

Configuration

import { loadConfig, getConfig } from '@blackms/aistack';

// Load from file
const config = loadConfig('./aistack.config.json');

// Get cached config
const config = getConfig();

Agents

import {
  spawnAgent,
  getAgent,
  listAgents,
  stopAgent
} from '@blackms/aistack';

// Spawn
const agent = spawnAgent('coder', {
  name: 'my-coder',
  metadata: { project: 'myapp' }
});

// Get by ID
const agent = getAgent('agent-id');

// List all
const agents = listAgents();

// Stop
stopAgent(agent.id);

Memory

import { getMemoryManager } from '@blackms/aistack';

const memory = getMemoryManager();

// Store
await memory.store('key', 'content', {
  namespace: 'myns',
  metadata: { tags: ['important'] },
  generateEmbedding: true
});

// Search
const results = await memory.search('query', {
  namespace: 'myns',
  useVector: true,
  limit: 10
});

// Get
const entry = memory.get('key', 'myns');

// Delete
await memory.delete('key', 'myns');

Tasks & Sessions

// Create session
const session = await memory.createSession({
  project: 'myproject'
});

// Create task
const task = await memory.createTask(
  'coder',
  'Implement feature',
  session.id
);

// Assign task
await memory.assignTask(task.id, agent.id);

// Complete task
await memory.updateTaskStatus(task.id, 'completed', 'Done');

// End session
await memory.endSession(session.id);

Coordination

import {
  TaskQueue,
  MessageBus,
  HierarchicalCoordinator
} from '@blackms/aistack';

// Task Queue
const queue = new TaskQueue();
queue.enqueue(task, 8); // priority

// Message Bus
const bus = getMessageBus();
bus.send(fromId, toId, 'message:type', payload);
bus.subscribe(agentId, handler);

// Coordinator
const coordinator = new HierarchicalCoordinator({
  maxWorkers: 5
});
await coordinator.initialize();
await coordinator.submitTask(task, 8);

Providers

import {
  createProvider,
  AnthropicProvider,
  OpenAIProvider
} from '@blackms/aistack';

// Create from config
const provider = createProvider(config);

// Or directly
const anthropic = new AnthropicProvider(apiKey, model);
const openai = new OpenAIProvider(apiKey, model);

// Chat
const response = await provider.chat([
  { role: 'user', content: 'Hello' }
], {
  temperature: 0.7,
  maxTokens: 1000
});

Related:

Clone this wiki locally