Standing Orders

Persistent rules that modify how agents behave. Unlike tasks (one-shot) or cron (scheduled), standing orders are constraints the agent must respect on every reply.

Two kinds

  • constraint โ€” injected into the agent's system prompt. E.g. "Never recommend tokens with less than $50k liquidity"
  • trigger โ€” background watch that fires when a condition is met. E.g. "Tell me when BTC crosses $100k"

Adding

curl -X POST http://127.0.0.1:18789/standing-orders \
  -d '{
    "kind": "constraint",
    "agent": "bags-hunter",
    "rule": "Never recommend tokens with less than $50k 24h liquidity"
  }'

For global rules (apply to all agents):

{
  "kind": "constraint",
  "agent": "*",
  "rule": "Always disclose 'Not financial advice' on any token-related answer"
}

Listing & toggling

curl http://127.0.0.1:18789/standing-orders?agent=bags-hunter
curl -X POST http://127.0.0.1:18789/standing-orders/so_123/toggle
curl -X DELETE http://127.0.0.1:18789/standing-orders/so_123

How constraints inject

The Context Engine appends a "Standing orders from the user" section to the system prompt at priority 20:

## Standing orders from the user

These are persistent rules the user has set. Follow them in every response:
- Never recommend tokens with less than $50k 24h liquidity
- Always disclose 'Not financial advice' on token-related answers

Storage

~/.openvesper/standing-orders.json (mode 0600).

Source

Implementation: apps/gateway/src/standing-orders.ts