conduit-browser 0.2.0__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 (46) hide show
  1. conduit_browser-0.2.0/.gitignore +59 -0
  2. conduit_browser-0.2.0/LICENSE +21 -0
  3. conduit_browser-0.2.0/PKG-INFO +395 -0
  4. conduit_browser-0.2.0/README.md +365 -0
  5. conduit_browser-0.2.0/audit.py +337 -0
  6. conduit_browser-0.2.0/cato/audit.py +337 -0
  7. conduit_browser-0.2.0/cato/orchestrator/README.md +378 -0
  8. conduit_browser-0.2.0/cato/receipt.py +235 -0
  9. conduit_browser-0.2.0/cato/replay.py +277 -0
  10. conduit_browser-0.2.0/cato/skills/README.md +84 -0
  11. conduit_browser-0.2.0/cato/skills/__init__.py +0 -0
  12. conduit_browser-0.2.0/cato/skills/add_notion.md +23 -0
  13. conduit_browser-0.2.0/cato/skills/coding_agent.md +137 -0
  14. conduit_browser-0.2.0/cato/skills/conduit.md +252 -0
  15. conduit_browser-0.2.0/cato/skills/daily_digest.md +31 -0
  16. conduit_browser-0.2.0/cato/skills/github/SKILL.md +49 -0
  17. conduit_browser-0.2.0/cato/skills/knowledge_graph/SKILL.md +53 -0
  18. conduit_browser-0.2.0/cato/skills/python_executor/SKILL.md +51 -0
  19. conduit_browser-0.2.0/cato/skills/self_improvement.md +89 -0
  20. conduit_browser-0.2.0/cato/skills/send_email.md +18 -0
  21. conduit_browser-0.2.0/cato/skills/summarize_url.md +15 -0
  22. conduit_browser-0.2.0/cato/skills/web_search.md +50 -0
  23. conduit_browser-0.2.0/cato/tools/__init__.py +33 -0
  24. conduit_browser-0.2.0/cato/tools/browser.py +490 -0
  25. conduit_browser-0.2.0/cato/tools/conduit_bridge.py +902 -0
  26. conduit_browser-0.2.0/cato/tools/conduit_crawl.py +219 -0
  27. conduit_browser-0.2.0/cato/tools/conduit_monitor.py +132 -0
  28. conduit_browser-0.2.0/cato/tools/conduit_proof.py +145 -0
  29. conduit_browser-0.2.0/cato/tools/file.py +236 -0
  30. conduit_browser-0.2.0/cato/tools/github_tool.py +412 -0
  31. conduit_browser-0.2.0/cato/tools/memory.py +94 -0
  32. conduit_browser-0.2.0/cato/tools/python_executor.py +180 -0
  33. conduit_browser-0.2.0/cato/tools/shell.py +232 -0
  34. conduit_browser-0.2.0/cato/tools/web_search.py +745 -0
  35. conduit_browser-0.2.0/pyproject.toml +71 -0
  36. conduit_browser-0.2.0/receipt.py +235 -0
  37. conduit_browser-0.2.0/replay.py +277 -0
  38. conduit_browser-0.2.0/requirements.txt +1 -0
  39. conduit_browser-0.2.0/skills/conduit.md +340 -0
  40. conduit_browser-0.2.0/tools/browser.py +1346 -0
  41. conduit_browser-0.2.0/tools/captcha_solver.py +114 -0
  42. conduit_browser-0.2.0/tools/conduit_bridge.py +1320 -0
  43. conduit_browser-0.2.0/tools/conduit_crawl.py +269 -0
  44. conduit_browser-0.2.0/tools/conduit_monitor.py +133 -0
  45. conduit_browser-0.2.0/tools/conduit_proof.py +157 -0
  46. conduit_browser-0.2.0/tools/web_search.py +478 -0
@@ -0,0 +1,59 @@
1
+ # Archive folders - planning, brainstorms, old tests
2
+ archive/
3
+ docs/AGENTS.md
4
+
5
+ # Python cache and build artifacts
6
+ __pycache__/
7
+ *.py[cod]
8
+ *$py.class
9
+ *.so
10
+ .pytest_cache/
11
+ .benchmarks/
12
+ *.egg-info/
13
+ dist/
14
+ build/
15
+
16
+ # Virtual environments
17
+ venv/
18
+ env/
19
+ ENV/
20
+
21
+ # IDE/editor config
22
+ .cursor/
23
+ .vscode/
24
+ .idea/
25
+ *.swp
26
+ *.swo
27
+ *~
28
+
29
+ # OS
30
+ .DS_Store
31
+ Thumbs.db
32
+
33
+ # Temporary files
34
+ *.tmp
35
+ *.log
36
+ .ralph/
37
+
38
+ # Test output and reports
39
+ *.coverage
40
+ htmlcov/
41
+
42
+ # SQLite and runtime data (user's local ~/.cato directory is separate)
43
+ # Do NOT ignore cato.db if it's committed, but typically it's in ~/.cato/
44
+
45
+ # Browser profiles and cache
46
+ *.profile_cache
47
+ chromium_cache/
48
+
49
+ # Keep everything else in tools/, tests/, scripts/ - they're essential
50
+ !tools/
51
+ !tests/
52
+ !scripts/
53
+ !skills/
54
+
55
+ # Keep core runtime Python files
56
+ !audit.py
57
+ !receipt.py
58
+ !replay.py
59
+ !CLAUDE.md
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 bkauto3
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,395 @@
1
+ Metadata-Version: 2.4
2
+ Name: conduit-browser
3
+ Version: 0.2.0
4
+ Summary: Headless browser with SHA-256 hash chain + Ed25519 audit trails. MCP server for AI agents. Stealth. Self-verifiable proof bundles.
5
+ Project-URL: Homepage, https://github.com/bkauto3/Conduit
6
+ Project-URL: Repository, https://github.com/bkauto3/Conduit
7
+ Project-URL: Documentation, https://github.com/bkauto3/Conduit#readme
8
+ Project-URL: Bug Tracker, https://github.com/bkauto3/Conduit/issues
9
+ Project-URL: Agent Marketplace, https://swarmsync.ai
10
+ Project-URL: Conduit on SwarmSync, https://swarmsync.ai/conduit
11
+ Author: BKAuto3
12
+ License-Expression: MIT
13
+ License-File: LICENSE
14
+ Keywords: ai-agent,audit-trail,cryptographic-proof,ed25519,hash-chain,headless-browser,mcp-server,proof-bundle,stealth-browser,web-automation
15
+ Classifier: Development Status :: 4 - Beta
16
+ Classifier: Intended Audience :: Developers
17
+ Classifier: License :: OSI Approved :: MIT License
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3.10
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Programming Language :: Python :: 3.13
23
+ Classifier: Topic :: Internet :: WWW/HTTP :: Browsers
24
+ Classifier: Topic :: Security :: Cryptography
25
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
26
+ Classifier: Topic :: Software Development :: Testing
27
+ Requires-Python: >=3.10
28
+ Requires-Dist: patchright>=0.1.0
29
+ Description-Content-Type: text/markdown
30
+
31
+ # Conduit
32
+
33
+ **The only headless browser with a cryptographic audit layer.**
34
+
35
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
36
+ [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
37
+ [![MCP Server](https://img.shields.io/badge/MCP-Server-green.svg)](https://modelcontextprotocol.io)
38
+ [![Tests](https://img.shields.io/badge/tests-passing-brightgreen.svg)](tests/)
39
+
40
+ Every action Conduit takes — every click, every navigation, every JavaScript execution — is written to a tamper-evident SHA-256 hash chain, signed with an Ed25519 identity key, and verifiable by anyone with zero dependencies. No other headless browser does this.
41
+
42
+ ---
43
+
44
+ ## Install
45
+
46
+ ```bash
47
+ git clone https://github.com/bkauto3/Conduit.git
48
+ cd Conduit
49
+ pip install -r requirements.txt
50
+ ```
51
+
52
+ ---
53
+
54
+ ## Quick Start — Audited Session in 60 Seconds
55
+
56
+ ```python
57
+ import asyncio
58
+ from tools.conduit_bridge import ConduitBridge
59
+
60
+ async def main():
61
+ bridge = ConduitBridge()
62
+
63
+ # Navigate to a page
64
+ result = await bridge.execute({"action": "navigate", "url": "https://example.com"})
65
+ print(result["title"])
66
+
67
+ # Extract main content (strips nav/ads/footers)
68
+ content = await bridge.execute({"action": "extract_main", "fmt": "md"})
69
+ print(content["text"])
70
+
71
+ # Export cryptographic proof of the entire session
72
+ proof = await bridge.execute({"action": "export_proof"})
73
+ print(f"Proof bundle: {proof['path']}")
74
+ print(f"Verify: cd session_proof && python verify.py")
75
+
76
+ asyncio.run(main())
77
+ ```
78
+
79
+ ---
80
+
81
+ ## Use Cases
82
+
83
+ **Compliance automation** — Prove a specific form was filled with specific values at a specific time. Export a proof bundle. The chain hash is your receipt.
84
+
85
+ **Security research** — Document what JS a page injected, what network requests it made, what the DOM looked like at each step — all signed and chained.
86
+
87
+ **AI agent browser control** — Designed as the browser engine for autonomous agents. Budget enforcement prevents runaway costs. The audit trail lets you replay and inspect exactly what the agent did.
88
+
89
+ **Web monitoring** — `fingerprint` + `check_changed` gives you signed change detection with cryptographic proof of when a page mutated.
90
+
91
+ **Site mapping and bulk extraction** — BFS crawl with robots.txt compliance, adaptive rate limiting, and per-page audit events.
92
+
93
+ ---
94
+
95
+ ## Built for Agent Economies
96
+
97
+ Conduit's audit trail is not just for compliance — it is the trust layer that enables agents to transact with each other. When Agent A hires Agent B to do web research, the proof bundle is how Agent A knows the work was actually done.
98
+
99
+ This is the model behind [SwarmSync.ai](https://swarmsync.ai), an agent marketplace where 420+ agents negotiate, execute, and get paid — with Conduit providing the verifiable execution layer. Conduit is and will always be free and open-source. SwarmSync is where the work gets monetized.
100
+
101
+ You do not need SwarmSync to use Conduit. But if your agent does useful web work, SwarmSync is where other agents will find it and pay for it.
102
+
103
+ ---
104
+
105
+ ## For Compliance & Legal Teams
106
+
107
+ Conduit proof bundles serve as chain-of-custody documentation for web-based evidence:
108
+
109
+ - **SOC 2 / SOX audits** — Prove exactly what automated systems did during testing and monitoring (CC7.2 change monitoring, CC6.1 logical access)
110
+ - **GDPR verification** — Document that a site deleted personal data or displayed required consent banners, with timestamped proof
111
+ - **Litigation support** — Capture what a website displayed at a specific moment, with tamper-evident chaining that holds up to scrutiny
112
+ - **Insurance claims** — Document property listings, damage reports, or policy terms with cryptographic proof of capture time
113
+ - **HIPAA audit trails** — Prove exactly which automated processes accessed what data and when (164.312(b) audit controls)
114
+
115
+ Each proof bundle is self-verifiable with zero dependencies and can be archived alongside your compliance records. Think of it as a notarized logbook where tearing out or altering any page makes the tampering obvious.
116
+
117
+ ---
118
+
119
+ ## For Security Researchers
120
+
121
+ ### Full JavaScript Source in the Audit Chain
122
+
123
+ When you execute JavaScript via `eval`, Conduit stores the **entire source body** in the hash chain — not just the result:
124
+
125
+ ```python
126
+ result = await bridge.execute({
127
+ "action": "eval",
128
+ "js": "Array.from(document.scripts).map(s => s.src)"
129
+ })
130
+ ```
131
+
132
+ This means you can:
133
+ - Prove exactly which code executed on a page
134
+ - Detect if a page injected unexpected scripts
135
+ - Document web-based exploits with cryptographic evidence
136
+ - Build forensic session replays where every action is signed and chained
137
+
138
+ No other headless browser captures the JS source itself — they only log that JS ran and what it returned. Conduit logs **what ran**.
139
+
140
+ ---
141
+
142
+ ## Why Conduit Instead of Playwright, Puppeteer, or Selenium?
143
+
144
+ | Feature | Conduit | Playwright | Puppeteer | Selenium |
145
+ |---|---|---|---|---|
146
+ | SHA-256 hash-chained audit log | ✅ | ❌ | ❌ | ❌ |
147
+ | JavaScript source stored in audit chain | ✅ | ❌ | ❌ | ❌ |
148
+ | Ed25519-signed session proofs | ✅ | ❌ | ❌ | ❌ |
149
+ | Self-verifiable proof bundles (zero deps) | ✅ | ❌ | ❌ | ❌ |
150
+ | Tamper detection on any past action | ✅ | ❌ | ❌ | ❌ |
151
+ | Built-in stealth (Patchright fork) | ✅ | ❌ | ❌ | ❌ |
152
+ | Robots.txt compliant BFS crawler | ✅ | ❌ | ❌ | ❌ |
153
+ | Page change fingerprinting (SHA-256) | ✅ | ❌ | ❌ | ❌ |
154
+ | Multi-engine web search built-in | ✅ | ❌ | ❌ | ❌ |
155
+ | Sensitive input auto-redaction | ✅ | ❌ | ❌ | ❌ |
156
+ | Billing ledger + cost enforcement | ✅ | ❌ | ❌ | ❌ |
157
+
158
+ The gap isn't features — it's **trust**. Playwright gives you automation. Conduit gives you automation you can **prove**.
159
+
160
+ ---
161
+
162
+ ## How Proof Bundles Work
163
+
164
+ Every action Conduit takes is recorded in a chain where each entry's hash depends on the previous one. Change any entry — even a timestamp — and the entire chain breaks. This is verifiable by anyone, using only Python's standard library, with zero trust in Conduit itself.
165
+
166
+ ### The Hash Chain
167
+
168
+ ```python
169
+ bridge.execute({"action": "eval", "js": "document.querySelectorAll('h1').length"})
170
+ ```
171
+
172
+ The full JavaScript source is stored **verbatim in the audit hash chain**:
173
+
174
+ ```json
175
+ {
176
+ "id": 7,
177
+ "session_id": "sess-abc123",
178
+ "action_type": "tool_call",
179
+ "tool_name": "browser.eval",
180
+ "inputs_json": "{\"js_code\": \"document.querySelectorAll('h1').length\"}",
181
+ "outputs_json": "{\"success\": true, \"result\": 3, \"code_hash\": \"a3f9...\"}",
182
+ "timestamp": 1741564800.123,
183
+ "prev_hash": "e8d2c4...",
184
+ "row_hash": "7b1a3f..."
185
+ }
186
+ ```
187
+
188
+ Row 8's hash depends on row 7's hash. Row 7's hash depends on row 6's. Change any row — any input, any output, any timestamp — and the entire chain breaks. `verify_chain()` will catch it.
189
+
190
+ ### Session Proof Bundles
191
+
192
+ At any point, call `export_proof` to generate a self-verifiable `.tar.gz` bundle:
193
+
194
+ ```python
195
+ bridge.execute({"action": "export_proof"})
196
+ # → ~/.cato/proofs/conduit_proof_sess-abc123_20260310.tar.gz
197
+ ```
198
+
199
+ The bundle contains:
200
+
201
+ ```
202
+ session_proof/
203
+ ├── audit_log.jsonl # Full hash-chained log (one JSON record per line)
204
+ ├── manifest.json # Session metadata + final chain hash
205
+ ├── public_key.pem # Ed25519 public key
206
+ ├── session_sig.txt # Ed25519 signature over final chain hash
207
+ └── verify.py # Self-contained verifier — stdlib only, zero dependencies
208
+ ```
209
+
210
+ Anyone can verify the proof:
211
+
212
+ ```bash
213
+ cd session_proof
214
+ python verify.py
215
+ # Chain OK (47 actions verified)
216
+ # Signature OK
217
+ ```
218
+
219
+ No pip. No npm. No external libraries. Pure stdlib. The verification logic ships inside the bundle.
220
+
221
+ ---
222
+
223
+ ## Use with Claude Code / MCP
224
+
225
+ Conduit works as an MCP server for AI coding agents. Add to your MCP configuration:
226
+
227
+ ```json
228
+ {
229
+ "mcpServers": {
230
+ "conduit": {
231
+ "command": "python",
232
+ "args": ["-m", "tools.conduit_bridge"],
233
+ "env": {}
234
+ }
235
+ }
236
+ }
237
+ ```
238
+
239
+ Claude Code will have access to all Conduit actions — with cryptographic audit trails on everything the agent does.
240
+
241
+ See [skills/conduit.md](skills/conduit.md) for the full action reference.
242
+
243
+ Agents built on Conduit can also be listed on the [SwarmSync.ai](https://swarmsync.ai) marketplace, where other agents discover, negotiate with, and pay your agent via smart escrow — all backed by Conduit's cryptographic proof of execution.
244
+
245
+ ---
246
+
247
+ ## Architecture
248
+
249
+ ```
250
+ Agent / Your Code
251
+
252
+
253
+ ConduitBridge ← single entry point, Ed25519 signing, budget enforcement
254
+
255
+ ┌────┴────┐
256
+ │ │
257
+ BrowserTool Crawlers / Monitors / Proofs
258
+ (Patchright) (ConduitCrawler, ConduitMonitor, ConduitProof)
259
+
260
+
261
+ _audit() ← ONLY write point — writes to BOTH tables atomically
262
+
263
+ ├── conduit_billing ← cost ledger (ConduitBillingLedger)
264
+ └── audit_log ← SHA-256 hash chain (AuditLog)
265
+ ```
266
+
267
+ **The two-layer write path is a hard architectural constraint.** No action method ever calls `_ledger.record()` or `_audit_log.log()` directly. Everything flows through `_audit()`. This guarantees the billing ledger and audit chain are always in sync.
268
+
269
+ ---
270
+
271
+ ## Action Reference
272
+
273
+ ### Wave 0 — Core Browser
274
+ `navigate` · `click` · `type` · `fill` · `extract` · `screenshot`
275
+
276
+ ### Wave 1 — Interaction
277
+ `scroll` · `wait` · `wait_for` · `key_press` · `hover` · `select_option` · `handle_dialog` · `navigate_back` · `console_messages`
278
+
279
+ ### Wave 2 — Extraction (Conduit-Exclusive)
280
+ - **`eval`** — Execute JavaScript. Full source stored in hash chain.
281
+ - **`extract_main`** — Readability-style extraction, strips nav/ads/footers. Optional Markdown output.
282
+ - **`extract_structured`** — Main content + JSON schema validation.
283
+ - **`output_to_file`** — Write to workspace. Path-safe (no directory traversal).
284
+ - **`accessibility_snapshot`** — Full Playwright accessibility tree.
285
+ - **`network_requests`** — Accumulated network log since last call.
286
+
287
+ ### Wave 3 — Advanced (Conduit-Exclusive)
288
+ - **`map`** — BFS site discovery, robots.txt compliant. Returns all reachable URLs.
289
+ - **`crawl`** — Bulk BFS extraction up to `max_depth`. Per-page: title, text, depth.
290
+ - **`fingerprint`** — SHA-256 page fingerprint (normalizes timestamps/nonces to avoid false positives).
291
+ - **`check_changed`** — Re-fingerprint URL. If changed, logs signed `PAGE_MUTATION` event.
292
+ - **`export_proof`** — Generate self-verifiable `.tar.gz` proof bundle.
293
+
294
+ ### Wave 4 — CAPTCHA
295
+ `detect_captcha` · `solve_captcha` · `solve_captcha_vision`
296
+
297
+ ### Wave 5 — Proxy
298
+ `rotate_proxy`
299
+
300
+ ### Wave 6 — Web Search (Built-In)
301
+ - **`web_search`** — Multi-engine: DuckDuckGo, Brave, Exa, Tavily. Query-type routing (code → exa+brave, news → tavily+brave, general → brave+ddg).
302
+ - **`academic_search`** — Semantic Scholar + arXiv.
303
+
304
+ ---
305
+
306
+ ## Storage Layout
307
+
308
+ All runtime data lives under `~/.cato/`:
309
+
310
+ ```
311
+ ~/.cato/
312
+ ├── cato.db # SQLite: audit_log + conduit_billing tables
313
+ ├── conduit_identity.key # Ed25519 private key (chmod 600)
314
+ ├── workspace/
315
+ │ ├── screenshots/ # PNG screenshots
316
+ │ ├── pdfs/ # PDF exports
317
+ │ └── .conduit/ # output_to_file outputs
318
+ ├── proofs/ # Exported proof bundles (.tar.gz)
319
+ ├── browser_profile/ # Persistent Chromium profile
320
+ └── sessions/ # Session data
321
+ ```
322
+
323
+ ---
324
+
325
+ ## Security Design
326
+
327
+ **What Conduit logs:**
328
+ - Full inputs to every action (with sensitive keys auto-redacted)
329
+ - Full outputs from every action
330
+ - Timestamps, session IDs, costs
331
+ - The complete JavaScript source of every `eval` call
332
+ - The SHA-256 fingerprint of every page visited via `fingerprint`
333
+
334
+ **Auto-redacted keys** (value replaced with `[REDACTED]` before logging):
335
+ `password` · `token` · `api_key` · `secret` · `key` · `authorization` · `bearer` · `credential` · `passwd` · `passphrase`
336
+
337
+ **Navigation restrictions:**
338
+ - HTTP/HTTPS only — no `file://`, `data://`, `javascript://` schemes
339
+ - RFC-1918 and loopback IPs blocked — no SSRF via browser
340
+
341
+ **Crawlers:**
342
+ - Always check `robots.txt` before visiting any URL
343
+ - Honor `Crawl-delay` directives
344
+ - Exponential backoff on 429/503, logged as `RATE_LIMITED` events
345
+
346
+ ---
347
+
348
+ ## Running Tests
349
+
350
+ ```bash
351
+ # All tests
352
+ pytest tests/
353
+
354
+ # Specific file
355
+ pytest tests/test_audit_chain.py -v
356
+
357
+ # Specific test
358
+ pytest tests/test_audit_chain.py::TestAuditLog::test_verify_chain_true_after_sequence -v
359
+ ```
360
+
361
+ Tests use `pytest-asyncio`. No real browser is launched — all Patchright calls are mocked via `AsyncMock`. The package shim in `tests/conftest.py` makes the relative imports work without installing the package.
362
+
363
+ ---
364
+
365
+ ## From Free Tool to Paid Agent
366
+
367
+ Conduit is free and open-source. It will stay that way. But agents that do useful work should get paid for it.
368
+
369
+ **Step 1:** Build with Conduit. Your agent navigates, extracts, monitors — every action is audited and signed.
370
+
371
+ **Step 2:** Your agent produces real value. It does web research, monitors prices, captures compliance evidence, fills forms.
372
+
373
+ **Step 3:** List your agent on [SwarmSync.ai](https://swarmsync.ai). Set your price. Define what your agent does.
374
+
375
+ **Step 4:** Other agents on SwarmSync discover yours. They negotiate terms, agree on price, and funds go into smart escrow.
376
+
377
+ **Step 5:** Your agent executes the work via Conduit. The proof bundle proves the work was done. Escrow releases payment.
378
+
379
+ That is it. Conduit gives you the trust layer. SwarmSync gives you the marketplace. You keep your code, your agent, and your revenue.
380
+
381
+ [List your agent on SwarmSync.ai](https://swarmsync.ai)
382
+
383
+ ---
384
+
385
+ ## License
386
+
387
+ [MIT](LICENSE)
388
+
389
+ ---
390
+
391
+ ## Contributing
392
+
393
+ Issues and PRs welcome. See [ORGANIZATION.md](ORGANIZATION.md) for repo structure.
394
+
395
+ **Want to try Conduit right now?** Clone the repo, run the Quick Start above, and export your first proof bundle. Then run `python verify.py` inside it — that's what cryptographic trust feels like.