BEROUNOS for AI-native devices

Agents & A2A

Every app can bring its own specialists.

An application in Beroun can contain agents. It publishes them to the system, Caroline hands them tasks, and the system keeps every step visible.

How it works

From a sentence to a finished task.

The owner asks Caroline. "Plan my week from the calendar." By voice or in chat.

Caroline picks the specialist from the agents' own descriptions, here the calendar's planner, and hands it a task.

The agent works on its own. With plain code or with AI of its own; Caroline watches progress and can cancel at any time.

When the agent needs a decision, "move Thursday's lunch?", the task waits for input. Caroline asks the owner and passes the answer back into the same task.

The result comes back to Caroline, who reports to the owner. The whole chain, who was asked what and what came out, is in the log.

The task

Tasks with a life cycle.

A task is not a function call that blocks. It has a state, the assistant sees how it is going, and a long task never holds the assistant up.

submitted→working→input required→completed·failed·canceled

Caroline is the one dispatcher

Tasks come from her. App agents do not listen to other traffic and do not call one another; everything goes through her and the system.

The system is the broker

The dispatcher checks permissions, starts the agent's service on demand, keeps the task log and signs every action.

The owner sees everything

Which agent was given what, what it asked, and what came out.

In the manifest

An agent is a few lines of the app's manifest.

Name, a description for the assistant, skills with their input and result, the permissions it needs, and where it runs: in the page, in the app's service, or in a process of its own. Install the app and its agents are registered; remove it and they are gone. There is no separate registry and nothing to switch on.

"agents": [{ "id": "planner", "description": "Plans the week from the calendar and moves entries", "skills": [{ "name": "plan_week", "description": "Makes a plan for a week; asks when entries conflict", "input": {"week": "string?", "goal": "string"}, "output": "text", "long": true, "confirm": false }], "host": { "service": "calendard", "endpoint": "agent" }, "camerlengo": ["ai:*"], "permissions": ["notifications.post"] }]

A calendar's planner agent. long runs the skill as a task Caroline can follow and cancel; confirm marks a skill with an effect outside the app.

System permissions, by name

An agent names what of the system it may use. Its own app's data needs no permission, and another app's data is out of its reach: Caroline is the one who passes things between apps.

files.readfiles.writenet.statusnet.managesettings.readsettings.writenotifications.readnotifications.postsoundvibrationmessage_boxapps.open

AI services on tap

An agent may call the Camerlengo API of SquirrelWisdom for models and other commands. It names the command families it needs in the manifest, and that declaration is the permission.

The call goes through the system dispatcher: keys and the owner's session stay with the system, and every call is logged under the agent's name, so it is clear who spent what.

Open protocol

A bridge to A2A.

Tasks and messages in Beroun follow the form of the open Agent2Agent protocol. That opens the device in both directions.

Out

An app's agent can be reachable from outside: the system builds its Agent Card from the manifest and accepts tasks over the network.

In

External agents join Caroline as her own, declared through a manifest in the same way.

For an app that only declares tools for the assistant nothing changes: it is simply an agent without a model of its own.

Beroun

Specialists in every app. One assistant in charge.

Declare an agent in your manifest and Caroline can put it to work.

Build an agentSee the architecture