KineticaFS is a region-aware file lifecycle manager for S3-based storage. It tracks file usage across regions, migrates hot files closer to clients, and safely removes unused ones using reference-counting and GC.
- 📦 S3-compatible: Works with any S3-compatible storage backend (AWS, MinIO, Wasabi, etc.)
- 🌍 Region-aware: Detects file access patterns and migrates "hot" files closer to clients
- 🧠 Smart pointers: Tracks file references in your system to prevent premature deletion
- ♻️ Garbage collection: Removes unreferenced or expired files safely and automatically
- Go 1.22+
- Make
- Docker (optional, for containerized deployment)
-
Clone the repository:
git clone https://github.com/argon-chat/KineticaFS.git cd KineticaFS
-
Setup development environment:
make dev-setup
-
Build and run:
make build make run
The server will start on http://localhost:3000
with Swagger documentation available at /swagger/index.html
.
make help
- Show all available targetsmake all
- Run full build pipeline (format, lint, test, build, docs)make build
- Build the applicationmake test
- Run tests with coveragemake lint
- Run code lintersmake format
- Format codemake docs
- Generate API documentationmake run
- Run the server locallymake clean
- Clean build artifactsmake docker-build
- Build Docker image
make docker-build
make docker-run
Or use the provided Docker Compose:
docker compose up -d
- File reference tracking API (
CreateRef
,DeleteRef
,ListRefs
) 🔥 - File upload 🔥
- Scylla Cassandra Support 🔥
- Migration logic
- Per-region heatmap tracking
- GC for unreferenced files 🔥
- Basic observability (logs, metrics)
- Public and expiring file links
- Optional TTL per reference
- Support for batch import/export
- Multi-tenant support
- NATS hook for event-driven GC
- Custom metadata indexing
- Integration with Prometheus / Grafana
- WASM hooks for file filters / pre-upload logic
- Admin panel / metrics endpoint
- K8s Operator
- PgSql Support
- Dotnet Client Library 🔥
KineticaFS is licensed under the GNU Affero General Public License v3.0 or later (AGPL-3.0-or-later).
This ensures that all improvements and deployments based on this code must remain open source.
See LICENSE
for the full text.