MunitasFeature tourAll walkthroughs

All walkthroughs / Health organisation

Health organisation · AI agents

Grant an AI agent permission to call an external host

An AI agent is a program that works on data on somebody's behalf. Before a new version of one can be deployed, the network architect decides which external hosts it may call. A data engineer uploads a version and lists the one host it needs. Neither the engineer nor the custodian who owns the agent can decide the list. The network architect approves it with a written reason, and an approved version can then be deployed. The same code, listing a host that nobody can account for, is refused and cannot be deployed.

13Steps
3People
about 10Minutes to read
Who is involved
Devi
Data engineer in the Health organisation
Okonjo
Data custodian for the Radiology department
Turner
Network architect in the Health organisation

How to read this page

Words used on this page

Organisation
A company or hospital group that uses Munitas. Each organisation sees only its own data.
Department
A team inside an organisation that owns some of its data, such as Cardiology.
Custodian
A person who holds the data custodian role, which allows deciding who may read data. A custodian decides for the departments they are an approver for.
Agent
A program registered on Munitas, with a named owner, that Munitas runs on somebody’s behalf instead of a person reading data directly.
Version of an agent
One uploaded and sealed copy of an agent’s code. Uploading again makes a new version, and the older ones stay.
Host
The name of a computer on the internet that a program contacts, such as reports.radiology.example. For an agent, a host is an external address that it asks to be allowed to call.
Egress approval
A network architect’s decision on the list of external hosts that one version of an agent asks to call. A version that lists hosts cannot be deployed until the list is approved, and a version that lists none needs no approval.
Network architect
A role that decides which external hosts an agent version may call. The person who uploaded the version cannot decide it, and neither can a custodian who does not hold this role.
Deploy
To make one version of an agent the one that runs when somebody starts a run. Only one version of an agent is active at a time.
Run
One execution of an agent or a pipeline, started for a stated purpose.
Dataset
A named collection of records, such as a table of patient admissions.
Claim
A statement, made by the person who brings a dataset in, about how sensitive it is. A different approver of the owning department has to confirm it.
Sealed
Finished and closed for good, so that it can never be edited.
Version
One sealed state of a dataset. Changing the contents means making a new version, never editing an old one.
Fingerprint
A value worked out from the exact contents of a file. It changes if even one byte changes, so it shows that a file was not altered.
PART ONE

A version of an agent names the hosts it wants to call

An AI agent is a program that works on data on somebody's behalf, with a named owner, under the same rules as a person. Before a new version of an agent can be put to work, Munitas asks one more question: which external computers will this code contact? Those computers are called hosts, and a host is the name of a computer on the internet, such as reports.radiology.example.

1
Devi
Devi opens the agent that the Radiology department owns
Munitas console · An agent · /agents/<id>

Devi is a data engineer in the Health organisation. The agent is called radiology-intake-triage, and it ranks radiology intake documents for a person to review. It belongs to the Radiology department. Each version of an agent is one uploaded and sealed copy of its code, and a sealed version can never be changed. This agent already has one version, version 1, uploaded on the page before this one. It calls no external host.

Screenshot: Devi opens the agent that the Radiology department owns
The heading is radiology-intake-triage, and under it Ranks radiology intake documents for human review. Owned by says Radiology and Registered by says Devi. Under Versions the table has one row, v1, with the green label active, the model none and the source path sandboxed · main.py.
2
Devi
Devi uploads the code and lists the one host it may call
Munitas console · An agent · /agents/<id>, the upload form

Devi chooses the zip file that holds the agent's code, says that it calls no model, and opens the part of the form for tools and hosts. A tool is something the agent may do, here reading a version of a dataset. In this example the code needs to fetch report templates from the hospital group's own reporting service, so Devi lists that one host. The form says plainly that a list of hosts has to be approved before the version can be deployed.

Screenshot: Devi uploads the code and lists the one host it may call
The box Project (.zip) holds triage-agent.zip and Model holds none. Tools it may call holds read_dataset_version and Hosts it may call holds reports.radiology.example. Under the hosts box the page says A non-empty list has to be approved by a network architect before this version can be deployed.
3
Devi
The version is sealed, and it cannot be deployed yet
Munitas console · An agent · /agents/<id>, the list of versions

Munitas seals the upload as version 2 and records who registered it and the fingerprints of what it holds. Deploying a version means making it the one that runs when somebody starts a run. Because this version asked to call a host, it has filed an egress approval, which is a request for a network architect to decide the list of hosts. Until that is decided, the Deploy button does not work.

Screenshot: The version is sealed, and it cannot be deployed yet
The row for v2 carries a yellow label egress pending. Under What it may call it lists the tool and Hosts: reports.radiology.example with a link view request. The Deploy button at the end of the row is greyed out. Below it, v1 is still the active version.
PART TWO

Somebody else decides

The list of hosts is decided by a network architect, a person who holds a role of that name. The person who uploaded the version cannot decide it, and neither can a custodian who does not hold the role, even the custodian of the department that owns the agent.

4
Devi
Devi cannot decide the request that Devi filed
Munitas console · An egress approval · /egress-approvals/<id>

Devi follows the link to the request. The page shows what the version asked for, and a box for the reason behind a decision. The platform does not let the person who uploaded a version decide its hosts, so both buttons are greyed out for Devi, and the page says why.

Screenshot: Devi cannot decide the request that Devi filed
The heading is radiology-intake-triage v2 with the label Waiting for a decision. Requested hosts says reports.radiology.example, Model says none, and Submitted by says Devi. Under Your decision the page says “You submitted this version, so somebody else has to decide its requested hosts.” and both Approve these hosts and Refuse are greyed out.
5
Okonjo
The custodian who owns the agent cannot decide it either
Munitas console · An egress approval · /egress-approvals/<id>

Okonjo is the data custodian for the Radiology department, which owns the agent, and decides who may read Radiology's data. Choosing which external hosts an agent may call is a different decision, and it belongs to a role of its own. Okonjo can open the request but has no way to decide it.

Screenshot: The custodian who owns the agent cannot decide it either
The same request shows Waiting for a decision. Under Your decision the page says “Approving a version's requested hosts is not part of your role.” and both buttons are greyed out.
6
Turner
Turner, the network architect, sees the request waiting
Munitas console · Home · /

Turner holds the network architect role, so the home page is about one thing: the requests that wait for a decision on hosts. A tile counts them, and the first of them is listed with the agent, the host it asks to call, who uploaded the version and when.

Screenshot: Turner, the network architect, sees the request waiting
The heading is Welcome, Turner, and the line under it says You decide which external hosts each agent version may call. The first tile says 1 over Waiting for your decision. The table lists radiology-intake-triage, Version 2, reports.radiology.example, Devi and a button Review. Decided lately says No decided approvals.
7
Turner
The Egress approvals page lists every request, waiting or decided
Munitas console · Egress approvals · /egress-approvals

The same request is on the Egress approvals page, which keeps every request, those waiting and those already decided. Each line names the agent version, the hosts it asks for, its state and who submitted it.

Screenshot: The Egress approvals page lists every request, waiting or decided
The page says 1 waiting on a decision. The table has the columns Agent, Requested hosts, State, Submitted by and Decided, and one row: radiology-intake-triage v2, reports.radiology.example, Waiting for a decision, Devi.
8
Turner
Turner writes why, and both buttons become available
Munitas console · An egress approval · /egress-approvals/<id>

Turner opens the request and reads what the version asked for. A decision needs a reason, written before the buttons work, because whoever reads the decision later will not have this screen in front of them. Turner holds the right role and did not upload the version, so nothing blocks the decision.

Screenshot: Turner writes why, and both buttons become available
The box under Why you decided this holds Turner's reason, One host, run by the hospital group's own reporting service. The agent needs it to fetch report templates. Both Approve these hosts and Refuse are now ready to press.
9
Turner
Turner approves the host
Munitas console · An egress approval · /egress-approvals/<id>

The decision is recorded with who made it, when, and the reason, which is kept with the decision. The label changes from waiting to approved. The page also repeats what the approval is: it lets the version be deployed, and it does not claim that any call to the host has been made.

Screenshot: Turner approves the host
A notice at the bottom right says Hosts approved. The label is now Approved, and under Your decision the page says Approved by Turner on the date and time, followed by Turner's reason. The line under What this version asked for says Approving this is what lets the version be deployed; it is not itself a claim that any request has actually been made yet.
PART THREE

What the decision allows

The decision is the only thing that changes whether a version can be deployed. The same code, with a different list of hosts, can end up on either side of it.

10
Devi
Back on the agent's page, the approved version can be deployed
Munitas console · An agent · /agents/<id>, the list of versions

Devi opens the agent again. The label on version 2 has changed from waiting to approved, and the Deploy button, which was greyed out, now works.

Screenshot: Back on the agent's page, the approved version can be deployed
The row for v2 now carries a green label egress approved, and the Deploy button at the end of the row is blue.
11
Devi
Devi deploys it, and it becomes the version that runs
Munitas console · An agent · /agents/<id>, the list of versions

Devi presses Deploy. Version 2 is now the active version of the agent, which means it is the one that runs when somebody starts a run. Version 1, which was active until now, stops being the active version and gets a Deploy button of its own.

Screenshot: Devi deploys it, and it becomes the version that runs
A notice at the bottom right says v2 deployed. The row for v2 shows a green label active beside the version, and the Deploy button has gone. The row for v1 no longer has the label active, and its own Deploy button is now ready.
12
Turner
The same code, uploaded again with another host, is refused
Munitas console · An egress approval · /egress-approvals/<id>

Devi uploads the same code again as version 3, this time listing files.unknown-host.example, and the version waits for a decision in the same way. A script checked that, and there is no picture of it. Turner reads the request and refuses it, with a reason that says what is missing. The decision is about the list of hosts, not about the code, which is why the same code can be approved once and refused once.

Screenshot: The same code, uploaded again with another host, is refused
A notice at the bottom right says Refused. The heading is radiology-intake-triage v3 with the label Refused. Requested hosts says files.unknown-host.example, and under Your decision the page says Refused by Turner on the date and time, followed by the reason: Nobody on the platform team can say who runs this host, so it cannot be approved until its owner is named.
13
Devi
The refused version cannot be deployed, and version 2 carries on
Munitas console · An agent · /agents/<id>, the list of versions

On the agent's page, version 3 is marked as refused and its Deploy button is greyed out. The grey button is not the only barrier: a script asked Munitas itself to deploy version 3, signed in as Devi, and Munitas refused with the reason that this version asks to call files.unknown-host.example, that the request is refused, and that a network architect has to approve it before the version can run. Nothing was deployed, and there is no picture of that check. Version 2 is untouched: it is still the active version, and it still carries its approval.

Screenshot: The refused version cannot be deployed, and version 2 carries on
The row for v3 carries a red label egress refused, lists files.unknown-host.example and its Deploy button is greyed out. The row for v2 still shows active and egress approved, and the row for v1 is below them.