Zer0Fit v1.0.0 — Initial Release
Zer0Fit v1.0.0 — Zero-Shot Forecasting & Tabular MCP Server
Zer0Fit exposes Google's TimesFM 2.5 (time-series forecasting) and TabFM v1.0.0 (tabular classification/regression) foundation models to AI assistants via the Model Context Protocol (SSE/Streamable HTTP).
Zero-shot means no training required — just attach a CSV and describe what you want to predict.
Features
- 📈 Time-series forecasting via Google TimesFM 2.5 (200M params)
- 📊 Tabular classification & regression via Google TabFM v1.0.0
- 💬 Chat-attached file support — use Open WebUI file IDs directly
- 📤 File upload tool for files not attached in chat (CSV, XLSX, XLS, JSON, JSONL)
- 🔍 Automatic file inspection — column names, types, row counts
- 📋 Pre-computed metrics — accuracy, per-class F1, confusion matrix, R², MAE, RMSE, MAPE
- 🧹 Automatic file cleanup — uploads auto-delete after 6 hours (configurable)
- 🔒 Security — path traversal protection, UUID-based filenames, allowed-directory restriction
- 🖥️ VRAM management — TTL-based auto-unload, mutual exclusion, asyncio.to_thread offloading
- 🏗️ Multi-architecture — ARM64 (DGX Spark / Blackwell) and x86_64 (RTX 3090 / H100)
- 🚀 One-command install —
./install.shdetects architecture, builds, and launches
Clients Supported
- Open WebUI (primary) — SSE + Streamable HTTP
- Claude Code — SSE transport, includes auto-loaded
CLAUDE.md+ skill - Codex CLI — Streamable HTTP, includes auto-loaded
AGENTS.md
Quick Start
git clone https://github.com/porespellar/Zer0Fit.git
cd Zer0Fit
./install.shInference Limits
| Limit | Default | Configurable |
|---|---|---|
| Forecast horizon | 1–256 steps | Yes (model_manager.py) |
| Max tabular chunks | 10 (10K rows) | Yes (server.py) |
| Chunk size | 1,000 rows | Yes (pipelines.py) |
| In-context size | 512 rows | Yes (pipelines.py) |
| VRAM TTL | 300 seconds | Yes (env var) |
| Upload TTL | 6 hours | Yes (env var) |
See Limits & Configurability for tuning guide.
Security & Code Review
Two full code reviews were conducted using Google Antigravity (Gemini 3.1 Pro). All findings were addressed:
- ✅ Path traversal vulnerability (Critical) — fixed
- ✅ Event-loop blocking during model loads (High) — fixed via
asyncio.to_thread - ✅ Race condition in TabFM task-type state (High) — fixed,
task_typepassed as parameter - ✅ Thread-unsafe state access outside lock (High) — fixed, all checks inside
asyncio.Lock - ✅ Unbounded predictions OOM risk (High) — fixed,
max_chunkscapped at 10 - ✅ Empty basename file resolution (High) — fixed
- ✅ Unbounded forecast horizon (Medium) — fixed, validated 1–256
- ✅ Blocking I/O in upload cleanup (Medium) — fixed, offloaded to thread
- ✅ Unhandled NaNs in target column (Medium) — fixed,
dropnabefore chunking - ✅ Weak upload filename entropy (Low) — fixed, full UUID
Disclaimer
Zer0Fit is provided "AS IS" without warranties of any kind, and is intended for research and educational purposes only. The developer is not responsible for the accuracy of predictions, classifications, or forecasts produced by the underlying models or the LLM interpreting them. TabFM model weights are non-commercial — see the full Disclaimer (DISCLAIMER.md).
License
- Zer0Fit source code — Apache License 2.0
- TimesFM 2.5 model weights — Apache License 2.0
- TabFM v1.0.0 model weights — TabFM Non-Commercial License v1.0