Skip to main content
Mirage turns your data sources into one unified virtual filesystem. Each source is a VFS mounted under its own folder, such as S3 under /s3, Slack under /slack and PostgreSQL under /pg, and an agent reads them all with ls, cat, grep and find. Each VFS turns its service into files and folders. An S3 object is a file, a Slack channel is a folder with one chat.jsonl per day, and a PostgreSQL table is a folder with its rows in rows.jsonl. RAM needs no credentials, so start there to try it.

Example: Slack

Mount Slack under /slack with a bot token, plus a user token for search:
Slack becomes:
Each channel and DM has one folder per day for the last 90 days, and a day’s chat.jsonl holds one message per line. A name ends with its Slack ID after __, so two channels with the same name stay apart.
The head prints:
The grep uses Slack’s own search: it asks Slack which days mention refund and reads only those, not every day of every channel. That takes the search_token (a user token with search:read) and -w, since Slack matches whole words. Without them, or when Slack’s search cannot answer, grep reads the files. Slack searches message text, file names and reactions, and finds a new message only once it has indexed it. Attachments under files/ are always read.

Supported VFS

A ✓ means the VFS runs there. In a browser, some need a proxy or CORS: Redis uses an HTTP endpoint, PostgreSQL uses Neon and MongoDB an HTTP bridge.

Local and infrastructure

Object storage

Cloud files and Google Workspace

Development, collaboration and messaging

Data and AI

Observability

Add your own VFS

To mount a service Mirage does not ship, write a custom VFS.