Teach your AI agent bash, let it talk to Slack
Mirage mounts S3, Gmail, GitHub and a dozen other services into one virtual filesystem so LLMs can `grep` and `cp` across APIs they never learned.

What it does
Mirage is a virtual filesystem that mounts remote services—S3, Google Drive, Slack, Gmail, Redis, GitHub, MongoDB, and more—under a single directory tree. AI agents interact with everything through standard Unix-like commands (cat, cp, grep, find) instead of learning per-service SDKs or MCP protocols. It ships as Python and TypeScript libraries, a CLI, and adapters for OpenAI Agents SDK, Vercel AI SDK, LangChain, Pydantic AI, and others.
The interesting bit
The bet is on LLM training data: models already know bash far better than any proprietary API. Mirage leans on that fluency, and adds a two-layer cache (index + file) with pluggable RAM or Redis backends so repeated directory walks and reads don’t hammer remote APIs. You can also override commands per resource and filetype—cat on a Parquet file in S3 renders JSON rows instead of dumping raw bytes.
Key highlights
- Mount RAM, disk, Redis, S3/R2/GCS, GSuite, GitHub, Notion, Slack, Discord, Telegram, email, MongoDB, SSH side-by-side under one root
- Works with OpenAI Agents SDK, Vercel AI SDK, LangChain, Pydantic AI, CAMEL, OpenHands, Mastra
- Two-layer cache: index cache for listings/metadata, file cache for object bytes; RAM default (512 MB, 10 min TTL) or Redis for shared/multi-replica setups
- Portable workspaces: snapshot, clone, version, and move between machines
- CLI daemon plugs into Claude Code and Codex; browser/edge runtime package available
Caveats
- FUSE-based mounts require macOS or Linux; Windows support is unclear
- Python ≥ 3.12 and Node.js ≥ 20 required; the matrix of SDK/runtime packages (
mirage-node,mirage-browser,mirage-core) takes a moment to parse
Verdict Worth a look if you’re building agent pipelines that touch multiple cloud services and you’re tired of maintaining N API clients. Skip it if your agents stay inside one database or one API—you’re just adding a layer.