v0.1 — Now with Google Workspace connector

Tap into enterprise APIs.
Your agent already knows how.

An open-source filesystem that mounts enterprise REST APIs as files. No SDKs, no new abstractions. Agents use ls, cat, grep, and diff — the tools they were trained on.

Get Started View on GitHub
tap — /mnt/tap
$ ls /mnt/tap/google/ drive/ gmail/ calendar/ agent.md $ ls /mnt/tap/google/drive/ Q3 Strategy.md Design Spec.md Budget.md agent.md $ cat "/mnt/tap/google/drive/Q3 Strategy.md" --- id: "1kUm7HSO..." name: "Q3 Strategy" mimeType: "application/vnd.google-apps.document" operations: [read, write, draft, lock] --- Our Q3 priorities focus on three areas... $ echo "Updated revenue target: $52M" >> "/mnt/tap/google/drive/Q3 Strategy.md" # auto-promoted to Google Drive API on close $ cat "/mnt/tap/google/drive/Q3 [email protected]" # read the previous version (auto-snapshot) $ tap log 2026-03-26 08:02:34 [success] google drive/Q3 Strategy auto-promote 847 bytes 2026-03-26 08:02:29 [success] google drive/Q3 Strategy write 42 bytes 2026-03-26 08:02:24 [success] google drive/- list 154 resources
Why tapfs
The filesystem is the universal agent protocol
If Finder can see it, every application can. If every application can, every agent can. Deepest OS integration means widest tool compatibility.
$_

POSIX is the API

No SDKs. No new abstractions. Every LLM was trained on Unix. ls, cat, grep, diff work out of the box.

Sparse hydration

The entire enterprise is mounted. ls returns instantly from cached metadata. Bytes only move on cat — pay-per-access.

Transactional by default

Drafts, locks, versions via path conventions. .draft.md for isolation. @v3.md for snapshots. .lock for concurrency.

Governance is structural

Every operation is audit-logged. Versions auto-snapshot. Rollback with tap rollback [email protected]. Compliance is built in, not bolted on.

Connector ecosystem

Google Workspace ships built-in. Install more from GitHub: tap install tapfs/jira. Or build your own with a YAML spec.

Multi-platform

FUSE on Linux/Docker. File Provider Extension on macOS (Finder integration). Works in E2B sandboxes, Cloudflare Workers, anywhere.

Enterprise APIs become a filesystem

Point tapfs at a backend and it appears as files. Agents explore with ls. Every directory has an agent.md that teaches the agent what's available. Resources render as Markdown with YAML frontmatter.

Writes are safe by default. Direct writes auto-promote on close. Or use the explicit draft workflow for staged changes. Every write is versioned and reversible.

/mnt/tap/ agent.md ← how to use tapfs google/ agent.md ← Google Workspace guide drive/ agent.md ← collection overview Q3 Strategy.md ← live (GET on read) Q3 Strategy.draft.md ← sandboxed edits Q3 [email protected] ← immutable snapshot Q3 Strategy.lock ← concurrency lock gmail/ re-deployment-plan.md calendar/ standup-10am.md
Connectors
Any API becomes a filesystem in YAML
A connector is a YAML file that maps a REST API to filesystem paths. No code required for most APIs — describe your endpoints and tapfs handles auth, caching, rate limiting, and rendering JSON as agent-readable Markdown.

Write YAML, get a filesystem

Define list_endpoint and get_endpoint per collection. tapfs resolves slugs, paginates, caches, and translates every record to a .md file with YAML frontmatter.

14 connectors ship today — GitHub, Jira, Slack, Salesforce, Linear, Notion, Stripe, and more. Install from the registry or drop a YAML file in your connectors directory.

github jira slack salesforce linear notion stripe + 7 more
# connectors/github.yaml name: github base_url: "https://api.github.com" auth: type: bearer token_env: GITHUB_TOKEN collections: - name: repos list_endpoint: "/user/repos?sort=updated" get_endpoint: "/repos/{id}" id_field: full_name slug_field: name title_field: full_name - name: issues list_endpoint: "/issues?state=open" get_endpoint: "/repos/{id}" slug_field: number title_field: title
agent.md
The filesystem teaches itself
Every directory contains an agent.md — a Markdown file that tells the agent what's here, how to navigate it, and what operations are safe. No system prompt engineering. No pre-configuration. The agent learns by reading, the way it reads any file.
# /mnt/tap/github/agent.md ## GitHub Authenticated as your-username (bearer token) ## Collections - repos/ — your repositories (read, write) - issues/ — open issues assigned to you - notifs/ — unread notifications ## Navigation Repo filenames use slugified names. ls repos/ | grep my-project cat issues/123.md ## Writing safely Use draft workflow for edits: cp repos/my-repo.md repos/my-repo.draft.md Edit the draft, then promote with mv.

Discovery by reading, not configuration

cat /mnt/tap/agent.md is the onboarding. The root file explains tapfs conventions — drafts, locks, versions. Each connector's agent.md explains that backend's resources, auth context, and safe operations.

Because it's Markdown in a file, it's versionable, diffable, and human-reviewable. Connector authors embed domain-specific guidance without any framework integration — and agents discover it the same way they discover everything else.

Architecture
Transport-agnostic core
The filesystem logic is platform-agnostic. Each OS gets its deepest native integration. The connector layer is pluggable.
Agent / Application (ls, cat, cp, mv, Finder, any app) FUSE File Provider CLI / API (Linux/Docker) (macOS Finder) (Workers/WASM) ↓ ↓ ↓ ┌──────────────────────────────────────────────┐ │ VirtualFs Core │ │ path parser · cache · drafts · audit │ ├──────────────────────────────────────────────┤ │ Connector Layer │ │ Google REST Jira Salesforce ... │ └──────────────────────────────────────────────┘ ↓ Enterprise APIs REST / GraphQL / gRPC
Positioning
Where tapfs fits
tapfs doesn't compete with MCP or orchestrators. It sits below them — at the OS layer.
tapfs MCP API Gateways LangChain Tools
Abstraction level OS (filesystem) Protocol Network Application
Agent integration Zero (POSIX) SDK required SDK required Framework-locked
Transactional Built-in No No No
Governance Structural Bolt-on Partial None
Discovery ls Tool listing API catalog Code
Offline capable Yes No No No
Get started
Up and running in 60 seconds
docker run --rm -it \
  --device /dev/fuse --cap-add SYS_ADMIN \
  -e GOOGLE_ACCESS_TOKEN="ya29...." \
  tapfs:latest shell
Then inside: tap mount google --mount-point /mnt/tap --data-dir /var/lib/tapfs &
cargo install tapfs
tap mount google --mount-point /mnt/tap
Requires FUSE: apt install libfuse-dev (Linux) or macFUSE/FUSE-T (macOS)
git clone https://github.com/tapfs/tap.git
cd tap
cargo build --release
./target/release/tap mount google --mount-point /mnt/tap
Build from source for development or to customize connectors.
CLI
Everything from the terminal
tap CLI
$ tap mount google # mount Google Workspace $ tap status # connection health $ tap log # audit trail $ tap versions /mnt/tap/g/drive/file.md # version history $ tap rollback /mnt/tap/g/drive/[email protected] # restore version $ tap install tapfs/jira # install connector from GitHub $ tap connectors # list installed $ tap unmount google # clean unmount