tapflow is a self-hosted service that runs iOS simulators and Android emulators in a web browser, letting teams view mobile builds, streams, and recordings on infrastructure they control. Mobile QA teams and other developers use it to test apps without relying on shared physical devices or uploading builds to a cloud provider. The catalogue entries support operating tapflow and its mobile testing workflows.
Borrowing it
Nothing to install: this file belongs to jo-duchan/tapflow. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/jo-duchan/tapflow/main/AGENTS.mdgit clone --depth 1 https://github.com/jo-duchan/tapflowWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/instructions/jo-duchan/tapflow/agents-md)<a href="https://agentmods.dev/instructions/jo-duchan/tapflow/agents-md"><img src="https://agentmods.dev/badge/instructions/jo-duchan/tapflow/agents-md/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/instructions/jo-duchan/tapflow/agents-md"><img src="https://agentmods.dev/badge/instructions/jo-duchan/tapflow/agents-md.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.05925 | $0.05925 |
| Opus 5.5 | $0.02370 | $0.02370 |
| Sonnet 5.5 | $0.01185 | $0.01185 |
| Haiku 4.5 | $0.00592 | $0.00592 |
Grade A, and why
tapflow AGENTS.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 15d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 344 lines — stays where its author put it; the contents beside it link to each section on GitHub.
tapflow — AGENTS.md (Common Rules)
Package-specific rules are referenced via INDEX.md.
WHAT
tapflow is an open-source self-hosted library that lets the entire team — PO, PM, designers, backend engineers, and QA — test iOS/Android apps directly from a browser. It uses the Mac you already own — no external cloud dependency.
Core value
Remove friction. Anyone on the team can open a browser and test the app on a real simulator, without Xcode, without device setup, without accounts on external services.
Three ways to use tapflow
tapflow Core is the layer everything shares: devices, sessions, UI trees, builds, run records, and resource management. It is a concept, not a package. A team can start from any of the three:
- Manual QA: CI uploads a build → the team tests in the browser. The most mature path.
- AI agents via MCP (experimental): an LLM agent drives a device through
@tapflowio/mcp-server. - Automation (experimental): the flow runner replays YAML flows deterministically, mainly in CI.
Don't design for a single entry point. Every change keeps the hard line in VISION.md: replay calls no model, tapflow saves agent or model output as a flow only after a deterministic replay passes, and Manual QA and the flow runner never depend on an agent or any model.
WHY
- Appetize / BrowserStack are expensive and send app data outside your network.
- Reuses infrastructure (Mac) the team already owns.
- Fully open-source and customizable.
For the product direction and philosophy behind these — start anywhere, replay without a model, Flow Capture as the moat — see VISION.md.
Core Principles
- Evidence-based: verify a root cause with code, logs, or tests before fixing — no guess-driven changes.
- Minimal changes: stay within the requested scope; follow the file's existing conventions. Scope is decided by what a reviewer has to hold in their head, not by which file a line sits in.
- Verifiable goal: know how success will be measured before starting (a reproducing test, same tests passing after a refactor, etc.).
- Stop before risky actions — get user confirmation before any hard-to-reverse operation (
git push --force,git reset --hard, sending messages to external systems, DB drops, etc.). Specifically:- Only create commits or PRs when the user explicitly requests it.
- Do not merge PRs. Always leave merging to the user — even with
--admin. Create the PR and stop. Enforced by the PreToolUse hook.claude/hooks/pr-merge-guard.sh, which blocksgh pr mergeandgh pr reviewin command position. It does not cover thegh apiand git plumbing equivalents: same threat model, a cooperative agent rather than an adversary. - A push to
docs-productionis a production deploy of tapflow.dev. Confirm before every one. The only manual push is a docs hotfix: a commit already onmain, cherry-picked, with its diff checked for pages about unreleased features — procedure in CONTRIBUTING, "Docs follow releases". - Avoid breaking changes. If unavoidable, report to the user and get approval before proceeding. Breaking change scope: public API / interface signature changes, DB schema changes, WebSocket message protocol changes, CLI command / flag changes.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 15d ago Changed · +6 lines · +83 tokens per session e81aa2720632
- 18d ago Changed · +3 lines · +69 tokens per session c08acf6a1687
- 1mo ago Changed 5f27fc8b5b5d
- 1mo ago Changed · +7 lines · +120 tokens per session ba26819b919c
- 2mo ago Changed · +29 lines · +555 tokens per session d3fabd041281
- 2mo ago Changed · +3 lines · +202 tokens per session 00c3d27ec06b
- 2mo ago Changed · +17 lines · +335 tokens per session a3ae91c76ac7
- 2mo ago First seen · 279 lines · 4,561 tokens per session scan A 7f7f29660e65
tapflow AGENTS.md is an instructions file published in the GitHub repository jo-duchan/tapflow (1,616 stars, last pushed yesterday), licensed MIT. It adds 5,925 tokens to every session, about $0.0237 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
tapflow AGENTS.md compared with instructions from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| tapflow AGENTS.mdjo-duchan/tapflow | Instructions file | 1.6k | yesterday | MIT | A | 5,925 | Claude Code, Codex, OpenCode |
| vscode buildNext.instructions.mdmicrosoft/vscode | Instructions file | 195k | yesterday | MIT | A | 9,719 | GitHub Copilot |
| next.js AGENTS.mdvercel/next.js | Instructions file | 143k | today | MIT | A | 7,461 | Codex, OpenCode |
| langchain AGENTS.mdlangchain-ai/langchain | Instructions file | 149k | yesterday | MIT | A | 4,680 | Codex, OpenCode |
| vscode oss-third-party-notices.instructions.mdmicrosoft/vscode | Instructions file | 195k | yesterday | MIT | A | 5,516 | GitHub Copilot |
| vscode copilot-instructions.mdmicrosoft/vscode | Instructions file | 195k | yesterday | MIT | A | 3,093 | GitHub Copilot |
| deepseek-harness AGENTS.mddeepseek-ai/deepseek-harness | Instructions file | 274k | 2d ago | MIT | A | 4,313 | Codex, OpenCode |