Skip to content

Core Primitives

Everything in Minions is built from three primitives:

A Minion is a structured object instance — the fundamental unit of the system. Every minion has a type, a title, and a set of validated fields.

{
"id": "abc-123",
"title": "Research Assistant",
"minionTypeId": "builtin-agent",
"fields": {
"role": "researcher",
"model": "gpt-4"
},
"status": "active",
"createdAt": "2024-01-15T10:00:00Z",
"updatedAt": "2024-01-15T10:00:00Z"
}
interface Minion {
id: string;
title: string;
minionTypeId: string;
fields: Record<string, unknown>;
status?: MinionStatus;
createdAt: string;
updatedAt: string;
}
FieldDescription
idUUID v4 identifier
titleHuman-readable name
minionTypeIdReference to the type
fieldsDynamic field values
createdAtCreation timestamp
updatedAtLast update timestamp

Status (active, todo, in_progress, completed, cancelled), priority (low, medium, high, urgent), description, tags, dueDate, and more.

A MinionType defines the schema for a kind of minion. It specifies what fields are available, their types, and validation rules.

const agentType = {
id: 'builtin-agent',
name: 'Agent',
slug: 'agent',
schema: [
{ name: 'role', type: 'string', label: 'Role' },
{ name: 'model', type: 'string', label: 'Model' },
{ name: 'tools', type: 'tags', label: 'Tools' },
],
};

Built-in types include: note, link, file, contact, agent, team, thought, prompt-template, test-case, task.

A Relation is a typed, directional link between two minions. Relations create structure — hierarchies, dependencies, sequences.

graph.add({
sourceId: 'agent-001',
targetId: 'skill-001',
type: 'parent_of',
});

Supported types: parent_of, depends_on, implements, relates_to, inspired_by, triggers, references, blocks, alternative_to, part_of, follows, integration_link.