> For the complete documentation index, see [llms.txt](https://docs.vishwalab.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.vishwalab.com/vishwa-cli/setting-your-constraints.md).

# Setting Your Constraints

This is the foundation of the Vishwa model. Before the agent can move a cent, the fund owner seals a constraint policy into the control layer. The agent never sees the full policy - it only ever gets allowed or denied.

### Express limits in plain English

```
set my limits: only trade on Polymarket, max $20 per trade,
$100 per day, buy and sell contracts only - no transfers
```

Under the hood this becomes a signed constraint policy sealed inside the TEE:

```jsonc
{
  "authorized_agents": [{
    "id": "agent:vishwa-cli",
    "allowed_operations": ["buy_contracts", "sell_contracts"],
    "per_operation_limits": {
      "buy_contracts": {
        "per_tx_usd": 20,
        "daily_usd": 100,
        "monthly_usd": 1000,
        "approved_venues": ["polymarket"],
        "max_slippage": 0.02
      }
    }
  }],
  "global_constraints": {
    "daily_limit_usd": 100,
    "rate_limiting": { "max_operations_per_minute": 5 }
  }
}
```

### What each field controls

| Constraint                                 | What it enforces                                                           |
| ------------------------------------------ | -------------------------------------------------------------------------- |
| `allowed_operations`                       | Which actions the agent may take (e.g. buy/sell only - never transfer out) |
| `approved_venues`                          | The allow-list of execution venues (e.g. Polymarket)                       |
| `per_tx_usd` / `daily_usd` / `monthly_usd` | Spend caps per trade, per day, per month                                   |
| `max_slippage`                             | How far the fill price may drift from the live market                      |
| `rate_limiting`                            | Max operations per minute - blocks runaway loops                           |

### What happens after sealing

Every subsequent action is checked against this policy automatically. A buy that would exceed `per_tx_usd`, hit an un-approved venue, or fill outside `max_slippage` is denied before it ever signs. The agent simply reports that it cannot proceed.

Note: in the current release, these guardrails are configured as predefined examples rather than set through a user-facing command. The plain-English and JSON examples above illustrate the control-layer policy model.
