Allowit: A Policy Engine for Delegated Work
Abstract
Allowit is a policy engine for work that agents do on an owner's behalf. It turns the owner's stated purpose into policy source, typed parameters and recorded state, all of which the owner can review.
Owners define the rules. Agents propose operations, which are checked in two places:
- The server gathers data from the marketplace, the web and models.
- A smart contract checks chain-native operations that the server authorized.
When the owner answers an uncertain question, the answer informs later uses of the same question. After review, it can also train specialist models offline. In this paper we look at several sample Stellar treasury Allowit policies to show how evaluation, recovery, cost accounting and organizational use work.
An agent that can search for services, pay for them and change a financial position can move work forward between an owner's decisions. Each of those steps commits something: money, a counterparty, a disclosure or a position. An agent can stay under its budget and still buy irrelevant stuff; that's exactly why we're building Allowit. Our research focuses on solving alignment of enforceable intent between owners and their agents.
Allowit records the owner's purpose as a policy and checks each operation against it at the point of execution. The owner reviews the policy’s source and parameters before installation, then uses the allowit CLI, SDK, authoring agent, or web app to configure and fund their agent’s wallets. They retain control at all times and can unilaterally close or drain their agent’s wallets. We explain below how this works.
Operations and delegated authority
An owner who gives an agent a signing key still has to decide which payments and conversions it may make, with whom, in what amounts and on what evidence. Allowit divides those decisions among four parties. The owner chooses the wallet, assets, counterparties, limits and executable policy.
An executing agent proposes a specific operation, and the server evaluates it against the approved policy and the relevant evidence. The wallet then verifies the required authorizations and enforces its native rules during execution. Because of this division, a policy can depend on a purchased report without any contract browsing the web.
The initial operation vocabulary comprises transfer, swap, deposit and redeem. These are distinct effect types, with different accounting and receipt requirements. They are not arbitrary contract calls. A wallet's executable advertises the operation types it admits; the owner's operations parameter selects a subset. The Custom policy in the worked example selects transfer, swap and redeem. A vault-deposit mandate selects an executable with deposit support and binds the approved vault and share floor.
| Economic operation | Exact effect and native checks | Delegated authority |
|---|---|---|
transfer | Transfer an exact quantity of the installed asset to the named recipient; apply recipient, amount, expiry and usage constraints. A paid report is a transfer followed by delivery verification. | Agent and server authorize the same request; wallet applies the installed policy. |
swap | Spend an exact input amount through the named router and token path, subject to a deadline and minimum output. On the explicit execute path, the wallet checks its observed input debit and output credit. | Agent and server authorize router, path, quantities and deadline; native policy constrains assets, venue and financial bounds. |
deposit | Supply an exact amount of the wallet asset to an approved vault and receive at least the specified share quantity into the wallet. The receipt records underlying debit and share credit. | Agent and server authorize vault, underlying amount and minimum shares; the selected wallet executable enforces deposit effects. |
redeem | Burn a bounded quantity of approved vault shares and receive at least the specified underlying amount into the wallet. The explicit execution path verifies the observed share debit and underlying credit. | Agent and server authorize vault, shares and minimum assets; the wallet verifies the effect before retaining the receipt. |
The distinction matters economically. A transfer for a consumed service is an expense. A swap or vault conversion moves value between assets or claims; its gross volume and irreversible expense are different quantities. Volume limits bound capital put through operations. Spending limits bound attributable expense, including applicable fees and conversion loss. Amounts use each asset's native integer units. A vault share quantity is not an underlying-token quantity, and a fee denominated in another asset requires authenticated valuation before it can be charged against an asset-denominated limit.
Canonical policy rules
Canonical rules compare authenticated request facts and prior usage with owner-selected constraints. The wallet’s selected enforcement placement determines which checks also run natively.
| Function | Constraint |
|---|---|
operations | Allowed native operation class |
tokens | Installed asset and swap token membership |
destinations | Approved recipient, router or vault |
payment_limit | Gross amount per operation |
lifetime_spending_limit | Cumulative irreversible expense |
daily_spending_limit | Irreversible expense per UTC day |
daily_volume_limit | Gross volume plus attributable gas per UTC day |
call_limit | Successful operation count |
expires_at | Owner and request expiry |
Evidence and assessment functions
Evidence functions run on the server. They retrieve material or assess a scoped question against preceding-call context; the standing analysis allowance bounds metered work.
| Function | Purpose |
|---|---|
marketplace_search | Retrieve candidate services with their sources |
internet_search | Retrieve public corroborating evidence |
fetch | Retrieve specified resource under expected-response binding |
systemone | Assess one scoped question against preceding call context |
price | Supply asset/amount-bound conversion input |
clear_systemone_context | Start a new classifier evidence window |
Configuration and state access
Configuration and stored policy state have distinct accessors. Updates participate in the native invocation’s atomic commit.
| Accessor | Effect |
|---|---|
ctx.params[key].ok() | Read a required typed owner value |
get_state | Read admitted policy state |
set_state | Stage a policy-state update |
The external harness obtains SKILL.md from the Allowit server or uses the CLI to access the same operations. The skill describes the endpoint, public wallet profile, command sequence, policy inspection and operation recovery. A server-supplied skill contains no client private key because the server does not hold it. The customer can augment a local copy with credentials or use another client-controlled store; a dedicated secrets store is recommended. The instructions guide the harness, while authorization and native policy checks enforce its permissions.
Client keys and the server boundary
An executing agent signs with a key in client-controlled storage. The customer chooses how that key is stored: a secrets service, an environment var, or even just part of prompt are some possible choices.
We recommend a dedicated secrets store. Allowit’s server receives the public key and its authorization binding; it never receives or stores the client’s private key. The Allowit open source CLI + SDK offers a local fully auditable and client-configurable key-generation path. A possibility is using our CLI and separate public key metadata from a secret key file. The secret file should use (at least) mode 0600 inside a mode-0700 private directory.
The public wallet profile identifies the agent, wallet and policy binding; it contains no seed. The server stores the public key and its authorized binding, not the client's private key. A local signing process can hold the key without placing its raw bytes in the language model's context.
The server evaluates requests through scoped interfaces. Those interfaces expose the submitted operation, the permitted decision or explanation, and the operation's status or receipt. They do not provide an executing agent with database access, private feedback records, unrelated owners' context or provider credentials. The server can use private evidence during an assessment without returning the underlying records.
An agent-key compromise alone does not supply the server's authorization. A server-key compromise alone does not supply the agent's authorization. Both parties can still approve an undesirable operation, and both can collude; the native policy continues to enforce the constraints actually installed in the wallet. This makes placement consequential. An on-chain recipient allowlist or output floor remains enforceable under that collusion. A server-only judgment about report quality depends on the server's assessment. The paper's worked policy assigns deterministic financial constraints to the wallet and contextual assessment to the server for that reason.
Owner administration follows a separate path. The owner can pause delegated execution, change the approved configuration or use the defined recovery authority without asking the executing agent to approve its own removal. Configuration changes advance their version and preserve accounting and replay protection. Delegated signatures do not confer these owner powers.
References
- Allowit Core
- Allowit SDK
- Allowit contracts for Stellar
- x402: An Open Standard for Internet-native Payments
- Distilling the Knowledge in a Neural Network
- Saltzer, J. H. and Schroeder, M. D., The Protection of Information in Computer Systems, 1975
- RFC 6749, The OAuth 2.0 Authorization Framework, October 2012
- Ethereum white paper, 2014
- Stellar Developers, Fees, resource limits and metering (accessed 2 November 2026)
- Stellar RPC, simulateTransaction (accessed 2 November 2026)
- Stellar Developers, Lumens (XLM) and base reserves (accessed 2 November 2026)
- SDK policy template
- custom-policy
- policy-wallet
- Stellar RPC API reference: sendTransaction
- Stellar RPC API reference: getTransaction
- DeFindex Vaults
- DeFindex Blend Autocompound Strategy
- Blend Lending Documentation
- Soroswap Router Contract Source
- ENS Endowment Investment Policy, EP6.46
- Lewis et al. 2020, Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks
- Hu et al. 2021, LoRA: Low-Rank Adaptation of Large Language Models
- Ouyang et al. 2022, Training language models to follow instructions with human feedback
- Rafailov et al. 2023, Direct Preference Optimization: Your Language Model is Secretly a Reward Model
- Guo et al. 2017, On Calibration of Modern Neural Networks
- Geifman and El-Yaniv 2017, Selective Classification for Deep Neural Networks
- Manidis and Roberts, The Commanding Heights
- Diogo Almeida — Introducing System One Models & Jev (TypeSafe, 2026)
- System One Models — decision and extraction models










for inclusion, with higher fees during congestion. Contract transactions also pay for computation, ledger access and storage rent. Before signing, the wallet simulates the invocation to estimate its resource fee. Account reserves remain part of the account balance. 
