The Problem We're Solving

You decide to build a system with multiple agents. Each handles a specific job well:

  • Agent A processes JSON and validates schemas
  • Agent B does data transformation
  • Agent C runs analysis and generates reports

Now you need to route 1000s of tasks to these agents. What could go wrong?

Everything, actually.

Without orchestration, you end up with ad-hoc solutions: tasks get assigned randomly, one agent maxes out while others sit idle, there's no priority system, agents crash mid-task and you have no idea what happened.

Our Philosophy

Simple over Clever

The implementation is clean and well-organized. Read the code. It's straightforward. Start with kernel.py, then agent.py, then scheduler.py.

Explicit over Magic

Ainz-OS doesn't auto-recover failed agents. You control that. But it tells you what's broken. Your code, your decisions.

Production over Prototype

26+ tests passing. Measured performance. Real-world load testing. We use this in production.

Boring over Novel

We open-sourced it because the problem is common and the solution should be boring (not custom-engineered for every project).

Design Choices

Why Pydantic?

Type safety. We use Pydantic models for Agent, Task, and other core objects. Catches bugs early (wrong field type, missing required fields). Makes the code self-documenting.

Why Simulated Execution?

We don't want to run your code. That's your responsibility. Ainz-OS manages coordination, not execution. If you want to use Ainz-OS with real agents, you wrap them and call them from your orchestration code.

Why Priority Over Fairness?

Some work matters more. It's OK if batch jobs wait. Make it explicit in your design.

Why Hard Capacity Limits?

Soft limits fail in production. Hard limits are predictable. If an agent says capacity=5, it will never have 6 concurrent tasks. Period.

Open Source

MIT License - You can use this in production, modify it, fork it, whatever. No restrictions.