← Infrastructure

Company Manager

Model any organization as a team of LLM agents. Define reusable roles as templates, hire instances into your organizations, assign missions with typed inputs — and let a Receptionist handle plain-language requests on your behalf.

The Idea

An organization is a set of roles, each with a scope of responsibility, a way of working, and tools to get the job done. Company Manager takes that definition literally: every employee is an LLM agent whose behavior is entirely described by a template — a reusable role definition combining a system prompt, an allowed-tools whitelist, and a typed catalog of services it offers.

You run the company. You open the app, pick an organization, hire agents from templates, activate them, and assign missions — either directly to a worker, or in plain language through a Receptionist that routes the request for you. Work is executed in real time by LLMs from the AI Hub, using MCP tools scoped to each role. You observe, pause, refine, and fire.

The same pattern models a software team, a legal review desk, a support triage line, a finance back-office, or a research lab. What changes is the templates — not the infrastructure.

Templates and Agents — Roles vs Instances

Two concepts, cleanly separated. A template is a reusable job description (the role on paper). An agent is a hired instance of that template inside a specific organization (the employee in the chair). One template, many agents — across orgs, across teams.

Template

Lives in a JSON catalog on disk. Carries the system prompt, allowed tools, sampling defaults, and the typed capability contract. The single source of truth for what the role can do.

Agent

Lives in DuckDB. Carries identity (name, jobTitle, org), status (Idle / Working / Paused / Offline), full mission history. Its template id links back to the role definition.

Live Resolution

Every mission run resolves the prompt, tools and capabilities from the current template — not from a stale snapshot. Fix a typo in the template and every hired instance benefits at the next run, with zero re-hire.

Multi-instance

The same role can be hired into several organizations (one CR-rewriter per client, one ingester per mailbox), each keeping its own history and on/off switch. The role evolves once, the instances stay independent.

What an Agent Carries

The instance row is small and auditable. A handful of fields fully determine how it shows up in the org and how it behaves at run time.

Identity

Name, job title, organization id, and the template id it inherits its competences from. The CEO can rename and transfer instances without touching the role.

Allowed Tools

Resolved live from the template — a filtered subset of the MCP tool catalog. A sales agent sees CRM tools, not production database write access. Least privilege by default.

LLM Backend

Any backend registered in the AI Hub: local llama.cpp, Claude, GitHub Models. Sampling parameters (temperature, top-p) are applied only when the backend supports them.

Status

Idle, Working, Paused, or Offline. Activation is a deliberate act — a hired agent is not a running agent until you flip it on.

Capabilities — Typed Service Contracts

A capability is a named service an agent advertises. Not a free-text prompt, not a buried instruction — a typed contract: required and optional inputs (with types and defaults), expected outputs, a human-readable description. Missions invoke a capability the way client code calls a method.

Typed Inputs

Each input declares its type (string, integer, number, boolean, object, array), whether it is required, and an optional default. The mission UI builds a dynamic form from this schema — no JSON to write by hand.

Validated Launch

The runner refuses to start a mission whose required inputs are missing. The agent receives a deterministic, structured user task — not an ambiguous string.

Discoverable

Every capability across every agent of an org is exposed through one MCP tool: company_capability_list. Routers, dashboards, external integrations consume it as the org's service catalog.

Free-text Fallback

Need a one-shot job that doesn't fit any capability? Skip the binding and pass a free-text description. The same runner handles both modes.

Workers and Supervisors

Two agent types cover most organizational patterns.

Worker

Executes missions directly. Runs a ReAct loop against its allowed tools: think, call a tool, observe, iterate, produce a result. One mission at a time.

Supervisor

Orchestrates other agents. Receives a mission, decomposes it into sub-tasks, delegates each to an appropriate worker, monitors progress, synthesizes the results into a single outcome.

A Supervisor is just another agent with a specialized prompt and the ability to spawn sub-missions. Hierarchies emerge naturally: a Program Manager Supervisor can coordinate Team Lead Supervisors, each coordinating individual Workers. The bundled Receptionist template (see below) is a Supervisor specialized in routing plain-language requests across the whole org.

The Receptionist — Natural-language Front Door

Hiring a Receptionist gives the organization a single, conversational entry point. The CEO — or any external system through MCP — sends a plain-language request, and the Receptionist routes it to the right capabilities, in the right order, on the right agents.

Discovery

It calls company_capability_list to learn what every agent in the org currently advertises. No registry to maintain — the catalog is live.

Decomposition

One sentence, one capability. Several actions chained together (« list the meetings this week, then rewrite the latest one »), several sub-missions invoked in sequence. The next call's inputs can be drawn from the previous result.

Typed Delegation

For each step it picks the capability, identifies the agent that owns it, extracts inputs from the request, and launches a sub-mission via company_mission_run. Missing or ambiguous inputs are flagged as « assumed values » in the final report.

Synthesis

Once every sub-mission has returned, the Receptionist writes a structured summary: which capabilities were invoked, on which agents, with which inputs, and the high-level answer to the original request.

Bundled as a stock template, the Receptionist is also a starting point for specialization: clone it, narrow the allowed tools, tighten the prompt to a single domain, and you have a domain-specific concierge — an « accounting front desk », a « DevOps dispatcher », a « legal intake agent ». All variants benefit from the same live-resolution machinery: edit the template, every Receptionist already hired picks up the change at the next run.

How It Sits on the MCP Stack

Company Manager is not a new runtime. It is a plugin that composes existing pieces of the MCP infrastructure.

┌───────────────────────────────────────────────────────────┐ │ CEO UI — ImGui client plugin │ │ • roster, mission form (typed), capability editor, feed │ ├───────────────────────────────────────────────────────────┤ │ Company Manager Plugin (hexagonal: domain / app / infra) │ │ • Templates (JSON catalog) — roles, prompts, capabilities│ │ • Agents, Missions, Logs in DuckDB │ │ • MCP tools: hire, fire, assign, start, cancel, route… │ ├───────────────────────────────────────────────────────────┤ │ AI Hub RBAC MCP Tool Registry │ │ (LLM inference, (permissions) (agent capabilities) │ │ GPU scheduling) │ ├───────────────────────────────────────────────────────────┤ │ MCP Server — WebSocket JSON-RPC 2.0, plugin host │ └───────────────────────────────────────────────────────────┘

AI Hub

Single source of LLM inference. Every agent, regardless of backend, goes through the Hub — so GPU queues, rate limits, and concurrency are managed once, centrally.

RBAC

The CEO is an authenticated user. Every hire, fire, and mission start is traceable to a human identity. Agents inherit the CEO's effective permissions, filtered by their allowed tools.

MCP Tools

Every plugin already installed on the server — GitHub, Jira, accounting, data ingestion, BI — becomes a potential capability for an agent. No new integration layer.

DuckDB

Organizations, agents, missions, and every log entry live in a single embedded database. Queryable, exportable, auditable. No hidden state.

Organization Patterns

Nothing about the platform assumes a particular organizational shape. A few examples of what the same engine can model:

Software TeamProduct Manager Supervisor + Backend Dev + Frontend Dev + QA + Release Manager.
Support DeskTriage Supervisor routes incoming tickets to L1 / L2 / billing / refunds agents.
Legal ReviewParalegal Workers draft, Senior Counsel Supervisor validates against policy.
Finance Back-officeInvoice processing, reconciliation, anomaly flagging, with a Controller Supervisor.
Research LabLiterature Scout + Data Analyst + Report Writer, coordinated by a Principal Investigator.
Content StudioResearcher + Writer + Editor + SEO Analyst, chained by a Managing Editor.

Multiple organizations coexist in the same installation. Agents can be duplicated across organizations (copy the role, keep the same prompt) or transferred (reassign to a new org).

Real-time Observability

Every thought, tool call, tool result, and final output is a log entry broadcast over the MCP WebSocket. The CEO UI renders them live.

Activity Feed

A streaming view of what every active agent is doing, filterable by agent or mission.

Mission Replay

Every mission is a reproducible trace. Open a completed mission and see exactly how the result was reached — thought by thought, tool call by tool call.

Org Chart

Visual hierarchy of agents and supervisor relationships, rendered with ImPlot. Click a node, jump to the agent.

Why Build This on MCP

Multi-agent platforms exist as SaaS products. Company Manager is a different proposition.

Your Infrastructure

Runs on your servers. No data leaves your perimeter unless you explicitly allow an agent to use a remote backend.

Swappable Backends

Switch an agent from Claude to a local quantized model in one click. The job description doesn't change — only the cost profile.

Composable by Design

Every MCP tool you already built is reusable. Adding a new business capability is a plugin, not a rewrite.

Audit-ready

RBAC on the CEO side, per-agent tool filtering, full DuckDB trail on the storage side. Every action is attributable.

MCPAI HubRBACDuckDBTemplatesTyped CapabilitiesImGuiImPlotWebSocket JSON-RPCHexagonal architectureReAct