veto-agents 0.0.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- veto_agents-0.0.4/.gitignore +20 -0
- veto_agents-0.0.4/ARCHITECTURE.md +146 -0
- veto_agents-0.0.4/CLI.md +163 -0
- veto_agents-0.0.4/LICENSE +21 -0
- veto_agents-0.0.4/PKG-INFO +119 -0
- veto_agents-0.0.4/PRINCIPLES.md +125 -0
- veto_agents-0.0.4/README.md +65 -0
- veto_agents-0.0.4/agents/build/SPEC.md +151 -0
- veto_agents-0.0.4/agents/inbox/SPEC.md +136 -0
- veto_agents-0.0.4/agents/media/SPEC.md +160 -0
- veto_agents-0.0.4/agents/research/SPEC.md +131 -0
- veto_agents-0.0.4/pyproject.toml +55 -0
- veto_agents-0.0.4/src/veto_agents/__init__.py +6 -0
- veto_agents-0.0.4/src/veto_agents/agents/__init__.py +0 -0
- veto_agents-0.0.4/src/veto_agents/agents/build/__init__.py +8 -0
- veto_agents-0.0.4/src/veto_agents/agents/build/agent.py +24 -0
- veto_agents-0.0.4/src/veto_agents/agents/inbox/__init__.py +8 -0
- veto_agents-0.0.4/src/veto_agents/agents/inbox/agent.py +19 -0
- veto_agents-0.0.4/src/veto_agents/agents/media/__init__.py +9 -0
- veto_agents-0.0.4/src/veto_agents/agents/media/agent.py +244 -0
- veto_agents-0.0.4/src/veto_agents/agents/media/policy.yaml +46 -0
- veto_agents-0.0.4/src/veto_agents/agents/media/tools/__init__.py +0 -0
- veto_agents-0.0.4/src/veto_agents/agents/media/tools/replicate_image.py +176 -0
- veto_agents-0.0.4/src/veto_agents/agents/research/__init__.py +8 -0
- veto_agents-0.0.4/src/veto_agents/agents/research/agent.py +19 -0
- veto_agents-0.0.4/src/veto_agents/auth.py +170 -0
- veto_agents-0.0.4/src/veto_agents/cli.py +541 -0
- veto_agents-0.0.4/src/veto_agents/config.py +95 -0
- veto_agents-0.0.4/src/veto_agents/funding.py +71 -0
- veto_agents-0.0.4/src/veto_agents/register.py +19 -0
- veto_agents-0.0.4/src/veto_agents/registry.py +62 -0
- veto_agents-0.0.4/src/veto_agents/veto_client.py +82 -0
- veto_agents-0.0.4/src/veto_agents/wallet_view.py +244 -0
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# Veto Agents — Architecture
|
|
2
|
+
|
|
3
|
+
How the layers compose, and the tooling decisions behind each.
|
|
4
|
+
|
|
5
|
+
## The stack, top to bottom
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
9
|
+
│ app.veto-ai.com (PWA — React + Tailwind, mobile-first) │
|
|
10
|
+
│ • chat UI per agent │
|
|
11
|
+
│ • receipts feed │
|
|
12
|
+
│ • plain-English policy editor │
|
|
13
|
+
│ • wallet view + funding │
|
|
14
|
+
└─────────────────────────────────────────────────────────────┘
|
|
15
|
+
│
|
|
16
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
17
|
+
│ Veto Agents API (FastAPI — agent runner service) │
|
|
18
|
+
│ • spins up + supervises Hermes Agent per user │
|
|
19
|
+
│ • mediates every tool call through Veto │
|
|
20
|
+
│ • streams chat + tool events via WebSocket │
|
|
21
|
+
└─────────────────────────────────────────────────────────────┘
|
|
22
|
+
│
|
|
23
|
+
┌───────────────────┼──────────────────────┐
|
|
24
|
+
│ │ │
|
|
25
|
+
┌──────────────┐ ┌──────────────────┐ ┌──────────────────┐
|
|
26
|
+
│ Hermes Agent │ │ Veto authorize │ │ Privy embedded │
|
|
27
|
+
│ (per user) │ │ (every tool │ │ wallet (per │
|
|
28
|
+
│ │ │ call gated) │ │ user, on Base) │
|
|
29
|
+
│ • LLM brain │ │ │ │ │
|
|
30
|
+
│ • toolset │ │ • policy check │ │ • USDC balance │
|
|
31
|
+
│ • skills DB │ │ • risk score │ │ • sign tx │
|
|
32
|
+
│ • cron │ │ • signed receipt │ │ • no seed phrase │
|
|
33
|
+
└──────────────┘ └──────────────────┘ └──────────────────┘
|
|
34
|
+
│ │ │
|
|
35
|
+
▼ ▼ ▼
|
|
36
|
+
Tool APIs Veto Engine Base + USDC
|
|
37
|
+
(Replicate, (Django, prod) (x402 facilitator
|
|
38
|
+
Vercel, Exa, via Coinbase CDP)
|
|
39
|
+
Gmail, etc.)
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Tooling decisions
|
|
43
|
+
|
|
44
|
+
### Agent core: Hermes Agent (Nous Research)
|
|
45
|
+
|
|
46
|
+
**Why Hermes:** Open-weights, MIT, fastest-growing agent runtime of 2026 (140K+ GitHub stars, most-used agent on OpenRouter). Multi-provider LLM support (Nous Portal, OpenRouter, Anthropic, OpenAI, NVIDIA NIM, Hugging Face) means no vendor lock — users pick the brain. Skills system (procedural memory) means agents get better with use. All data stays local in SQLite.
|
|
47
|
+
|
|
48
|
+
**Why not OpenClaw:** OpenClaw is brilliant for messaging-first agents (WhatsApp, Telegram, Slack), but its UX assumes a chat-app gateway. Veto Agents is a web-app surface; Hermes fits the model. We will ship an **OpenClaw + Veto plugin** as a v0.2 distribution wedge, not as a v0 dependency.
|
|
49
|
+
|
|
50
|
+
**How we integrate:**
|
|
51
|
+
- Each user gets a dedicated Hermes Agent instance, sandboxed.
|
|
52
|
+
- We use Hermes's tool registration API to add Veto-gated wrappers around every tool that spends money or sends external requests.
|
|
53
|
+
- The pre-execution hook on each tool call dispatches to Veto's `authorize` endpoint. If denied, the tool refuses; if allowed, it proceeds and the verdict's receipt URL is attached to the chat message.
|
|
54
|
+
- The agent's LLM provider is hosted by Veto on a free tier (Hermes 3 via Nous Portal, eaten cost) with an OpenRouter fallback users can configure.
|
|
55
|
+
- Persistence: Hermes's SQLite + our own Postgres for the per-user receipts feed, policy versions, and audit log (the same backend as veto-ai.com).
|
|
56
|
+
|
|
57
|
+
### Wallet: Privy
|
|
58
|
+
|
|
59
|
+
**Why Privy:** Production-grade embedded wallets with a dedicated `create-privy-pwa` template, Base (chain ID 8453) supported natively, USDC sending built in, login via email / Google / passkey, *users never see a seed phrase*. The whole point of "agents for everyone" is that wallet provisioning is invisible.
|
|
60
|
+
|
|
61
|
+
**How we use it:**
|
|
62
|
+
- On user signup (magic link), Privy provisions an embedded wallet automatically.
|
|
63
|
+
- We fund $5 USDC on first run as a free-tier promo (sponsored by Veto, paid out of marketing budget). Users add more via Coinbase onramp or direct USDC deposit.
|
|
64
|
+
- Every agent action that costs money signs through the user's Privy wallet — agent has *no key* of its own; it asks Privy (via the user's session) to sign each transaction, which then runs through Veto's policy gate before being broadcast.
|
|
65
|
+
|
|
66
|
+
### Payment rails
|
|
67
|
+
|
|
68
|
+
| Rail | Used for | Live in v0? |
|
|
69
|
+
|--------------------|-----------------------------------------|-------------|
|
|
70
|
+
| x402 (Coinbase) | Paid APIs that accept HTTP 402 | Yes |
|
|
71
|
+
| Direct USDC on Base| Crypto-native merchants, on-chain swaps | Yes |
|
|
72
|
+
| Anthropic / OpenAI keys | LLM inference billed to operator | Yes (BYOK or hosted) |
|
|
73
|
+
| Stripe Issuing virtual cards | Card-only merchants | v0.3 |
|
|
74
|
+
|
|
75
|
+
### Veto governance layer
|
|
76
|
+
|
|
77
|
+
**Reuses what's already shipped:**
|
|
78
|
+
- `gateway/views.py` `authorize` endpoint — every tool call dispatches here.
|
|
79
|
+
- `safety/services/engine.py` — 8-stage evaluation.
|
|
80
|
+
- Signed receipt at `veto-ai.com/r/<uuid>` — every verdict.
|
|
81
|
+
- `policies/models.py` `SecurityPolicy` — per-agent policy lookup.
|
|
82
|
+
|
|
83
|
+
**New plumbing for agents specifically:**
|
|
84
|
+
- Per-agent default policy templates (Media has different defaults than Build).
|
|
85
|
+
- Agent-context fields in the authorize request (`agent_type=media`, `tool_name=replicate.video_gen`, `cost_usd`).
|
|
86
|
+
- Receipts feed grouped by agent (so the user sees "Media agent's activity" vs "Build agent's activity").
|
|
87
|
+
|
|
88
|
+
### Frontend
|
|
89
|
+
|
|
90
|
+
**PWA, not native.** `app.veto-ai.com` as a Progressive Web App built with React + Tailwind (same stack as the landing). Installable to home screen on iOS + Android. Skips App Store gatekeeping for v0, which matters because crypto + payment apps get savaged in Apple review. Native wrappers via Capacitor or Expo come in v0.4 once we have signal.
|
|
91
|
+
|
|
92
|
+
## Repository shape
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
veto-agents/
|
|
96
|
+
├── README.md (manifesto)
|
|
97
|
+
├── ARCHITECTURE.md (this file)
|
|
98
|
+
├── agents/
|
|
99
|
+
│ ├── media/SPEC.md (lead agent)
|
|
100
|
+
│ ├── build/SPEC.md
|
|
101
|
+
│ ├── research/SPEC.md
|
|
102
|
+
│ └── inbox/SPEC.md
|
|
103
|
+
└── (future) api/ + app/ (runner service + PWA)
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Each agent directory will eventually contain:
|
|
107
|
+
- `SPEC.md` — what it does, scope, demo
|
|
108
|
+
- `agent.py` — Hermes-compatible agent module
|
|
109
|
+
- `policy.yaml` — APPS-format default Veto policy
|
|
110
|
+
- `tools/` — tool implementations + Veto-gated wrappers
|
|
111
|
+
- `README.md` — install + use instructions
|
|
112
|
+
|
|
113
|
+
## Authorize flow, end to end
|
|
114
|
+
|
|
115
|
+
For any agent action that spends money or touches external systems:
|
|
116
|
+
|
|
117
|
+
1. Agent's LLM decides to call a tool (e.g., `replicate.generate_video(prompt="…")`).
|
|
118
|
+
2. Hermes tool dispatcher hits our pre-execution hook.
|
|
119
|
+
3. Hook builds a Veto authorize request:
|
|
120
|
+
```json
|
|
121
|
+
{
|
|
122
|
+
"agent_id": "media-user-abc",
|
|
123
|
+
"action_type": "api_call",
|
|
124
|
+
"merchant": "replicate.com",
|
|
125
|
+
"amount": 0.40,
|
|
126
|
+
"currency": "USD",
|
|
127
|
+
"description": "Generate 6s video, model=runway-gen3",
|
|
128
|
+
"context": { "agent_type": "media", "tool_name": "replicate.video_gen" }
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
4. POST to `https://veto-ai.com/api/v1/authorize/`.
|
|
132
|
+
5. Engine runs 8 stages, returns `{ verdict, reason_codes, receipt_jwt, receipt_url }`.
|
|
133
|
+
6. If `allow`: tool proceeds. Receipt URL attached to the chat message.
|
|
134
|
+
7. If `deny`: tool refuses. User sees "Veto stopped this — reason: monthly cap exceeded. Adjust policy?"
|
|
135
|
+
8. If `escalate`: tool waits. User gets a phone notification with approve/deny.
|
|
136
|
+
|
|
137
|
+
This is the same authorize flow Veto already serves — we're just adding agent-specific context and the per-agent default policies.
|
|
138
|
+
|
|
139
|
+
## What we are NOT building
|
|
140
|
+
|
|
141
|
+
- A new agent framework (Hermes is the core).
|
|
142
|
+
- A new LLM (we route to existing providers).
|
|
143
|
+
- A custodial wallet (Privy holds keys; we never see them).
|
|
144
|
+
- A new payment processor (we ride x402 facilitators + existing card networks).
|
|
145
|
+
|
|
146
|
+
Veto Agents is a *packaging + governance* layer on proven primitives. The work is in the integration glue, the UX, and making it *feel* trustworthy enough for someone's mom to use.
|
veto_agents-0.0.4/CLI.md
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
# Veto Agents — CLI
|
|
2
|
+
|
|
3
|
+
> The primary install + runtime surface. Local-first. Self-host anywhere. Pay-per-use via embedded wallet.
|
|
4
|
+
|
|
5
|
+
Modeled after Franklin (BlockRun) and Hermes Agent — both proved that a CLI with a one-line install and optional wallet setup is the right shape for *agents that spend money*.
|
|
6
|
+
|
|
7
|
+
`veto-agents` is a separate package from the core `veto` governance CLI. The two compose — `veto-agents` calls the Veto authorize endpoint for every paid action — but they're shipped, versioned, and installed independently. Same logic as Stripe shipping `stripe` and `stripe-cli` as different surfaces under the same brand.
|
|
8
|
+
|
|
9
|
+
## Install
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install -g @veto-protocol/agents
|
|
13
|
+
# or for the curl crowd:
|
|
14
|
+
curl -fsSL https://veto-ai.com/install-agents.sh | bash
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Installs a single binary, `veto-agents`. Works on macOS, Linux, WSL2, Windows (PowerShell installer for native), Termux (Android).
|
|
18
|
+
|
|
19
|
+
Zero signup. Zero credit card. Zero phone verification.
|
|
20
|
+
|
|
21
|
+
## First run
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
veto-agents setup
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Walks the user through:
|
|
28
|
+
|
|
29
|
+
1. **Pick an LLM provider.** `hermes` (default, hosted by Nous), `claude`, `gpt`, `openrouter`, or `custom` (bring your own endpoint). User can switch anytime via `veto-agents model <provider>`.
|
|
30
|
+
2. **Provision a wallet.** *(Optional but recommended.)* Privy embedded wallet, on Base. $5 USDC funded by Veto as free credit. User never sees a seed phrase.
|
|
31
|
+
3. **Or bring your own wallet.** `veto-agents wallet import <address>` and connect via WalletConnect signature flow.
|
|
32
|
+
4. **Confirm default policy posture.** Strict / Balanced / Permissive — affects every agent's default caps and approval thresholds. User can edit later.
|
|
33
|
+
|
|
34
|
+
Everything is stored in `~/.veto-agents/` (config in YAML, history + receipts in SQLite, secrets in OS keychain).
|
|
35
|
+
|
|
36
|
+
## Browse + install agents
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
veto-agents list
|
|
40
|
+
# media Generate images, video, audio. Replicate, Runway, ElevenLabs.
|
|
41
|
+
# build Deploy code to cheapest infra. Vercel, Modal, Fly, Runpod.
|
|
42
|
+
# research Deep research with paid sources. Exa, Tavily, x402-gated content.
|
|
43
|
+
# inbox Email triage + scheduling. Gmail/Outlook + AssemblyAI + Cal.com.
|
|
44
|
+
|
|
45
|
+
veto-agents install media
|
|
46
|
+
# ✓ Pulled @veto-protocol/agents-media v0.1.0
|
|
47
|
+
# ✓ Default policy installed: 'media-agent-default' (per-tx $2, per-month $25)
|
|
48
|
+
# ✓ Tool credentials needed: REPLICATE_API_TOKEN (or use Veto's hosted gateway)
|
|
49
|
+
# Ready. Try: veto-agents media "make a 6s video of a cat on a slice of bread"
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Each agent is a published npm package under `@veto-protocol/agents-<name>`, so users can pin versions, audit code, fork freely.
|
|
53
|
+
|
|
54
|
+
## Use an agent (the plan-then-execute flow)
|
|
55
|
+
|
|
56
|
+
Per [PRINCIPLES.md](PRINCIPLES.md), every agent surfaces a plan + cost estimate and waits for consent before spending. This is the universal interaction pattern:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
veto-agents media "make a 6-second video of a neon jellyfish in cyberpunk rain"
|
|
60
|
+
|
|
61
|
+
# Plan:
|
|
62
|
+
# 1. Generate 6s video — Runway Gen-3 ~$0.42
|
|
63
|
+
# 2. (optional) Generate voiceover ~$0.05
|
|
64
|
+
# ─────
|
|
65
|
+
# Estimate: $0.42
|
|
66
|
+
#
|
|
67
|
+
# Alternative: use Hailuo for the video → $0.18 total (lower quality)
|
|
68
|
+
#
|
|
69
|
+
# Proceed? [y/N/alt] y
|
|
70
|
+
#
|
|
71
|
+
# ✓ Veto authorize → allow (receipt: veto-ai.com/r/8b3c-7f29-…)
|
|
72
|
+
# ✓ Generating… [████████████] 100%
|
|
73
|
+
# ✓ Done in 38s. Actual cost: $0.40 (estimate was $0.42).
|
|
74
|
+
# Output: ~/Downloads/veto-media-2026-05-24-1432.mp4
|
|
75
|
+
# Full breakdown: veto-agents receipt 8b3c-7f29-…
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
For long-running or interactive agents:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
veto-agents inbox
|
|
82
|
+
# Welcome back. Last seen: 2h ago. 17 new messages since.
|
|
83
|
+
# > triage everything from this week
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Manage policies in your editor
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
veto-agents policy edit media
|
|
90
|
+
# Opens ~/.veto-agents/policies/media.yaml in $EDITOR
|
|
91
|
+
# Save & exit → policy is validated, version incremented, content-hashed
|
|
92
|
+
# Future receipts will cite the new policy version
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Plain-English to YAML translation also available via `veto-agents policy describe media` (LLM-assisted).
|
|
96
|
+
|
|
97
|
+
## Wallet
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
veto-agents wallet balance # USDC balance on Base
|
|
101
|
+
veto-agents wallet topup # Coinbase onramp link
|
|
102
|
+
veto-agents wallet receive # show address for direct deposit
|
|
103
|
+
veto-agents wallet export # encrypted JSON, user-controlled
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Receipts
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
veto-agents receipts # last 20, scrollable
|
|
110
|
+
veto-agents receipts --agent media # filter by agent
|
|
111
|
+
veto-agents receipts --denied # see what Veto blocked + why
|
|
112
|
+
veto-agents receipt <uuid> # full JWT + verify link
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Offline verification is done via the core Veto CLI's mandate-verifier (different package):
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
npx @veto-protocol/cli verify <jwt>
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
That way the verifier stays independent of the agents runtime — anyone can verify any Veto receipt without installing the agents package.
|
|
122
|
+
|
|
123
|
+
## Run modes
|
|
124
|
+
|
|
125
|
+
The same CLI supports three runtime modes per agent:
|
|
126
|
+
|
|
127
|
+
1. **Local (default).** Agent runs on your machine, Hermes locally, your data in `~/.veto-agents/`. Wallet is yours. Network calls go directly from your machine to the tool APIs and to Veto's authorize endpoint.
|
|
128
|
+
2. **Hosted.** `veto-agents run media --hosted`. Same agent code runs in Veto's cloud. Useful when your laptop sleeps and you want your inbox agent always on. Costs nothing extra; you still pay tool costs.
|
|
129
|
+
3. **Bring-your-own infra.** `veto-agents run media --runtime ssh://my-server`. Connect your own VPS / homelab. Veto governs from the cloud; your machine executes.
|
|
130
|
+
|
|
131
|
+
The choice is per-agent. Inbox agent might run hosted (always on). Media agent might run local (creative work, want files on your disk). Build agent might run on your homelab.
|
|
132
|
+
|
|
133
|
+
## Open + forkable by design
|
|
134
|
+
|
|
135
|
+
Every agent is open source MIT under `github.com/veto-protocol/veto-agents`. The CLI is also MIT. Fork an agent, modify it, publish your own variant — `veto-agents install @yourorg/agents-custom`. The Veto governance layer is the only required dependency; everything else is yours.
|
|
136
|
+
|
|
137
|
+
## Distribution shape
|
|
138
|
+
|
|
139
|
+
- `npm` and `pip` registries for the runtime
|
|
140
|
+
- `brew` formula for macOS
|
|
141
|
+
- `winget` for Windows
|
|
142
|
+
- `apt` repo for Debian/Ubuntu
|
|
143
|
+
- Docker image for self-hosted server installs
|
|
144
|
+
- A single `curl | bash` script as the universal fallback
|
|
145
|
+
|
|
146
|
+
The first three matter on day one. The rest follow.
|
|
147
|
+
|
|
148
|
+
## Why CLI-first, not PWA-first
|
|
149
|
+
|
|
150
|
+
- **Self-hostable from the start.** Aligns with crypto-native + open-source values; the kind of user who funds $5 USDC into their agent is also the kind who wants the code on their machine.
|
|
151
|
+
- **Faster ship.** A CLI v0 is ~4 weeks; a polished PWA v0 is 8–12 weeks.
|
|
152
|
+
- **Pairs naturally with Franklin / Hermes-style adoption patterns.** The audience that installs Franklin will install Veto Agents the same way.
|
|
153
|
+
- **PWA comes later, easily.** Once the agent code, runner, and wallet/policy/receipts flow are working in the CLI, wrapping that as a hosted web UI is mostly a frontend job — ~4 weeks on top of the CLI base.
|
|
154
|
+
|
|
155
|
+
## Build sequence
|
|
156
|
+
|
|
157
|
+
1. **Weeks 1–4:** CLI v0 + Media agent. `veto-agents setup`, `veto-agents install media`, `veto-agents media "prompt"`, receipts, policy editing.
|
|
158
|
+
2. **Weeks 5–8:** Build agent. Same CLI, add `veto-agents install build`.
|
|
159
|
+
3. **Weeks 9–10:** Research agent.
|
|
160
|
+
4. **Weeks 11–12:** Inbox agent.
|
|
161
|
+
5. **Weeks 13–16:** PWA at `app.veto-ai.com` as the hosted convenience layer for non-devs, sharing the same agent backends.
|
|
162
|
+
|
|
163
|
+
Native iOS/Android wrappers via Capacitor in v0.4, only if the PWA hits a ceiling.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Investech Global LLC
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: veto-agents
|
|
3
|
+
Version: 0.0.4
|
|
4
|
+
Summary: AI agents that pay for things on your behalf, with the safety built in. Hermes-core, governed by Veto.
|
|
5
|
+
Project-URL: Homepage, https://veto-ai.com
|
|
6
|
+
Project-URL: Repository, https://github.com/veto-protocol/veto-agents
|
|
7
|
+
Project-URL: Documentation, https://github.com/veto-protocol/veto-agents#readme
|
|
8
|
+
Author-email: Investech Global LLC <tomer@veto-ai.com>
|
|
9
|
+
License: MIT License
|
|
10
|
+
|
|
11
|
+
Copyright (c) 2026 Investech Global LLC
|
|
12
|
+
|
|
13
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
14
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
15
|
+
in the Software without restriction, including without limitation the rights
|
|
16
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
17
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
18
|
+
furnished to do so, subject to the following conditions:
|
|
19
|
+
|
|
20
|
+
The above copyright notice and this permission notice shall be included in all
|
|
21
|
+
copies or substantial portions of the Software.
|
|
22
|
+
|
|
23
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
24
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
25
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
26
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
27
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
28
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
29
|
+
SOFTWARE.
|
|
30
|
+
License-File: LICENSE
|
|
31
|
+
Keywords: agent-payments,agents,ai,hermes,policy,veto,x402
|
|
32
|
+
Classifier: Development Status :: 2 - Pre-Alpha
|
|
33
|
+
Classifier: Intended Audience :: Developers
|
|
34
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
35
|
+
Classifier: Programming Language :: Python :: 3
|
|
36
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
37
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
38
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
39
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
40
|
+
Requires-Python: >=3.10
|
|
41
|
+
Requires-Dist: httpx>=0.27
|
|
42
|
+
Requires-Dist: platformdirs>=4.0
|
|
43
|
+
Requires-Dist: pyyaml>=6.0
|
|
44
|
+
Requires-Dist: qrcode>=7.4
|
|
45
|
+
Requires-Dist: rich>=13.7
|
|
46
|
+
Requires-Dist: typer>=0.12
|
|
47
|
+
Provides-Extra: dev
|
|
48
|
+
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
|
|
49
|
+
Requires-Dist: pytest>=8.0; extra == 'dev'
|
|
50
|
+
Requires-Dist: ruff>=0.6; extra == 'dev'
|
|
51
|
+
Provides-Extra: hermes
|
|
52
|
+
Requires-Dist: hermes-agent>=0.2.0; extra == 'hermes'
|
|
53
|
+
Description-Content-Type: text/markdown
|
|
54
|
+
|
|
55
|
+
# Veto Agents
|
|
56
|
+
|
|
57
|
+
**AI agents that pay for things, on your behalf, with the safety built in.**
|
|
58
|
+
|
|
59
|
+
A curated set of consumer AI agents — each one designed from day zero to spend money to do real work for you, every action governed by [Veto](https://veto-ai.com), every spend signed, every verdict verifiable.
|
|
60
|
+
|
|
61
|
+
## The bet
|
|
62
|
+
|
|
63
|
+
Agents are about to spend a lot of money. Today's general agent frameworks (Hermes, OpenClaw, n8n) treat payments as an afterthought — a tool the agent *might* call if you wire it up. Veto Agents inverts that: every agent in this catalog is built around the assumption that **it has money and will spend it.** Veto governance is not a feature — it's the only way the agent works at all.
|
|
64
|
+
|
|
65
|
+
## How every agent behaves
|
|
66
|
+
|
|
67
|
+
Five non-negotiable principles every Veto Agent inherits — see [PRINCIPLES.md](PRINCIPLES.md) for the full version.
|
|
68
|
+
|
|
69
|
+
1. **Plan-then-execute.** Show the plan + cost estimate first. Wait for explicit consent. Never auto-spend.
|
|
70
|
+
2. **Cost transparency at every step.** Show actuals as they happen, with the receipt URL inline.
|
|
71
|
+
3. **Receipts for everything spendable.** Every paid action produces a Veto-signed verdict at `veto-ai.com/r/<uuid>`.
|
|
72
|
+
4. **Veto is the only spend gate.** Every paid call authorizes through Veto, every time, no caching.
|
|
73
|
+
5. **Always offer cheaper alternatives when they exist.** Cost-conscious by default.
|
|
74
|
+
|
|
75
|
+
That predictability is the product. Every other consumer agent in 2026 is "agent just goes." Veto Agents is *the agent that asks first*.
|
|
76
|
+
|
|
77
|
+
## What's in the box
|
|
78
|
+
|
|
79
|
+
Four agents, each Hermes-core with Veto governance preconfigured:
|
|
80
|
+
|
|
81
|
+
- **[Media](agents/media/SPEC.md)** — generates images, video, and audio for you. Pays Replicate / Runway / ElevenLabs per call. *Headline agent.*
|
|
82
|
+
- **[Build](agents/build/SPEC.md)** — deploys your code on the cheapest infra it can find. Pays Vercel / Modal / Replicate for compute. *Dev headline.*
|
|
83
|
+
- **[Research](agents/research/SPEC.md)** — does deep research using paid search and content. Pays Exa / Tavily / x402-gated sources.
|
|
84
|
+
- **[Inbox](agents/inbox/SPEC.md)** — handles email, calendar, and scheduling using paid AI and scheduling tools.
|
|
85
|
+
|
|
86
|
+
Each agent ships with a default Veto policy (caps, allowlists, intent rules), a wallet provisioned via Privy on first run, and a receipts feed showing every action it took and why.
|
|
87
|
+
|
|
88
|
+
## How this connects to Veto
|
|
89
|
+
|
|
90
|
+
Veto already ships the trust substrate:
|
|
91
|
+
- **Engine** — 8-stage policy + risk evaluation
|
|
92
|
+
- **Receipts** — Ed25519-signed verdicts at `veto-ai.com/r/<uuid>`
|
|
93
|
+
- **APPS** — open policy schema
|
|
94
|
+
- **VetoGuardedAccount** — on-chain hard-stop contract
|
|
95
|
+
|
|
96
|
+
Veto Agents is the **consumer surface** that surfaces all of that. The agents are the front door; Veto is the load-bearing wall behind them. Same primitives, packaged for a non-developer to install and use.
|
|
97
|
+
|
|
98
|
+
See [ARCHITECTURE.md](ARCHITECTURE.md) for how the layers compose.
|
|
99
|
+
|
|
100
|
+
## Status
|
|
101
|
+
|
|
102
|
+
v0 in design. Build sequence:
|
|
103
|
+
1. **Media** — weeks 1–6, ship first
|
|
104
|
+
2. **Build** — weeks 7–10
|
|
105
|
+
3. **Research + Inbox** — weeks 11–14
|
|
106
|
+
|
|
107
|
+
## License
|
|
108
|
+
|
|
109
|
+
MIT. Each agent is a forkable template. Self-host on your own machine using vanilla Hermes, or run via the hosted Veto Agents PWA at `app.veto-ai.com`.
|
|
110
|
+
|
|
111
|
+
## Where the credit goes
|
|
112
|
+
|
|
113
|
+
- **Hermes Agent** — Nous Research. The core runtime every agent runs on.
|
|
114
|
+
- **Privy** — embedded wallet provisioning so users never see a seed phrase.
|
|
115
|
+
- **Veto Protocol** — the governance, receipts, and on-chain enforcement layer.
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
*Veto governs. The rail executes. The agent works.*
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# Veto Agents — Principles
|
|
2
|
+
|
|
3
|
+
Five non-negotiable behaviors every agent in this catalog must implement. These are the things that make a Veto Agent a Veto Agent. If a contributed agent violates any of these, it doesn't ship.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. Plan-then-execute
|
|
8
|
+
|
|
9
|
+
**Every agent must show its plan + cost estimate before spending a single cent.**
|
|
10
|
+
|
|
11
|
+
When a user gives the agent a task that will cost money to complete, the agent must:
|
|
12
|
+
|
|
13
|
+
1. **Decompose the task into steps.** "To make this 6-second video I'll: (a) generate the video via Runway Gen-3, (b) generate a voiceover via ElevenLabs, (c) combine them via ffmpeg locally."
|
|
14
|
+
2. **Estimate the cost of each step.** "Step a: ~$0.42. Step b: ~$0.05. Step c: free." Show the line items, not just the total.
|
|
15
|
+
3. **Surface alternatives when relevant.** "Alternative: use Hailuo for the video at ~$0.18, slightly lower quality. Reply 'use hailuo' to swap."
|
|
16
|
+
4. **Wait for explicit consent.** Don't auto-proceed. The user sees the plan, types `y` or taps Approve.
|
|
17
|
+
|
|
18
|
+
The shape in the CLI:
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
$ veto-agents media "make a 6s video of a neon jellyfish with voiceover"
|
|
22
|
+
|
|
23
|
+
Plan:
|
|
24
|
+
1. Generate 6s video — Runway Gen-3 ~$0.42
|
|
25
|
+
2. Generate voiceover — ElevenLabs (45c) ~$0.05
|
|
26
|
+
3. Combine locally with ffmpeg free
|
|
27
|
+
─────
|
|
28
|
+
Estimate: $0.47
|
|
29
|
+
|
|
30
|
+
Alternative: Hailuo video instead of Runway → $0.20 total (lower quality)
|
|
31
|
+
|
|
32
|
+
Proceed? [y/N/alt]
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
The shape in the PWA: a plan card with line items + an Approve button.
|
|
36
|
+
|
|
37
|
+
**Why this is non-negotiable:** Most users have never given an AI agent money. The first time they do, the agent should over-communicate, not under-communicate. Trust compounds across interactions; one auto-spent surprise nukes it forever.
|
|
38
|
+
|
|
39
|
+
## 2. Cost transparency at every step
|
|
40
|
+
|
|
41
|
+
Even after the plan is approved, every individual paid call shows its actual cost as it happens.
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
✓ Step 1 done. Runway Gen-3 video, 6.1s, $0.43 actual (~$0.42 est).
|
|
45
|
+
Receipt: veto-ai.com/r/8b3c-7f29-…
|
|
46
|
+
✓ Step 2 done. ElevenLabs voiceover, 43 chars, $0.012 actual.
|
|
47
|
+
Receipt: veto-ai.com/r/4a1f-9d02-…
|
|
48
|
+
Total spent: $0.44 (estimate was $0.47). Output saved to ~/Downloads/jellyfish.mp4
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Three rules:
|
|
52
|
+
- Show actuals, not estimates, after execution.
|
|
53
|
+
- Cite the receipt URL inline.
|
|
54
|
+
- Show a running total per task.
|
|
55
|
+
|
|
56
|
+
## 3. Receipts for everything spendable
|
|
57
|
+
|
|
58
|
+
Every API call that costs money produces a Veto-signed receipt. No exceptions. No "free this time." The receipt records:
|
|
59
|
+
- The action (tool name, parameters, merchant)
|
|
60
|
+
- The cost
|
|
61
|
+
- The verdict (allow / deny / escalate)
|
|
62
|
+
- The reason codes
|
|
63
|
+
- The policy version that produced the verdict
|
|
64
|
+
- A cryptographic signature anyone can verify offline against the JWKS
|
|
65
|
+
|
|
66
|
+
The agent always surfaces the receipt URL to the user when reporting back on a step. Anyone with the URL can re-verify the action happened, in the way recorded, against the policy in effect.
|
|
67
|
+
|
|
68
|
+
## 4. Veto is the only spend gate
|
|
69
|
+
|
|
70
|
+
Agents don't have their own "should I do this" logic for spending. They ask Veto, every time, before any external paid call. The Veto authorize endpoint is the **single source of truth** for whether an action proceeds.
|
|
71
|
+
|
|
72
|
+
- Don't bypass Veto with "free tier" calls (they may not stay free).
|
|
73
|
+
- Don't pre-aggregate "I'll batch 10 calls into one authorize" (each call is its own verdict).
|
|
74
|
+
- Don't cache "Veto said yes once, so this is fine for the next hour" (every call re-authorizes).
|
|
75
|
+
|
|
76
|
+
This rule is what makes the receipts trustworthy. If an agent ever spent money without authorizing, the receipt graph would have holes and the system would be uninspectable. So: every paid action, every time, authorize first.
|
|
77
|
+
|
|
78
|
+
## 5. Always offer cheaper alternatives when they exist
|
|
79
|
+
|
|
80
|
+
Agents must be cost-conscious by default. If a cheaper provider can produce ≥80% of the quality at <50% of the price, the agent surfaces it as an alternative *before* executing the more expensive option.
|
|
81
|
+
|
|
82
|
+
- Media agent: "Use Hailuo for $0.18 instead of Runway for $0.42? Slightly lower quality."
|
|
83
|
+
- Build agent: "Deploy to Cloudflare Pages (free) instead of Vercel ($0.20/mo)? Same Lighthouse score for your stack."
|
|
84
|
+
- Research agent: "Use Tavily ($0.20) instead of Exa ($0.30) for this query? Similar source quality."
|
|
85
|
+
|
|
86
|
+
The user might still pick the expensive option — that's fine. The point is they *chose*, with information. The agent's job is to present the choice.
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## How these become enforceable
|
|
91
|
+
|
|
92
|
+
Three layers:
|
|
93
|
+
|
|
94
|
+
### Layer 1: Agent system prompts
|
|
95
|
+
|
|
96
|
+
Every agent's `prompts/system.md` includes a non-negotiable block that instructs the LLM to plan, estimate, and seek consent before any external action. The prompt cannot be overridden by user input ("just do it without asking" is ignored — the prompt explicitly says to ignore such overrides).
|
|
97
|
+
|
|
98
|
+
### Layer 2: Veto policy enforcement
|
|
99
|
+
|
|
100
|
+
The default `policy.yaml` for every agent includes:
|
|
101
|
+
|
|
102
|
+
```yaml
|
|
103
|
+
caps:
|
|
104
|
+
human_approval_above_usd: <agent-specific threshold>
|
|
105
|
+
behavior:
|
|
106
|
+
require_plan_preview: true
|
|
107
|
+
require_per_step_estimate: true
|
|
108
|
+
require_post_action_receipt_link: true
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
These are read by the agent runner and enforce the principles structurally, not just in the prompt. If the LLM tries to skip the plan-preview step, the runner intercepts and returns the missing step to the user.
|
|
112
|
+
|
|
113
|
+
### Layer 3: CLI / PWA UX
|
|
114
|
+
|
|
115
|
+
The CLI and PWA both render plan previews as a structured block (not just LLM text), and require an explicit user input (`y`, tap Approve) before the runner proceeds. There is no auto-proceed path in v0. v0.2 may add a "small expenses" auto-approve (e.g., under $0.10) but only with explicit per-agent opt-in.
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## What this gives the user
|
|
120
|
+
|
|
121
|
+
A predictable interaction shape across every Veto Agent:
|
|
122
|
+
|
|
123
|
+
> ask → plan + estimate shown → confirm → execute step-by-step with live cost + receipts → final summary with all receipts
|
|
124
|
+
|
|
125
|
+
That predictability is what makes "trust an AI agent with money" feel safe enough to actually do. Every other consumer agent product in 2026 (Google Spark, Lindy, ChatGPT) is some flavor of "agent just goes." Veto Agents' brand is **the agent that asks first**. That's the whole product, and these five principles are how we deliver it.
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Veto Agents
|
|
2
|
+
|
|
3
|
+
**AI agents that pay for things, on your behalf, with the safety built in.**
|
|
4
|
+
|
|
5
|
+
A curated set of consumer AI agents — each one designed from day zero to spend money to do real work for you, every action governed by [Veto](https://veto-ai.com), every spend signed, every verdict verifiable.
|
|
6
|
+
|
|
7
|
+
## The bet
|
|
8
|
+
|
|
9
|
+
Agents are about to spend a lot of money. Today's general agent frameworks (Hermes, OpenClaw, n8n) treat payments as an afterthought — a tool the agent *might* call if you wire it up. Veto Agents inverts that: every agent in this catalog is built around the assumption that **it has money and will spend it.** Veto governance is not a feature — it's the only way the agent works at all.
|
|
10
|
+
|
|
11
|
+
## How every agent behaves
|
|
12
|
+
|
|
13
|
+
Five non-negotiable principles every Veto Agent inherits — see [PRINCIPLES.md](PRINCIPLES.md) for the full version.
|
|
14
|
+
|
|
15
|
+
1. **Plan-then-execute.** Show the plan + cost estimate first. Wait for explicit consent. Never auto-spend.
|
|
16
|
+
2. **Cost transparency at every step.** Show actuals as they happen, with the receipt URL inline.
|
|
17
|
+
3. **Receipts for everything spendable.** Every paid action produces a Veto-signed verdict at `veto-ai.com/r/<uuid>`.
|
|
18
|
+
4. **Veto is the only spend gate.** Every paid call authorizes through Veto, every time, no caching.
|
|
19
|
+
5. **Always offer cheaper alternatives when they exist.** Cost-conscious by default.
|
|
20
|
+
|
|
21
|
+
That predictability is the product. Every other consumer agent in 2026 is "agent just goes." Veto Agents is *the agent that asks first*.
|
|
22
|
+
|
|
23
|
+
## What's in the box
|
|
24
|
+
|
|
25
|
+
Four agents, each Hermes-core with Veto governance preconfigured:
|
|
26
|
+
|
|
27
|
+
- **[Media](agents/media/SPEC.md)** — generates images, video, and audio for you. Pays Replicate / Runway / ElevenLabs per call. *Headline agent.*
|
|
28
|
+
- **[Build](agents/build/SPEC.md)** — deploys your code on the cheapest infra it can find. Pays Vercel / Modal / Replicate for compute. *Dev headline.*
|
|
29
|
+
- **[Research](agents/research/SPEC.md)** — does deep research using paid search and content. Pays Exa / Tavily / x402-gated sources.
|
|
30
|
+
- **[Inbox](agents/inbox/SPEC.md)** — handles email, calendar, and scheduling using paid AI and scheduling tools.
|
|
31
|
+
|
|
32
|
+
Each agent ships with a default Veto policy (caps, allowlists, intent rules), a wallet provisioned via Privy on first run, and a receipts feed showing every action it took and why.
|
|
33
|
+
|
|
34
|
+
## How this connects to Veto
|
|
35
|
+
|
|
36
|
+
Veto already ships the trust substrate:
|
|
37
|
+
- **Engine** — 8-stage policy + risk evaluation
|
|
38
|
+
- **Receipts** — Ed25519-signed verdicts at `veto-ai.com/r/<uuid>`
|
|
39
|
+
- **APPS** — open policy schema
|
|
40
|
+
- **VetoGuardedAccount** — on-chain hard-stop contract
|
|
41
|
+
|
|
42
|
+
Veto Agents is the **consumer surface** that surfaces all of that. The agents are the front door; Veto is the load-bearing wall behind them. Same primitives, packaged for a non-developer to install and use.
|
|
43
|
+
|
|
44
|
+
See [ARCHITECTURE.md](ARCHITECTURE.md) for how the layers compose.
|
|
45
|
+
|
|
46
|
+
## Status
|
|
47
|
+
|
|
48
|
+
v0 in design. Build sequence:
|
|
49
|
+
1. **Media** — weeks 1–6, ship first
|
|
50
|
+
2. **Build** — weeks 7–10
|
|
51
|
+
3. **Research + Inbox** — weeks 11–14
|
|
52
|
+
|
|
53
|
+
## License
|
|
54
|
+
|
|
55
|
+
MIT. Each agent is a forkable template. Self-host on your own machine using vanilla Hermes, or run via the hosted Veto Agents PWA at `app.veto-ai.com`.
|
|
56
|
+
|
|
57
|
+
## Where the credit goes
|
|
58
|
+
|
|
59
|
+
- **Hermes Agent** — Nous Research. The core runtime every agent runs on.
|
|
60
|
+
- **Privy** — embedded wallet provisioning so users never see a seed phrase.
|
|
61
|
+
- **Veto Protocol** — the governance, receipts, and on-chain enforcement layer.
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
*Veto governs. The rail executes. The agent works.*
|