| # JackAILocal System Behavior |
|
|
| ## Layers |
|
|
| 1. The Gradio Builder accepts a real hardware profile, recommends compatible models, and exports manifests or builder packages. |
| 2. Platform builders prepare a local folder, USB drive, or external SSD and validate the resulting payload. |
| 3. `jackailocald` serves the WebUI and routes requests only to reachable local AI engines. |
|
|
| ## Runtime |
|
|
| The Rust runtime serves static WebUI files and these primary APIs: |
|
|
| ```text |
| GET /api/status |
| GET /api/features |
| GET /api/models |
| POST /v1/chat/completions |
| GET /api/threads |
| POST /api/threads |
| POST /api/threads/:id/messages |
| POST /api/vision/analyze |
| GET /api/voice/status |
| POST /api/voice/transcribe |
| POST /api/voice/synthesize |
| POST /api/packs/export |
| POST /api/packs/import |
| POST /api/agent/recommend |
| GET /api/phone |
| POST /api/phone |
| POST /api/runtime/restart |
| ``` |
|
|
| Chat and SCOUT use installed Ollama models. An OpenAI-compatible `llama.cpp` server can be used as an explicit local chat fallback. Voice uses whisper.cpp and Piper binaries and models stored in the package. |
|
|
| `POST /api/agent/recommend` adds a local LLM-in-the-loop for client configuration and model selection review. It uses only installed local models, enforces the <=32B catalog policy, prefers Gemma 4 12B (`gemma4:12b`) when present, and returns an explicit error when a requested agent model is unavailable. |
|
|
| The runtime reports a feature as available only when the required local engine and model are available. |
|
|
| ## Storage |
|
|
| ```text |
| workspace/threads/ conversation JSON files |
| workspace/documents/ user notes |
| workspace/settings/ local settings and phone pairing token |
| workspace/exports/ encrypted packs and support ZIPs |
| workspace/voice/ temporary voice files |
| workspace/scout/ SCOUT workspace |
| models/ollama/ Ollama model store |
| models/whisper/ speech-to-text models |
| models/piper/ text-to-speech models |
| ``` |
|
|
| Threads are persistent and support filtering, rename, and individual deletion. |
|
|
| ## Phone Access |
|
|
| The default bind is `127.0.0.1:4891`. Phone Access must be enabled explicitly. After restart, the runtime binds to `0.0.0.0:4891`, generates a LAN URL and QR code, and requires `X-JackAILocal-Token` for non-loopback API requests. |
|
|
| ## Transfer Packs |
|
|
| Transfer packs use AES-256-GCM with PBKDF2-HMAC-SHA256. Passphrases are not stored. Imported settings are sanitized so a pack cannot silently enable Phone Access or transfer a pairing token. |
|
|
| ## Builders |
|
|
| Builders install selected Ollama models, install Voice assets, generate a SHA-256 manifest, and refuse success when required files are missing. The source package and target path must not overlap. |
|
|
| ## Offline Boundary |
|
|
| Normal use does not require internet after models and Voice assets are present. The runtime has no cloud inference fallback. A capability that cannot run locally returns an explicit unavailable or error response. |
|
|