Install
openclaw skills install agent-osPersistent agent operating system for OpenClaw. Agents remember across sessions, learn from experience, coordinate on complex projects without duplicate work.
openclaw skills install agent-osAgents that remember. Learn. Coordinate.
Agent OS enables multi-agent project execution with persistent memory:
clawhub install nova/agent-os
const { AgentOS } = require('agent-os');
const os = new AgentOS('my-project');
// Register agents with capabilities
os.registerAgent('research', '🔍 Research', ['research', 'planning']);
os.registerAgent('design', '🎨 Design', ['design', 'planning']);
os.registerAgent('dev', '💻 Development', ['development']);
os.initialize();
// Run a project
const result = await os.runProject('Build a feature', [
'planning',
'design',
'development',
]);
console.log(result.progress); // 100
Persistent worker with:
Decomposes goals into executable tasks:
Runs tasks sequentially:
Orchestrates everything:
AgentOS (top-level orchestration)
├── Agent (persistent worker)
│ ├── Memory (lessons, capabilities, history)
│ └── State (current task, progress)
├── TaskRouter (goal decomposition)
│ ├── Templates (planning, design, development, etc.)
│ └── Matcher (task → agent assignment)
└── Executor (task execution)
├── Sequential runner
├── Progress tracking
└── State persistence
All state is saved to the data/ directory:
[agent-id]-memory.json — Agent knowledge base[agent-id]-state.json — Current agent status[project-id]-project.json — Project task list + statusThis means: ✅ Projects survive restarts ✅ Agents remember past work ✅ Resume mid-project seamlessly
agent-os/
├── core/
│ ├── agent.js # Agent class
│ ├── task-router.js # Task decomposition
│ ├── executor.js # Execution scheduler
│ └── index.js # AgentOS class
├── ui/
│ ├── dashboard.html # Live progress UI
│ ├── dashboard.js # Dashboard logic
│ └── style.css # Styling
├── examples/
│ └── research-project.js # Full working example
├── data/ # Auto-created (persistent state)
└── package.json
new AgentOS(projectId?)
registerAgent(id, name, capabilities)
initialize()
runProject(goal, taskTypes)
getStatus()
getAgentStatus(agentId)
toJSON()
startTask(task)
updateProgress(percentage, message)
completeTask(output)
setBlocker(message)
recordError(error)
learnLesson(category, lesson)
reset()
getStatus()
decompose(goal, taskTypes)
matchAgent(taskType)
getTasksForAgent(agentId, tasks)
canExecuteTask(task, allTasks)
getNextTask(tasks)
completeTask(taskId, tasks, output)
getProjectStatus(tasks)
initializeProject(goal, taskTypes)
execute()
executeTask(task)
getStatus()
See examples/research-project.js for the canonical example:
npm start
This demonstrates:
Expected output:
✅ Registered 3 agents
📋 Task Plan: 12 tasks
🚀 Starting execution...
✅ [Task 1] Complete
✅ [Task 2] Complete
...
📊 PROJECT COMPLETE - 100% progress
Agents should remember what they learn.
Most agent frameworks are stateless. Agent OS keeps persistent memory so agents:
MIT
Built with ❤️ by Nova for OpenClaw
See README.md and ARCHITECTURE.md for complete documentation.