The Filesystem Is the API (with TigerFS) - by Alex Pliutau
SubscribeSign in
The Filesystem Is the API (with TigerFS)<br>What if the filesystem was backed by a real database?
Alex Pliutau<br>May 27, 2026
Share
Most databases persist data to disk, but the underlying files are usually opaque: binary blobs, internal formats, encrypted pages. You cannot just open a file, edit a few lines, and expect the database state to change.<br>But using the filesystem itself as the source of truth can be surprisingly powerful.<br>For my personal blog, I use Hugo. Articles are just Markdown files in a Git repository. In a way, that already behaves like a tiny database: posts have authors, tags, metadata, version history, collaboration via Git.<br>$ tree
├── about.md<br>├── an-ode-to-logging.md<br>├── benchmark-grpc-protobuf-vs-http-json.md<br>├── books-2025.md<br>├── building-slack-bot-with-go.md<br>├── centrally-collecting-events-in-go-microservices.md<br>├── concurrency-data-race.md
It is simple and ergonomic.<br>But once the number of files grows, searching, indexing, querying, and connecting data becomes painful. Filesystems are not databases.<br>So the obvious question is:<br>What if the filesystem was backed by a real database?
That is exactly what TigerFS does.<br>TigerFS is a filesystem backed by PostgreSQL — and also a filesystem interface to PostgreSQL.<br>Every file becomes a real PostgreSQL row.
Directories become tables.
File contents become columns.<br>Multiple users can concurrently read and write the same files with full ACID guarantees.<br>The filesystem becomes the API.
Sponsor
Agent loop is the most important piece of infrastructure in your workflow right now and for most developers, it’s the one piece they can’t open up. Agent builders have to jump through all the hoops themselves, crafting the infrastructure and tools, testing the harness, while fighting to maintain what they’ve built.<br>Meet Cline SDK : agent harness behind Cline 2.0, fully open-sourced. The same runtime that powers Cline across VS Code, JetBrains, and the CLI is now an npm install away: npm i @cline/sdk . Inspect it, fork it, extend it, ship on it.<br>Best-in-class harness: 74.2% on Terminal-Bench 2.0 with Claude Opus 4.7 ahead of Claude Code (69.4%) and strongest numbers published on open-weight models.
Open model & provider choice: Anthropic, OpenAI, Google, Bedrock, Mistral, or any OpenAI-compatible endpoint.
Real plugin system: Register tools, hooks, commands, providers, message builders. Prototype as a local file, harden into a package. Extend it freely for any of your agent use cases.
Scheduled + event-driven agents: Cron and event specs for PR reviews, dependency checks, coverage audits, changelogs no separate orchestration layer.
Stop building around your agent. Start building on it.<br># Install CLI:<br>npm i -g cline
# Install SDK<br>npm install @cline/sdk
Get Started Today<br>Why this is interesting
This model is especially compelling for AI agents.<br>Agents do not care much about SDKs or dashboards. They love filesystems:<br>ls
cat
find
grep
shell pipelines
TigerFS lets agents work with ordinary files while getting transactional guarantees from PostgreSQL underneath.<br>A workflow system can literally become:<br>todo/ -> doing/ -> done/
Moving files with mv becomes state management.<br>No extra orchestration layer required.
How TigerFS works
TigerFS mounts a PostgreSQL database as a filesystem.<br>On Linux it uses FUSE. On macOS it uses NFS.<br>┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐<br>│ Unix Tools │────▶│ Filesystem │────▶│ TigerFS │────▶│ PostgreSQL │<br>│ ls, cat, │ │ Backend │ │ Daemon │ │ Database │<br>│ echo, rm │◀────│ (FUSE/NFS) │◀────│ │◀────│ │<br>└──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘
TigerFS supports two modes:<br>File-first
You work with normal files:<br>Markdown
frontmatter
directories
standard UNIX tools
Everything is automatically transactional and versioned.<br>Editors like Vim, Cursor, Claude Code, or plain shell scripts work out of the box.<br>Data-first
You mount an existing PostgreSQL database and explore it like a filesystem:<br>ls<br>cat<br>grep<br>findTables become directories. Rows become files.
Building a blog with TigerFS
I think one demo is worth more than a thousand words.<br>Let us build a tiny blog system backed by PostgreSQL, but managed entirely through Markdown files.<br>Install
On macOS:<br>curl -fsSL https://install.tigerfs.io | sh
brew install postgresql@17<br>brew services start postgresql@17
Create a database and mount it:<br>createdb shinyblog
# long-running process<br>tigerfs mount postgres://localhost/shinyblog ~/tiger
tigerfs status
Initialize an app
TigerFS apps are configured via a tiny .build directory.<br>echo "markdown" > ~/tiger/.build/posts
# or enable version history<br>echo "markdown,history" > ~/tiger/.build/posts
Now create your first article:<br>vim posts/article-one.md
Example content:<br>title: Running MinIO locally with Docker Compose<br>author: pluto<br>tags:<br>- docker<br>- minio
When developing applications that interact...