Your application and agent
Reasons, chooses tools and proposes actions. Your application supplies the authenticated user, resource and task. The agent holds no credential for a protected action.
Phalanx
Phalanx is a gateway you run in your own infrastructure, between your AI agents and the systems they change. Here is what it checks, how each decision is enforced at execution, what it records, and what your architecture needs.
Three parts stay separate, so the component that proposes an action is never the one that can perform it.
Reasons, chooses tools and proposes actions. Your application supplies the authenticated user, resource and task. The agent holds no credential for a protected action.
Checks authority and the contract, tracks budgets, evaluates evidence, issues one-use permits and records execution state. It runs as its own service; your business logic is not copied into it.
Holds the business credential, rechecks the permit's conditions, performs the operation and reports the result for verification. It can be your existing API or a small isolated service.
The agent calls a tool. The SDK adapter sends Phalanx the proposal, with the user and task your application authenticated.
Phalanx evaluates the action against its contract, current state, required evidence and remaining limits, and returns PERMIT, HOLD or BLOCK.
A permitted action receives a one-use permit bound to that exact operation.
The protected connector rechecks the conditions and performs the operation with its own credential.
Phalanx records the verified result, or marks it uncertain, and links it to the decision.
A contract describes one action precisely: what it touches, who may trigger it, where it may go, what state it depends on and which limits apply. Contracts are versioned files that you review and then activate explicitly. Staging a contract does not activate it.
| Effect class | What it governs |
|---|---|
| READ | Retrieving account information or a bounded query result |
| WRITE | Changing a declared record or resource |
| EGRESS | Sending a message or information to an approved destination |
| ACCOUNT_MUTATION | Changing customer or account state |
| FINANCIAL | A monetary operation you declare, in exact currency units |
| EXPORT_SHARE | Exporting or sharing declared information |
These are categories of action, not a catalogue of prebuilt integrations. Each protected action needs a connector to the API that performs it.
| Decision | What it means | What happens |
|---|---|---|
| PERMIT | The action meets every condition in its contract. | A one-use permit lets the connector perform that exact action. Execution and verification are recorded separately. |
| HOLD | An approval, fact or piece of evidence still needs authorized resolution. | Nothing executes. An authorized operator inspects and resolves the HOLD, and Phalanx rechecks the conditions. |
| BLOCK | The action is outside the task's authority or your rules. | No permit is issued. The connector never receives the request. |
HOLD is a real workflow state, not a prompt asking the chatbot to approve itself. Neither the agent nor the caller that proposed the action can resolve it.
Your application decides how each decision appears to your users. Phalanx returns machine-readable results, identifiers and receipt references; the wording is yours.
A permit is bound to one action: the signed configuration, the resource, the exact operation and the state it depends on. It works once. The connector rechecks those conditions immediately before it uses the credential.
Connector routes are fixed in configuration. The agent can't supply a new URL, header, credential, protocol or retry policy through its arguments.
If a route is unknown, disabled, mismatched, stale or ambiguous, the action stops. If Phalanx or an evidence source is unavailable, nothing falls back to a direct executor.
Sensitive reads go through the same gateway. Protected data is released only after the permitted read has executed and its result matches the declared schema. A held, blocked or failed read returns nothing protected. Bounded list and search queries are supported too, with declared filters and a fixed route.
Without a shared budget, each tool enforces its own limit, and an agent that spreads one task across three tools gets three allowances. In a configured shared workflow, participating tools draw from one task budget. Phalanx records usage across the workflow and applies what remains to every later action.
Budgets are durable, so retries and restarts don't reset recorded usage. A workflow groups 2 to 32 integrations and is opt-in. Tools you don't group keep their own independent limits.
A task maximum is a ceiling, not an entitlement. With Evidence Bridge, a contract can require an authoritative field in your system, such as an entitlement recorded for the customer, to support the value the agent proposes. Dynamic Autonomy then narrows the agent's authority to what that evidence supports, never above the maximum you set.
Missing, stale, invalid or conflicting evidence never widens authority. The checks are deterministic: numeric values from your system, compared by rules you declared. No model is involved.
If a connector accepted an operation but its reply never arrived, the action is marked UNCERTAIN. Phalanx won't send it again blindly. The outcome is reconciled first, using the operation's stable identity. A retry of the same operation is recognised as the same operation; a new action with different arguments is evaluated as new.
What "exactly once" can mean depends on the system at the other end. Some support idempotency keys, some are transactional, some only allow at-most-once delivery. The contract states which applies, and Phalanx enforces it. It doesn't promise exactly-once behaviour from a system that can't provide it.
Each receipt links a decision to its task, the action, the execution attempt and the verified result. Receipts are signed and form an authenticated, ordered chain, so a missing or altered record is detectable.
Verification tells you what is wrong, not just that something is: an absent receipt, an incomplete chain, a corrupt chain, or verification that couldn't run.
| Status | Meaning |
|---|---|
| PERMITTED | Authorized. Completion not yet verified. |
| EXECUTED | The effect was verified under the connector's contract. |
| HELD | Waiting for authorized resolution. Nothing executed. |
| BLOCKED | Outside authority. Nothing executed. |
| UNCERTAIN | The available evidence can't establish what happened. Reconciliation required. |
Receipts are tamper-evident evidence about the governed execution path. They are not a compliance certification and don't prove facts outside that path.
The usual footprint is one Phalanx service plus persistent storage. Add a protected backend only if your agent's process holds business credentials today; that is one boundary, not one service per tool. Authorization decisions happen inside your deployment. Invarra's control plane handles your identity, licence and signed releases.
| Qualified in 1.9 | |
|---|---|
| Self-managed | Linux (amd64) with Docker or Docker Compose |
| Managed on Render | A Render private service on your account, with one writer and a persistent disk |
| Administration | The signed Phalanx CLI on Linux (amd64) |
| Your application | HTTP/JSON or the TypeScript SDK |
| Storage | Persistent storage you own |
Two yeses and it can be protected. Any no, and the architecture has to change first. Your model provider and cloud don't decide it; the execution route does.
A signed CLI and an authenticated admin API cover enrolment, contract review and activation, HOLD resolution, credential and caller management, and receipt verification.
Readiness reflects loaded, usable authority, not just a running container. An invalid or half-loaded configuration blocks protected actions until it is fixed.
Full-state backups are encrypted to a key only you hold. Restores are checked against identity and history, and unsafe stale snapshots are rejected.
Upgrades preserve keys, receipts, budgets and unresolved operations. A rollback restores the matching state and the matching signed image together.
Recovery restores Phalanx's own state. It can't reverse actions already completed in external systems.
Those check what the agent says, or which tools it may call. Phalanx decides whether a specific action executes, and the agent never holds the credential to act without it. The homepage compares them side by side. Compare
Yes. Phalanx governs the tool calls your agent proposes, not the model. You choose, run and pay for your model separately.
No. Decisions are deterministic: your contracts, applied to declared state and evidence. The runtime is CPU-based and needs no Phalanx-trained model or GPU.
HTTP/JSON connectors to your own APIs, the TypeScript SDK and generic tool-dispatch adapters. Phalanx doesn't ship vendor-specific connectors; you point a connector at the API that performs the action.
The supported integration path in 1.9 is HTTP/JSON and the TypeScript SDK. Tell us about your MCP setup; we'll only describe an MCP adapter as supported once it has been qualified.
Protected actions stop. Nothing falls back to a direct route around the gateway.
The Phalanx contracts interface is in the Invarra customer portal. Guided forms will let you create, edit, validate and version action contracts, shared-workflow limits and supported evidence settings. You'll be able to review a readable summary, approve it and download schema-valid configuration.
Your licence sets the release channel, environments and number of deployments. Contact us for pricing.
Tell us what the agent should do, the system it touches and the limit that matters. We'll tell you plainly whether your architecture fits and what an evaluation should prove.