Skip to content
Changelog

Company Manager can run Company Routines

October 21, 20261 min read

Agno CompanyOS Routines now accept executor_id='company-manager-internal', and AgentOS resolves that ID from the AgentOS that owns the Company, then schedules POST /agents/company-manager-internal/runs.

Routine(
    name="weekly-review",
    executor_type="agent",
    executor_id="company-manager-internal",
    cron_expr="0 9 * * 1",
    timezone="Europe/London",
    instructions=REVIEW,
    auto_accept=False,
)

Earlier releases looked Routine executors up only in the reusable registry, which leaves the framework managers out on purpose, so this Routine failed at bootstrap. The old product-manager-internal ID failed the same way. We ran the same declaration on both releases with SQLite and no model call.

Real output from bootstrapping one declared Product on SQLite. With executor_id company-manager-internal, earlier releases raise ValueError Routine executor is missing from the registry, and this release saves the schedule endpoint /agents/company-manager-internal/runs. With executor_id os-manager-internal, earlier releases raise the same missing-from-registry error, and this release raises ValueError Only the Company Manager can execute Routines among framework managers.

The /company/routines API gives the same answer: a 201 with that endpoint for Company Manager, and a 422 for OS Manager. Company Manager is the only framework manager allowed here. OS Manager, Platform Builder and Platform Manager can edit the platform, and a Routine runs unattended on Source content. Saved or user-defined components can't claim the reserved IDs, and a stale archived catalog row no longer collides with them.

The declaration works with or without OSManager. AgentOS always serves Company Manager at its own agent routes, and when OS Manager is on, the team gets a separate Company Manager member that carries OS Manager's member_tool_call_limit. Product Manager is now called Company Manager. AgentOS.product_manager still works as a deprecated alias of AgentOS.company_manager.

A Routine run by Company Manager keeps the usual limits. Company Manager has no scheduler tools, and it can't be accepted as a Task executor. Two reporting gaps are fixed for every Routine too. A denied update_company_status write now fails the run, and so does a Studio run_agent, run_team or run_workflow delegation that comes back with an error. If you call rehydrate_product or CompanyManager.create_routine from Python, pass agent_os=agent_os so the manager can be found.

See the cookbook, and learn more about the scheduler in the documentation.

Frequently asked questions

Declare the Routine with executor_type set to agent and executor_id set to company-manager-internal. AgentOS schedules it against POST /agents/company-manager-internal/runs. The Routine API and Company Manager chat accept the same target.

No. AgentOS rejects os-manager-internal, Platform Builder and Platform Manager as Routine executors with the error "Only the Company Manager can execute Routines among framework managers", because those managers can change the platform and Routines run unattended on Source content.

It is now called Company Manager, with the ID company-manager-internal. The old ID product-manager-internal stays reserved, and AgentOS.product_manager remains as a deprecated alias of AgentOS.company_manager.

Shipped around the same time