jackailocal / README.md
jackboy70's picture
Update README.md
4e3efc6 verified
|
Raw
History Blame Contribute Delete
10.2 kB

A newer version of the Gradio SDK is available: 6.20.0

Upgrade
metadata
title: JackAILocal
emoji: πŸ”’
colorFrom: green
colorTo: gray
sdk: gradio
sdk_version: 6.18.0
python_version: '3.13'
app_file: app.py
pinned: true
license: other
short_description: Private AI that runs 100% offline β€” no cloud, ever.
hf_username: jackboy70
hf_oauth: true
hf_oauth_scopes:
  - inference-api
models:
  - Qwen/Qwen3.5-4B
  - Qwen/Qwen3.6-27B
  - google/gemma-4-12B-it
tags:
  - gradio
  - build-small-hackathon
  - track:backyard
  - sponsor:openai
  - sponsor:modal
  - achievement:offgrid
  - achievement:offbrand
  - achievement:llama
  - achievement:fieldnotes
  - backyard ai
  - backyard-ai
  - off the grid
  - off-the-grid
  - off brand
  - off-brand
  - llama champion
  - llama-champion
  - llama.cpp
  - tiny titan
  - tiny-titan
  - best agent
  - best-agent
  - best demo
  - best-demo
  - bonus quest champion
  - bonus-quest-champion
  - community choice
  - community-choice
  - modal
  - best use of modal
  - best-use-of-modal
  - field notes
  - field-notes
  - zerogpu
  - local
  - offline
  - privacy

πŸ”’ JackAILocal β€” your AI, sealed in a box

Private AI that runs 100% offline. No cloud. No account. No data leaving the machine β€” ever.

JackAILocal turns any laptop, USB stick, external SSD, or LAN box into a complete private AI workspace: chat, voice, vision, and documents β€” all running on small open models on the device itself. This Space is the one-click builder that configures and ships that offline workspace for you. The AI you build never phones home.

πŸ€— Hugging Face Build Small Hackathon Β· Track: Backyard AI Β· Every model is ≀32B and the default runtime ships on a 4B model.

βœ… Tested on Windows and the hosted Cloud Space only. The macOS, Linux, USB and SSD targets are implemented but not yet independently verified.


🎬 See it work

▢️ Demo video https://youtu.be/OON9hfPGqqk β€” real laptop, Wi-Fi physically off, answering questions, transcribing voice, and reading an image with zero network.
🐦 Social post https://x.com/JacquesGariepy/status/2066340944329224593?s=20
πŸ“ Build report (field notes) submission/FIELD_NOTES.md

⏱️ For judges: evaluate in 60 seconds

  1. Open the Builder tab above. Pick a use case (e.g. "Private document assistant") and a target (e.g. Windows ZIP).
  2. Click Sign in with Hugging Face β†’ Prepare / publish. The AI configuration agent (Gemma 4 12B, served on Modal) reviews your hardware, picks a compliant small model, and returns a validated build plan.
  3. Open the audit JSON β€” every decision shows the full agent trace: the exact prompt sent and the raw model output. Nothing is faked; when no model is configured the panel says so instead of inventing an answer. Watch the build logs. Once the build finishes, the download link for your custom ZIP package will appear at the very bottom of the page. Download it and unzip. it on your target machine.
  4. Watch the demo video to see the output of that build β€” a sealed AI running on a real machine with the network cut.

That is the whole pitch: this Space configures and ships the AI; the video proves it runs with no cloud.


🌳 The problem (Backyard AI)

Most "local AI" tools are a thin wrapper around an API key. The moment the Wi-Fi drops β€” or a clinic, law office, field site, or privacy-conscious household refuses to send data to someone else's server β€” they stop working.

People who actually need AI off the grid have no good option:

  • a nurse in a rural clinic who can't upload patient notes to a cloud,
  • a shop owner who wants a document assistant but not a subscription that reads their books,
  • a parent who wants a homework helper that works on the cabin trip with no signal,
  • a regulated SMB that legally cannot let data leave the building.

JackAILocal is built for them. You configure it here, ship it to a USB/SSD/installer/LAN box, and from that point on it is completely self-contained. The runtime path is simply:

WebUI β†’ jackailocald (Rust) β†’ local Ollama / llama.cpp model

There is no cloud inference fallback. A capability is shown as unavailable when its local binary or model is missing β€” it is never quietly replaced by a remote call.


πŸ† Why this wins (rubric alignment)

Badge / award How JackAILocal earns it
🌲 Track: Backyard AI A real, polished tool that solves a real daily problem: private AI for people and SMBs who can't or won't use the cloud.
πŸ”Œ Off the Grid The shipped runtime does 100% local inference. The demo video is recorded with the network physically disconnected.
🐀 Tiny Titan (≀4B) The default runtime chat model is Qwen3.5 4B β€” the everyday experience runs on a genuinely tiny model.
🎨 Off Brand A custom, themed builder console plus a fully hand-built offline WebUI (not default Gradio) shipped with the product.
πŸ€– Best Agent The configuration step is a real multi-step decision engine: it can ASK_USER, ASK_HUMAN_REVIEW, REJECT, or emit a build action β€” with a policy gate that has final authority β€” and every step exposes its agent trace.
πŸ¦™ llama.cpp Ships an optional llama.cpp OpenAI-compatible server path alongside Ollama for the runtime.
☁️ Best Use of Modal The hosted configuration agent (Gemma 4 12B IT) is served from a Modal vLLM endpoint.
πŸ““ Field Notes A full build report is included β€” see submission/FIELD_NOTES.md.
🌟 Bonus Quest Champion One submission, stacking the most bonus criteria at once.

πŸ€– The configuration agent (Best Agent)

The Builder does not treat the model as a chatbot. It treats it as an internal decision engine that must return schema-validated JSON. The UI sends the selected use case and target, the hardware profile, the available backend/model plan, client constraints, and any previous answers. The model must then return one of:

  • ASK_USER β€” with concrete questions when critical info is missing,
  • ASK_HUMAN_REVIEW β€” when a human operator should approve,
  • REJECT β€” when the request is unsafe or non-compliant,
  • a build action β€” the validated packaging plan.

A deterministic policy gate still has final authority: it blocks USB builds without a real target, backend mismatches, missing secrets, and unsafe manifest patches β€” even if the model says otherwise. The remote agent can only modify the packaging manifest; the shipped runtime stays local and offline once models are preloaded.

Crucially, no fake decision is ever generated. If no agent endpoint is configured, the panel reports the missing secrets explicitly rather than fabricating an "AI decision."


🧠 Small-model stack (everything ≀32B)

Role Model Size Where
Default runtime chat Qwen/Qwen3.5-4B 4B On device (Ollama)
Power profile (24GB VRAM) Qwen/Qwen3.6-27B 27B On device (Ollama)
Configuration agent google/gemma-4-12B-it 12B Modal vLLM (build-time only)
Speech-to-text whisper.cpp (ggml-base) β€” On device
Text-to-speech Piper (en_US-libritts_r-medium, CC BY 4.0) β€” On device
Vision / OCR (SCOUT) any installed vision Ollama model ≀32B On device

No model above the 32B cap is ever offered. The default demo deliberately runs on a 4B model so it works on an ordinary laptop without a 24GB GPU.


🧩 What the shipped product includes

  • Local chat through installed Ollama models, with an optional llama.cpp server path
  • Persistent conversation threads (filter, rename, delete)
  • SCOUT image analysis and text extraction via a local vision model
  • Offline speech-to-text (whisper.cpp) and text-to-speech (Piper)
  • Local documents and a bilingual Field Manual
  • AES-256-GCM encrypted import/export packs for threads, documents, and safe settings
  • Opt-in Phone Access on the local network with pairing token + QR code
  • Hardware status, model availability, benchmark, and a privacy-safe support ZIP
  • English and French WebUI
  • Ed25519 offline licensing and signed, rollback-capable offline updates

πŸš€ Run locally

pip install -r requirements.txt
python app.py
# open http://127.0.0.1:7860

The hosted Space only builds and publishes packages (Windows / macOS / Linux-Docker ZIPs + a standalone PC analyzer). It never pretends to run a client runtime for you β€” when you ship the package and launch it on a real machine, that is where the offline AI lives.

Build targets (run locally on Windows/macOS):

BUILD-LOCAL.cmd      BUILD-USB.cmd      BUILD-SSD.cmd

Each builder validates the payload, installs the selected Ollama model(s), installs Voice assets, writes a SHA-256 manifest, and refuses to report success if required runtime or legal assets are missing.


πŸ›‘οΈ Security boundaries

  • Loopback bind by default; pairing token required for any non-loopback access
  • No shell tools exposed to the model
  • No private update key in exported packages
  • AES transfer-pack passphrases are never stored
  • Support ZIP excludes conversations and documents
  • SHA-256 package manifest + signed-manifest hooks

JackAILocal does not claim protection from an already-compromised host OS.


βœ… Verification

cargo check
cargo test --no-run
python -m py_compile app.py saas/gradio/app.py
node --check webui/app-v15.js
python qa/static_audit.py

See submission/FIELD_NOTES.md for the build story. The full source, the Rust runtime, and the package builders live in the project's GitHub repository.


Built for the πŸ€— Build Small Hackathon. Small models. Big privacy. Off the grid.

Post it - Social-media post : https://x.com/JacquesGariepy/status/2066340944329224593?s=20

Video demo : https://youtu.be/OON9hfPGqqk

Gradio app : https://huggingface.co/spaces/build-small-hackathon/jackailocal