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.
Files changed (33) hide show
  1. veto_agents-0.0.4/.gitignore +20 -0
  2. veto_agents-0.0.4/ARCHITECTURE.md +146 -0
  3. veto_agents-0.0.4/CLI.md +163 -0
  4. veto_agents-0.0.4/LICENSE +21 -0
  5. veto_agents-0.0.4/PKG-INFO +119 -0
  6. veto_agents-0.0.4/PRINCIPLES.md +125 -0
  7. veto_agents-0.0.4/README.md +65 -0
  8. veto_agents-0.0.4/agents/build/SPEC.md +151 -0
  9. veto_agents-0.0.4/agents/inbox/SPEC.md +136 -0
  10. veto_agents-0.0.4/agents/media/SPEC.md +160 -0
  11. veto_agents-0.0.4/agents/research/SPEC.md +131 -0
  12. veto_agents-0.0.4/pyproject.toml +55 -0
  13. veto_agents-0.0.4/src/veto_agents/__init__.py +6 -0
  14. veto_agents-0.0.4/src/veto_agents/agents/__init__.py +0 -0
  15. veto_agents-0.0.4/src/veto_agents/agents/build/__init__.py +8 -0
  16. veto_agents-0.0.4/src/veto_agents/agents/build/agent.py +24 -0
  17. veto_agents-0.0.4/src/veto_agents/agents/inbox/__init__.py +8 -0
  18. veto_agents-0.0.4/src/veto_agents/agents/inbox/agent.py +19 -0
  19. veto_agents-0.0.4/src/veto_agents/agents/media/__init__.py +9 -0
  20. veto_agents-0.0.4/src/veto_agents/agents/media/agent.py +244 -0
  21. veto_agents-0.0.4/src/veto_agents/agents/media/policy.yaml +46 -0
  22. veto_agents-0.0.4/src/veto_agents/agents/media/tools/__init__.py +0 -0
  23. veto_agents-0.0.4/src/veto_agents/agents/media/tools/replicate_image.py +176 -0
  24. veto_agents-0.0.4/src/veto_agents/agents/research/__init__.py +8 -0
  25. veto_agents-0.0.4/src/veto_agents/agents/research/agent.py +19 -0
  26. veto_agents-0.0.4/src/veto_agents/auth.py +170 -0
  27. veto_agents-0.0.4/src/veto_agents/cli.py +541 -0
  28. veto_agents-0.0.4/src/veto_agents/config.py +95 -0
  29. veto_agents-0.0.4/src/veto_agents/funding.py +71 -0
  30. veto_agents-0.0.4/src/veto_agents/register.py +19 -0
  31. veto_agents-0.0.4/src/veto_agents/registry.py +62 -0
  32. veto_agents-0.0.4/src/veto_agents/veto_client.py +82 -0
  33. veto_agents-0.0.4/src/veto_agents/wallet_view.py +244 -0
@@ -0,0 +1,20 @@
1
+ node_modules/
2
+ dist/
3
+ /build/
4
+ *.log
5
+ .env
6
+ .env.local
7
+ .env.*.local
8
+ .DS_Store
9
+ __pycache__/
10
+ *.py[cod]
11
+ .venv/
12
+ .venv-*/
13
+ venv/
14
+ .pytest_cache/
15
+ .mypy_cache/
16
+ .idea/
17
+ .vscode/
18
+ *.swp
19
+ *.tmp
20
+ ~.veto-agents/
@@ -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.
@@ -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.*