| Feature |
Description |
| π Document Ingestion |
Drag-and-drop PDF, DOCX, TXT, CSV, and Markdown files. Automatic parsing, cleaning, and intelligent chunking with section-aware splitting. |
| π§ Dataset Generation |
Auto-generate instruction/output training pairs using Ollama LLMs or built-in rule-based NLP. Review, edit, approve, or reject each pair. |
| π¦ Model Catalog |
9 curated open-source models (Llama 3.2, Mistral 7B, Gemma 2, Phi-3, Qwen 2.5) with GGUF quantization variants and VRAM recommendations. |
| β‘ LoRA Training |
One-click fine-tuning via Unsloth with configurable hyperparameters. Real-time loss curves, step tracking, and ETA. Simulation mode for testing. |
| π¬ Chat Interface |
Streaming chat with any Ollama model. Temperature control, system prompts, and message history. Test your fine-tuned model instantly. |
| π₯οΈ Hardware Detection |
Auto-detects NVIDIA GPU, Apple Silicon, CPU, RAM, CUDA, and Ollama. Provides intelligent training mode recommendations. |
| π Dataset Export |
Export approved training pairs as JSONL, JSON, or CSV β ready for any training framework. |
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Tauri v2 Desktop Shell β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β React 18 + TypeScript Frontend β β
β β ββββββββββββ ββββββββββββ ββββββββββββ ββββββββββββ β β
β β β Ingest β β Dataset β β Models β β Chat β β β
β β ββββββ¬ββββββ ββββββ¬ββββββ ββββββ¬ββββββ ββββββ¬ββββββ β β
β βββββββββΌβββββββββββββΌβββββββββββββΌβββββββββββββΌββββββββββ β
β β HTTP / SSE (localhost:47899) β β
β βββββββββΌβββββββββββββΌβββββββββββββΌβββββββββββββΌββββββββββ β
β β βΌ βΌ βΌ βΌ β β
β β FastAPI Backend (Python 3.10+) β β
β β ββββββββββββ ββββββββββββ ββββββββββββ ββββββββββββ β β
β β β Parser β βGenerator β β Catalog β β Trainer β β β
β β β Chunker β β Reviewer β β Ollama β β Unsloth β β β
β β ββββββββββββ ββββββββββββ ββββββββββββ ββββββββββββ β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββΌβββββββββββ
β Ollama (11434) β
β Local LLM Runner β
ββββββββββββββββββββββ
| Layer |
Technology |
| Desktop Shell |
Tauri v2 (Rust) |
| Frontend |
React 18 Β· TypeScript 5 Β· Vite 5 |
| Styling |
TailwindCSS v3 Β· Framer Motion |
| State |
Zustand v5 Β· TanStack Query v5 |
| Backend |
Python 3.10+ Β· FastAPI Β· Uvicorn |
| ML Training |
Unsloth Β· LoRA Β· QLoRA |
| Inference |
Ollama |
| Monorepo |
Turborepo Β· pnpm |
| Tool |
Version |
Required |
| Node.js |
β₯ 18 |
β
|
| pnpm |
β₯ 9 |
β
|
| Python |
β₯ 3.10 |
β
|
| Rust |
β₯ 1.70 |
β
(for Tauri builds) |
| Ollama |
Latest |
Recommended |
| NVIDIA GPU + CUDA |
β |
For real training |
# 1. Clone the repository
git clone https://github.com/your-username/ForgeOS.git
cd ForgeOS
# 2. Install frontend dependencies
pnpm install
# 3. Set up Python backend
cd apps/backend
python -m venv .venv
# Windows
.venv\Scripts\activate
# macOS/Linux
source .venv/bin/activate
pip install -r requirements.txt
# 4. Return to project root
cd ../..
# Terminal 1 β Start the backend
cd apps/backend
.venv/Scripts/python -m uvicorn app.main:app --host 127.0.0.1 --port 47899 --reload
# Terminal 2 β Start the frontend (Vite dev server)
pnpm dev:desktop
# Terminal 3 (Optional) β Start Tauri desktop shell
pnpm --filter @forgeos/desktop tauri dev
# Health check
curl http://127.0.0.1:47899/api/v1/health
# β {"status":"ok","version":"1.0.0","uptime_seconds":5.2,"platform":"Windows"}
# Hardware detection
curl http://127.0.0.1:47899/api/v1/system/hardware
# β {"cpu_info":{"name":"...","cores":12},"ram":{"total_gb":15.7},...}
# Model catalog
curl http://127.0.0.1:47899/api/v1/models/catalog
# β {"models":[{"id":"llama3.2-1b","display_name":"Llama 3.2 1B",...},...]}
ForgeOS/
βββ apps/
β βββ backend/ # Python FastAPI backend
β β βββ app/
β β β βββ api/v1/ # REST endpoints
β β β β βββ system.py # Health + hardware
β β β β βββ ingestion.py # File upload + processing
β β β β βββ dataset.py # Dataset CRUD + export
β β β β βββ models.py # Model catalog + Ollama
β β β β βββ training.py # Training jobs
β β β β βββ inference.py # Chat / streaming
β β β βββ services/ # Business logic
β β β β βββ hardware.py # GPU/CPU/RAM detection
β β β β βββ file_parser.py # PDF/DOCX/TXT/CSV/MD
β β β β βββ chunker.py # Intelligent text splitting
β β β β βββ ingestion.py # Ingestion orchestration
β β β β βββ dataset_generator.py # Q&A pair generation
β β β β βββ dataset.py # Dataset management
β β β β βββ models.py # Model catalog (9 models)
β β β β βββ training.py # Unsloth LoRA training
β β β βββ schemas/ # Pydantic v2 models
β β β βββ core/ # Config, logging, lifecycle
β β β βββ main.py # FastAPI application
β β βββ requirements.txt
β β βββ pyproject.toml
β β
β βββ desktop/ # Tauri + React frontend
β βββ src/
β β βββ features/ # Feature pages
β β β βββ ingestion/ # Drag-and-drop file upload
β β β βββ dataset/ # Dataset review + approval
β β β βββ models/ # Model catalog browser
β β β βββ training/ # Training dashboard
β β β βββ chat/ # Streaming chat interface
β β β βββ settings/ # System info + config
β β βββ components/layout/ # AppShell, Sidebar, TopBar
β β βββ stores/ # Zustand state management
β β βββ hooks/ # Custom React hooks
β β βββ lib/ # API client, utilities
β β βββ router.tsx # View-based routing
β βββ src-tauri/ # Rust Tauri backend
β
βββ packages/
β βββ shared-types/ # Shared TypeScript definitions
β
βββ turbo.json # Turborepo configuration
βββ pnpm-workspace.yaml # pnpm workspace config
βββ LICENSE # Apache 2.0
βββ README.md # This file
All endpoints are prefixed with /api/v1.
| Method |
Endpoint |
Description |
GET |
/health |
Health check |
GET |
/system/hardware |
Detect GPU, CPU, RAM, CUDA |
| Method |
Endpoint |
Description |
POST |
/ingestion/sessions |
Upload files (multipart) |
POST |
/ingestion/sessions/:id/process |
Process files β SSE stream |
GET |
/ingestion/sessions/:id/chunks |
Get paginated chunks |
| Method |
Endpoint |
Description |
POST |
/dataset/generate |
Generate Q&A pairs β SSE stream |
GET |
/dataset/:id/pairs |
Get pairs (filterable by status) |
PUT |
/dataset/:id/pairs/:pid |
Edit a pair |
POST |
/dataset/:id/approve-all |
Bulk approve pending pairs |
GET |
/dataset/:id/export?format=jsonl |
Export approved pairs |
| Method |
Endpoint |
Description |
GET |
/models/catalog |
Browse curated models |
GET |
/models/ollama |
List installed Ollama models |
POST |
/models/pull/:name |
Pull model via Ollama β SSE |
| Method |
Endpoint |
Description |
POST |
/training/start |
Start LoRA training β SSE stream |
GET |
/training/active |
Get active training job |
POST |
/training/jobs/:id/cancel |
Cancel training |
| Method |
Endpoint |
Description |
POST |
/inference/chat |
Streaming chat with Ollama |
GET |
/inference/models |
List available chat models |
| Model |
Provider |
Parameters |
VRAM |
License |
| Llama 3.2 1B |
Meta |
1B |
2 GB |
Llama 3.2 Community |
| Llama 3.2 3B |
Meta |
3B |
4 GB |
Llama 3.2 Community |
| Llama 3.1 8B |
Meta |
8B |
8 GB |
Llama 3.1 Community |
| Mistral 7B v0.3 |
Mistral AI |
7B |
8 GB |
Apache 2.0 |
| Gemma 2 2B |
Google |
2B |
3 GB |
Gemma License |
| Gemma 2 9B |
Google |
9B |
10 GB |
Gemma License |
| Phi-3 Mini |
Microsoft |
3.8B |
4 GB |
MIT |
| Qwen 2.5 3B |
Alibaba |
3B |
4 GB |
Apache 2.0 |
| Qwen 2.5 7B |
Alibaba |
7B |
8 GB |
Apache 2.0 |
ForgeOS stores all data in your system's app data directory:
| Platform |
Path |
| Windows |
%APPDATA%\ForgeOS\ |
| macOS |
~/Library/Application Support/ForgeOS/ |
| Linux |
~/.local/share/ForgeOS/ |
ForgeOS/
βββ models/ # Downloaded model files
βββ datasets/ # Generated training datasets
βββ sessions/ # Ingestion session data
βββ logs/ # Application logs
βββ temp/ # Temporary upload files
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature)
- Commit your changes (
git commit -m 'Add amazing feature')
- Push to the branch (
git push origin feature/amazing-feature)
- Open a Pull Request
This project is licensed under the Apache License 2.0 β see the LICENSE file for details.
ForgeOS β Making LLM fine-tuning accessible to everyone.