BengarTrust infrastructure

Status

What works today

Every capability, its status, where it lives and what it needs. Derived from one manifest — this page, the documentation badges and the product pages cannot disagree.

26 AVAILABLE

Usable today, through the interface named here.

11 READ ONLY

You can see it. Changing it happens somewhere else.

1 PLANNED

Decided and specified. Not built.

4 NOT AVAILABLE

Deliberately absent. The reasoning is written down.

Access

CapabilityStatusWhereAPIRoleDocs
Sign in and pick a project
Needs: A provisioned organization and a console user.
AVAILABLESign in → ProjectsPOST /v1/console/login · GET /v1/console/projectsDocs
Apply for an organization account
An application is recorded, not granted. An operator reviews and provisions it.
AVAILABLESign in → Apply for onePOST /v1/console/registerDocs
Grant a role to a personAVAILABLESecurity → MembersGET/POST .../members · .../members/:id/rolesADMINDocs
Read separation-of-duties settings
Changing them from a browser form deserves its own ceremony, and there is no route for one.
READ ONLYSecurityGET /v1/console/projects/:id/settingsADMIN, AUDITORDocs

Agents

CapabilityStatusWhereAPIRoleDocs
Freeze and release an agent
Needs: A registered agent. Release is ADMIN only.
AVAILABLEAgents → an agentPOST /v1/console/projects/:id/agents/freeze · /releaseADMIN, APPROVERDocs
Register a new agent
Needs: A did:key created outside Bengar, with `bengar id create`.
AVAILABLEAgents → Register an agentPOST /v1/console/projects/:id/agentsADMINDocs
See the agents in a project
Listing and reading are all this screen does. Registering an agent has no endpoint anywhere in the product.
Needs: At least one registered agent.
READ ONLYAgentsGET /v1/console/projects/:id/agentsADMIN, APPROVER, AUDITOR, POLICY_AUTHORDocs
Let an agent spend the organization's on-chain funds
Deliberately outside v1, and not a missing feature. An agent may request an action and a permit may bound what it requests; a permit does not grant access to an organization's chain signing key, and there is no route — direct, indirect or automatic — from one to the other. A permit that could sign would be a bearer instrument for whatever the key can do. Whether an agent should ever move on-chain funds is a separate decision with its own threat model.
NOT AVAILABLEDocs

Permits

CapabilityStatusWhereAPIRoleDocs
Issue a permit
Not from the Console, on purpose: there is no issuer-key custody workflow, and a button there would be inventing an authority rather than exposing one.
Needs: An issuer identity.
AVAILABLEThe CLI: `bengar permit issue`Docs
Register an issued permit
Needs: A verifiable permit artifact.
AVAILABLEPermits → Verify and registerPOST /v1/console/projects/:id/permitsPERMIT_ISSUERDocs
See the permit registry
An inventory. Issuing happens in the CLI and registering needs PERMIT_ISSUER.
READ ONLYPermitsGET /v1/console/projects/:id/permitsADMIN, PERMIT_ISSUER, AUDITORDocs

Policy

CapabilityStatusWhereAPIRoleDocs
Publish a policy version
Needs: POLICY_AUTHOR, which an administrator can now grant.
AVAILABLEPolicies → Author a policyPUT /v1/console/projects/:id/policyPOLICY_AUTHORDocs
Simulate a decision against the policy
Needs: An active policy version and at least one registered agent.
AVAILABLEPolicies → SimulatePOST /v1/console/projects/:id/policy/simulateADMIN, POLICY_AUTHOR, AUDITORDocs
Activate a policy version
Needs: An inactive version to activate.
AVAILABLEPolicies → ActivatePOST /v1/console/projects/:id/policy/activatePOLICY_AUTHORDocs
Read the active policy and its versions
Reading the active version and the history. Publishing and activating are POLICY_AUTHOR.
READ ONLYPoliciesGET /v1/console/projects/:id/policy · /policy/versionsADMIN, POLICY_AUTHOR, AUDITOR, APPROVERDocs

Approvals

CapabilityStatusWhereAPIRoleDocs
Approve or reject, with a passkey
Needs: APPROVER, an enrolled passkey, and a provisioned Custody approval key — all three now have a screen.
AVAILABLEApprovals → an approval → Review and approvePOST .../approvals/:id/challenge · .../challenges/:id/completeAPPROVERDocs
See the approval queue
Reading the queue and one approval. Deciding is APPROVER.
READ ONLYApprovalsGET /v1/console/projects/:id/approvalsADMIN, APPROVER, AUDITORDocs

Credentials

CapabilityStatusWhereAPIRoleDocs
Enrol a passkey
Needs: A signed-in session.
AVAILABLESecurity → Your passkeys → Register a passkeyPOST /v1/console/webauthn/registration/options · /registrationDocs
See and disable your passkeys
Needs: An enrolled passkey.
AVAILABLESecurity → Your passkeysGET /v1/console/webauthn/credentialsDocs
Provision or retire a Custody approval key
Needs: A principal holding APPROVER.
AVAILABLESecurity → Approval signingPOST .../principals/:id/approval-keys · .../approval-keys/:id/retireADMINDocs
Create, list and revoke API keysAVAILABLEAPI KeysGET/POST /v1/console/projects/:id/api-keys · .../:id/revokeADMINDocs

Execution

CapabilityStatusWhereAPIRoleDocs
Reconcile an UNKNOWN execution
Needs: An execution whose outcome is UNKNOWN.
AVAILABLEExecutions → ReconcilePOST /v1/console/projects/:id/executions/:id/resolveADMINDocs
Authorize an agent action
Needs: An API key, an agent, a permit and an active policy.
AVAILABLEThe API: POST /v1/authorizePOST /v1/authorizeDocs
See executions and filter by status
Listing and filtering. Only an execution needing reconciliation offers an action, and only to ADMIN.
READ ONLYExecutionsGET /v1/console/projects/:id/executionsADMIN, AUDITOR, APPROVERDocs

Audit

CapabilityStatusWhereAPIRoleDocs
Read the audit trailAVAILABLEAuditGET /v1/console/projects/:id/audit · /control-planeADMIN, AUDITOR, APPROVER, POLICY_AUTHORDocs
Verify an audit event against its anchor
Needs: An anchored audit event.
AVAILABLEProofsPOST /v1/console/projects/:id/proofs/verifyADMIN, AUDITORDocs

Assets

CapabilityStatusWhereAPIRoleDocs
Browse assets, holders and transfersAVAILABLEScan → AssetsGET /v1/assets (Indexer)Docs
Provision the organization's chain signing keyAVAILABLEConsole → AssetsPOST /v1/console/projects/{projectId}/chain-keyADMINDocs
Issue an asset from the Console
Needs: An organization signing key, provisioned on the Assets page, and a funded chain account to pay the fee.
AVAILABLEConsole → Assets → Create an assetPOST /v1/console/projects/{projectId}/asset-intentsADMINDocs
Mint, burn and transfer from the Console
Needs: The same signing key. A FIXED asset has no mint at all.
AVAILABLEConsole → Assets → an assetPOST /v1/console/projects/{projectId}/asset-intentsADMINDocs
See the organization's treasury address and balance
Needs: An organization signing key, provisioned on the Assets page.
AVAILABLEConsole → Assets → TreasuryGET /v1/console/projects/{projectId}/treasuryADMIN, AUDITORDocs
Send from the organization's treasury
Needs: A signing key, a funded account, and a policy that allows the transfer. Holding the key is not permission.
AVAILABLEConsole → Assets → Treasury → Review transferPOST /v1/console/projects/{projectId}/treasury/intentsADMINDocs
See whether an asset is Trust gated
The Console shows the gating organization, the policy version and how many keys may authorize a movement. It does not issue authorizations: one is issued per movement by the organization that opened the gate, so moving a gated asset from the Console is refused by the chain.
READ ONLYConsole → Assets → an assetGET /v1/assets/{id}/gating (Indexer)ADMIN, AUDITOR, APPROVER, POLICY_AUTHORDocs
Freeze or blacklist a holder
Not part of the v1 protocol model. `x/assets` has no freeze, account freeze, blacklist, clawback, seizure or forced transfer, and no message that could express one. Freeze carries legal and policy consequences that outlive the code, so it would need its own decision gate and its own threat model rather than arriving as a setting.
NOT AVAILABLEDocs
Administer somebody else's asset
Not part of the v1 protocol model. There is no generic administrator and no owner-of-everything: creating an asset confers no standing authority, mint authority is scoped to one asset, and burning is something a holder does to its own balance. A burn authority over another account would be seizure under another name.
NOT AVAILABLEDocs
Transfer or rotate an asset's mint authority
Not part of the v1 protocol model. Mint authority is fixed at creation and there is no message that rotates, delegates or replaces it — which is what makes it readable: whoever holds it held it from the beginning. Metadata is immutable for the same reason.
NOT AVAILABLEDocs

Network

CapabilityStatusWhereAPIRoleDocs
See the network's status and how fresh the read model isAVAILABLEConsole → Network → OverviewGET /v1/console/projects/{projectId}/networkADMIN, AUDITOR, APPROVER, POLICY_AUTHOR, PERMIT_ISSUERDocs
Browse validators and their delegations
Reading only. Moniker and commission are not shown because the read model does not hold them — both live in a message body and in no event.
READ ONLYConsole → Network → ValidatorsGET /v1/console/projects/{projectId}/network/validatorsADMIN, AUDITOR, APPROVER, POLICY_AUTHOR, PERMIT_ISSUERDocs
See staking as the read model records it
Reading only, and there is no total: a slash moves tokens without moving shares, so a sum of delegations is not a sum of stake and the Console does not present one.
READ ONLYConsole → Network → StakingGET /v1/console/projects/{projectId}/network/stakingADMIN, AUDITOR, APPROVER, POLICY_AUTHOR, PERMIT_ISSUERDocs
Read proposals and both authorities
Reading only. Voting as an organization is a chain transaction signed by an organization's key, and there is no control for it here.
READ ONLYConsole → Network → GovernanceGET /v1/console/projects/{projectId}/network/governanceADMIN, AUDITOR, APPROVER, POLICY_AUTHOR, PERMIT_ISSUERDocs
Read the network treasury's payments
The **network's** community pool, not an organization's treasury. Its funding is deliberately inactive and spending needs a passed proposal and an N-of-M consent together, neither of which happens here.
READ ONLYConsole → Network → TreasuryGET /v1/console/projects/{projectId}/network/treasuryADMIN, AUDITOR, APPROVER, POLICY_AUTHOR, PERMIT_ISSUERDocs
Operate a validator, delegate, or vote
Blocked by network milestones rather than by the Console. A validator operation is undefined as a product before node productization, and admission rules are a separate decision — so there is no screen, and offering one first would be an interface inventing an authority.
PLANNEDDocs

Why some things are built and still not usable

Bengar separates duties deliberately: an administrator cannot approve, author policy or register a permit. That is right. What is not right yet is that no screen grants those roles — so a newly provisioned organization has one ADMIN and no way to create an approver.

Rather than describe those capabilities as available, they are marked BACKEND ONLY with the blocker named. That is the honest reading, and it is what somebody planning around Bengar needs.