The Problem
AI agents need to operate interfaces — read data, click buttons, fill forms. But AI is too slow ($0.10/call, 2-5s latency) and too unreliable to drive every interaction.
The Insight
Operating an interface is a solved problem the moment you figure out how. The hard part is understanding the page. That's what AI is good at. The easy part is executing the same steps again. That doesn't need AI.
Tap: Forge Once, Run Forever
Tap separates understanding (AI, once) from execution (deterministic, forever):
forge_inspect → forge_verify → forge_save → tap.run
AI analyzes AI tests AI saves runs forever, $0
The Protocol
8 core operations — the irreducible atoms of interface interaction:
eval · pointer · keyboard · nav · wait · screenshot · run · capabilities
17 built-in operations composed from core. One program runs on Chrome Extension, Playwright, and macOS native apps.
Unix Pipes
Taps compose like Unix commands — auto TTY detection, no flags needed:
tap github trending | tap tap/filter --field stars --gt 1000
tap watch github trending --every 5m | tap tap/filter --field stars --gt 500
Self-Healing
tap doctor
✔ github/trending score=1.0 25 rows (180ms)
✘ douyin/hot score=0.0 0 rows
Health contracts + declared examples = taps verify themselves.
Security: 3 Layers
- Sandbox — Deno Worker with zero permissions
- Static analysis — 7 CI checks on every community PR
- Data isolation — .gitignore blocks secrets, no git remote on user taps
v0.5.0 Highlights
- 199 constraint tests (safety + quality + principle)
-
tap doctor— self-healing health checks -
tap contribute— PR workflow to community skills -
tap watch— outputs changes only, time dimension - Forge captures real API traffic for accurate strategy
- Sandbox for untrusted community taps
106 skills across 50+ sites
GitHub, Reddit, HN, X/Twitter, YouTube, Bilibili, Zhihu, Xiaohongshu, Weibo, Medium, arXiv, and more.
GitHub: github.com/LeonTing1010/tap
Skills: github.com/LeonTing1010/tap-skills
This post was published using Tap itself (devto/post tap).
Top comments (0)