Skip to content
Developer Preview — known limitations are marked in red and will be fixed for production.

Data model

The platform stores its business data as ordinary Polarion work items. You can query, report on, link and audit them like any other item. A small amount of operational state lives in PocketBase.

Two kinds of projects are involved:

  • Agent Pool (one per installation): agents, skills and MCP connections.
  • Work projects (any number): engagements, tasks, agent runs, memories and the artifacts agents create.

Everything the platform adds is created by Agentic setup (Administration → Setup) from a versioned configuration that ships with each release; see Installation and Enable a project. All identifiers carry an ai prefix — type ids ai…, link roles ai_…, enumerations ai-… — so they never clash with a customer’s own configuration. Field ids have no prefix.

Type id Name Represents Description field holds
aiAgent Agent An AI agent that can be hired into projects The persona / job description, used at the top of the agent’s instructions
aiSkill Agent Skill Instructions an agent follows, and the tools they allow The skill’s instructions
aiConnection Agent Connection An MCP server agents may use Notes for reviewers
aiSettings Agentic Settings The platform’s settings for this project (see Agentic settings) —
Field Meaning
role Job title, e.g. “Requirements Engineer”
botUser The Polarion user the agent acts as
owner The person responsible for this agent
model <provider>:<model>, e.g. anthropic:<model>, openai:<model>, google:<model>
harness builtin (loop in the runner), claude_code or codex (in the task’s sandbox); enumeration ai-agent-harness
avatar Emoji shown in the views and in the agent’s comment signature
capacity, rateCard, heartbeatMinutes Informational fields shown in the pool
Field Meaning
tools Multi-select of the Polarion tools this skill allows (enumeration ai-agent-tool, see Tools)
Field Meaning
serverUrl MCP endpoint (streamable HTTP)
authType none, bearer (token) or url (the secret is the whole server URL); enumeration ai-connection-auth
credential Name of the default secret in the runner’s secret store (never the value)
toolPolicy JSON: per tool its reviewed description, input schema, read/destructive hints and policy read, approve or block
discoveredAt When the tool list was last read from the server
scoped, scopeArguments, scopeHint, scopeOptions Scoping: the data is partitioned (repos, projects), which tool arguments carry the scope, what a scope looks like, and how to list real values
serverHeaders JSON: extra request headers for the server
gitRemote, gitAuth, gitPushBranches Git over the gateway: remote URL template with {repo}, credential style, branch patterns agents may push to
Type id Name Represents
aiEngagement Agent Engagement One agent hired into this project
aiTask Agent Task Work for an agent. A type of its own, so the project’s own Task type and boards stay untouched
aiRun Agent Run One run of an agent on a task
aiMemory Agent Memory A lesson from the supervisor’s feedback, proposed by an agent and approved by a person
aiSettings Agentic Settings The platform’s settings for this project

Agents create artifacts of the project’s own types (requirements, test cases, risks, user stories, …); enabling a project adds nothing to those types except the two provenance fields.

Field Meaning
poolAgent The Agent Pool item that was hired
botUser The agent’s Polarion user
supervisor The person who answers questions and approves results
engagementStatus active, paused or ended; only active engagements get work (enumeration ai-engagement-status)
budget, spent Budget and cost so far, in USD (see Budgets)
projectInstructions Extra instructions for this project, part of every prompt
grants JSON: the connections granted here, each with optional credential, scope, notes for the agent and standing approvals
internetSites Websites the agent’s sandbox may read, one per line; empty means none
Field Meaning
botUser, provider, model Who ran and on which model
trigger Why the run started (enumeration ai-run-trigger, see Agent runs)
outcome done, submitted, asked_human, waiting_approval, failed or budget_stopped (enumeration ai-run-outcome)
tokensIn, tokensOut, costUsd, steps, durationSec Usage and cost of the run
skillRevisions The skills in effect for the run
memories Ids of the project memories in the run’s instructions
ledger JSON: everything the run read, searched, created, changed, commented, delegated, requested or was blocked from
sandbox JSON, sandbox runs only: sandbox id, image, harness, commands, web pages read, allowed sites, budget cap

The run’s description holds a readable action log, the artifact table and the table of gateway calls. The full transcript is attached as transcript.html and transcript.json.

Field Meaning
forAgent The agents this lesson is for (multi-user field)

One Agentic Settings item per project, created by Agentic setup:

Field Meaning
role pool or work. The runner finds the Agent Pool as the project whose settings item has role pool; the Setup page lists AI-enabled projects by role work
configVersion The configuration version the project was last set up with. Projects behind the release’s version are marked for upgrade
runnerUrl Pool only: the Agent Runner address the views call (default /agentic-runner)

Two custom fields exist for all work item types:

Field Meaning
aiGenerated true on everything an agent creates (artifacts, sub-tasks, memories, agent runs)
authorAgent The bot user of the agent that produced the item

aiGenerated also decides how changes are handled: agents change AI-made items directly, while changes to items written by people are held for the supervisor’s approval. See Decisions.

Type Statuses Actions
aiAgent draft → available → retired publish, retire, reinstate, rework (available → draft)
aiSkill draft → in_review → approved → retired submit, approve, send back, rework, retire
aiConnection draft → in_review (“in security review”) → active ↔ disabled submit, approve, send back, disable, enable, rework
aiMemory draft (“Proposed”) → active → retired approve, discard, retire, reinstate

What the statuses mean to the runner:

  • Only available agents get work. Draft and retired agents are ignored.
  • Only approved skills reach a prompt. Changing a skill means rework and a new review.
  • Only active connections can be granted and are served by the gateway.
  • Only active memories whose forAgent includes the agent reach its instructions.

Agent Task statuses. The aiTask type has its own status list:

Status Meaning
open In the backlog, not started
inprogress An agent is working on it
waiting_input The agent asked a question, or a change is held for approval, or the agent stopped twice without finishing
awaiting_approval The agent submitted its result for review
reopened Sent back with feedback
done, rejected Closed by a person
erDiagram
  AGENT ||--o{ SKILL : "ai_has_skill"
  AGENT }o--o{ CONNECTION : "ai_uses"
  ENGAGEMENT }o--|| AGENT : "ai_engages"
  TASK }o--|| AGENT : "assigned to"
  AGENT_RUN }o--|| TASK : "ai_run_of"
  ARTIFACT }o--|| TASK : "ai_produced_by"
  ARTIFACT }o--|| AGENT_RUN : "ai_created_by_run"
  MEMORY }o--|| TASK : "ai_learned_from"
  TASK }o--o| TASK : parent
Role From → to Created by
ai_has_skill agent → skill Pool admin
ai_uses agent → connection (the agent can work with this system) Pool admin
ai_engages engagement → pool agent Hire wizard
ai_reports_to engagement → engagement Available for an org structure; not used by the runner’s logic
ai_produced_by artifact → task Agent tools, automatically
ai_run_of agent run → task Runner
ai_created_by_run artifact → agent run Runner, for every item the run created
ai_modified_by_run item → agent run Runner, for every item the run changed
ai_learned_from memory → task where the feedback was given propose_memory
parent sub-task → task delegate
depends_on sub-task → sub-task that must be done first delegate with an “after” task

Agents link artifacts with the project’s own roles, for example refines, verifies, relates_to, depends_on, mitigates, parent and implements.

Hyperlink roles (links to objects in connected systems, set with add_hyperlink):

Role For
tracked_in Issue or ticket that tracks the item
implemented_in Commit, branch or merge request implementing it
verified_by Pipeline, job or test run that verifies it
ref_ext Anything else

PocketBase holds operational state only. Its API rules are locked: only the runner (as superuser) reads and writes it.

Collection Purpose
events Live activity per run (text as it streams, tool calls and results, run started/finished) for the views
runs A short record per run for the live view (status, usage, the Polarion Agent Run id)
approvals Held write calls: task, agent, server, tool, exact arguments, the agent’s reason, status, who decided, when, why, and the result
standing_rules A copy of “always allow” rules per project, agent, connection and tool, restored on a re-hire
task_state Watcher bookkeeping: the last comment it processed per task
chats Sidebar chats per project, user and agent: message history, turns, tokens and cost
secrets Connection credentials, encrypted; the browser can set them but never read them