Author's bio: ๐๐ Hi, I'm CryptoPatrick! I'm currently enrolled as an Undergraduate student in Mathematics, at Chalmers & the University of Gothenburg, Sweden. If you have any questions or need more info, then please join my Discord Channel: AiMath
๐ Important Notices
- POSIX-like filesystem operations for AI agents
- Multi-backend support: SQLite, PostgreSQL, MySQL
- Tool call auditing built-in
- Zero vendor lock-in - fully open source
๐ค What is AgentFS
agentfs provides a high-level filesystem abstraction for AI agents, offering POSIX-like file operations, key-value storage, and tool call auditing. It enables agents to persist state, store generated files, and maintain audit trails across sessions.
Built on top of the agentdb abstraction layer and agentsql SQL backends, AgentFS provides a complete storage solution for AI agents with zero vendor lock-in.
Use Cases
- Agent Workspaces: Provide agents with isolated filesystem workspaces for storing outputs
- Multi-Agent Systems: Share data between agents through a common filesystem
- Tool Call Auditing: Track all agent actions with built-in audit logging
- State Management: Store agent configuration and session state in KV store
- Output Storage: Persist agent-generated documents, reports, and artifacts
- Cloud Deployment: Deploy on managed databases (AWS RDS, Google Cloud SQL, Azure)
๐ท Features
agentfs provides three high-level APIs for AI agent storage with production-grade features:
๐ Filesystem Operations
POSIX-like Interface:
- write_file(path, data): Create or overwrite files with automatic parent directory creation
- read_file(path): Read complete file contents into memory
- mkdir(path): Create directories recursively
- readdir(path): List directory contents with metadata
- remove(path): Delete files and directories recursively
- exists(path): Check if path exists
- stat(path): Get file metadata (size, timestamps, permissions, type)
Advanced Features:
- Symbolic Links: Create and follow symlinks transparently
- Path Normalization: Automatic path cleaning and validation
- Inode/Dentry Design: Unix-like filesystem structure for reliability
- Concurrent Access: Safe multi-agent filesystem sharing with locking
- Mount Point Isolation: Sandboxed /agent root for security
๐๏ธ Key-Value Store
Simple API:
- set(key, value): Store arbitrary key-value pairs
- get(key): Retrieve values by key
- delete(key): Remove keys permanently
- scan(prefix): Find all keys matching a prefix
- exists(key): Check key existence
Use Cases:
- Session state management for agent conversations
- Agent configuration and settings storage
- Caching computed results for performance
- Metadata storage for files and operations
๐ Tool Call Auditing
Workflow-Based API:
- start(name, params): Begin tracking a tool call with parameters
- success(id, result): Mark tool call as successful with optional result
- error(id, error): Mark tool call as failed with error message
Single-Shot API:
- record(name, start, end, params, result, error): Record completed tool call in one operation
Analytics:
- Get per-tool statistics (total calls, success rate, average duration)
- List recent tool calls with filtering by name, status, time range
- Track tool execution timelines and patterns
- Debug agent behavior with complete audit trail
๐ Architecture
- ๐ Overall Architecture
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Application Layer โ
โ โข Agent frameworks (Rig, LangChain, custom) โ
โ โข Multi-agent systems โ
โ โข CLI tools and services โ
โโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ AgentFS APIs โ
โ โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโ โ
โ โ FileSystem โ KvStore โ ToolRecorder โ โ
โ โ โ โ โ โ
โ โ โข mkdir โ โข set โ โข start โ โ
โ โ โข write_file โ โข get โ โข success โ โ
โ โ โข read_file โ โข delete โ โข error โ โ
โ โ โข readdir โ โข scan โ โข record โ โ
โ โ โข remove โ โข exists โ โข statistics โ โ
โ โ โข stat โ โ โข recent โ โ
โ โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ AgentDB Trait Interface โ
โ โข Database-agnostic operations โ
โ โข put, get, delete, scan, query โ
โ โข Transaction support โ
โโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ AgentSQL (SQLx) โ
โ โข Connection pooling โ
โ โข Migration system โ
โ โข Type-safe SQL โ
โ โข Multi-backend support โ
โโโโโฌโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโ
โ โ โ
โโโโโผโโโโโโโ โโโโโโโโผโโโโโโโ โโโโโโโผโโโโโโโ
โ SQLite โ โ PostgreSQL โ โ MySQL โ
โ Local โ โ Production โ โ Cloud โ
โโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโ
- ๐๏ธ Filesystem Layer Architecture
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ FileSystem API Calls โ
โ mkdir("/docs") write_file("/docs/a.txt") โ
โโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Path Resolution โ
โ โข Normalize paths (remove .., .) โ
โ โข Validate against mount point (/agent) โ
โ โข Split into parent + name components โ
โโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Inode Operations โ
โ โข Lookup parent directory inode โ
โ โข Create new inode for file/dir โ
โ โข Update metadata (size, mtime, permissions) โ
โโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Dentry Operations โ
โ โข Insert (parent_ino, name, ino) entry โ
โ โข UNIQUE constraint ensures no duplicates โ
โ โข Enables path-to-inode lookup โ
โโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Data Storage (for files) โ
โ โข Store file content in fs_data table โ
โ โข Chunk large files by offset โ
โ โข Link to inode via foreign key โ
โโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ SQLite / PostgreSQL / MySQL โ
โ โข fs_inode: metadata (size, times, mode) โ
โ โข fs_dentry: name resolution โ
โ โข fs_data: file contents โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
- ๐ Tool Call Workflow
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Agent Calls Tool (e.g., web_search) โ
โโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ tools.start("web_search", params) โ
โ โข Generate UUID for tool call โ
โ โข Store: name, params, started_at โ
โ โข Status: "pending" โ
โ โข Returns: call_id โ
โโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโดโโโโโโโโโโโโโโ
โ โ
โโโโโโโโผโโโโโโโโโโโ โโโโโโโโโโโผโโโโโโโโโโโ
โ Tool Succeeds โ โ Tool Fails โ
โโโโโโโโฌโโโโโโโโโโโ โโโโโโโโโโโฌโโโโโโโโโโโ
โ โ
โโโโโโโโผโโโโโโโโโโโโโโโโโโโ โโโโโโโผโโโโโโโโโโโโโโโโโโโโโ
โ tools.success(id, res) โ โ tools.error(id, err) โ
โ โข Update completed_at โ โ โข Update completed_at โ
โ โข Store result JSON โ โ โข Store error message โ
โ โข Status: "success" โ โ โข Status: "error" โ
โ โข Calculate duration_ms โ โ โข Calculate duration_ms โ
โโโโโโโโโโโฌโโโโโโโโโโโโโโโโ โโโโโโโโโโโฌโโโโโโโโโโโโโโโโโ
โ โ
โโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Persisted in tool_calls table โ
โ โข Query by name, status, time range โ
โ โข Generate statistics (success rate, avg duration) โ
โ โข Audit trail for debugging and compliance โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
- ๐พ Storage Implementation
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ AgentFS Instance โ
โ โข agent_name: "my-agent" โ
โ โข mount_point: "/agent" โ
โ โข db: Box<dyn AgentDB> โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ FileSystem Component โ โ
โ โ Uses: fs_inode, fs_dentry, fs_data tables โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ KvStore Component โ โ
โ โ Uses: kv_store table โ โ
โ โ Prefix: "kv:{agent_name}:" โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ ToolRecorder Component โ โ
โ โ Uses: tool_calls table โ โ
โ โ All calls tagged with agent_name โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Database Backend โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ fs_inode: ino, mode, size, times โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ
โ โ fs_dentry: parent_ino, name, ino โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ
โ โ fs_data: ino, offset, size, data (BLOB) โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ
โ โ kv_store: key, value, timestamps โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ
โ โ tool_calls: id, name, params, result, ... โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ How to Use
Requirements
- Rust 1.70 or higher
- Database backend (SQLite, PostgreSQL, or MySQL)
Installation
Add to your Cargo.toml:
[]
= "0.1"
= { = "0.1", = ["sqlite"] }
# For PostgreSQL:
# agentsql = { version = "0.1", features = ["postgres"] }
# For MySQL:
# agentsql = { version = "0.1", features = ["mysql"] }
Or install with cargo:
Example: SQLite (Local Development)
use ;
use SqlBackend;
async
Example: PostgreSQL (Production)
use AgentFS;
use SqlBackend;
use env;
async
Example: MySQL (Cloud Deployment)
use AgentFS;
use SqlBackend;
async
๐งช Examples
The repository includes three comprehensive examples demonstrating different backends and use cases:
Example 1: Basic Operations (SQLite)
See examples/basic.rs for a complete example demonstrating:
- File write/read operations
- Directory management
- KV store usage
- Tool call recording with start/success/error workflow
- Statistics gathering
Run with:
Example 2: PostgreSQL Multi-Agent System
See examples/postgres.rs for:
- Concurrent file operations from multiple agents
- Shared state across agents using KV store
- PostgreSQL-specific features and configuration
- Production deployment patterns
Run with:
Example 3: MySQL Cloud Deployment
See examples/mysql.rs for:
- Cloud deployment patterns (AWS Aurora, Google Cloud SQL)
- Production workflow with tool auditing
- Multi-agent coordination example
- MySQL-specific optimizations
Run with:
๐งช Testing
Run the comprehensive test suite:
# Run all tests (SQLite)
# Run tests with output
# Run with all backends
# Test specific backend
The test suite includes:
- Filesystem operations (mkdir, write, read, remove, readdir)
- Path normalization and validation
- KV store operations (set, get, delete, scan)
- Tool call workflow (start, success, error, record)
- Statistics and analytics
- Concurrent access patterns
- Error handling
๐ Documentation
Comprehensive documentation is available at docs.rs/agentfs, including:
- Complete API reference for FileSystem, KvStore, and ToolRecorder
- Architecture overview and design decisions
- Migration guide from other agent filesystems
- Performance optimization tips
- Multi-agent coordination patterns
- Backend selection guide (SQLite vs PostgreSQL vs MySQL)
๐ฏ Comparison
| Feature | AgentFS | Other Solutions |
|---|---|---|
| Backend Choice | SQLite, PostgreSQL, MySQL | Vendor-specific |
| Open Source | โ MIT Licensed | โ ๏ธ Varies |
| Self-Hosted | โ Yes | โ Cloud-only |
| Tool Auditing | โ Built-in | โ Not included |
| Zero Cost | โ Yes | โ Usage-based pricing |
| Local Development | โ SQLite | โ ๏ธ Requires cloud account |
| POSIX-like API | โ Yes | โ ๏ธ Limited |
| Multi-Agent | โ Native support | โ ๏ธ Requires workarounds |
๐ Author
CryptoPatrick
Keybase Verification: https://keybase.io/cryptopatrick/sigs/8epNh5h2FtIX1UNNmf8YQ-k33M8J-Md4LnAN
๐ฃ Support
Leave a โญ if you think this project is cool.
๐ License
This project is licensed under MIT. See LICENSE for details.