Skip to content

Repository files navigation

Floor Studio

A focused local LLM studio with a social-skills practice layer.

Download and run text models, chat with profiles, memory, and skills, call tools, and log real-world reps on The Floor — streak, radar, comfort gap, heatmap.

Not a training framework. Not a diffusion suite.

What you can do

  • Browse / catalog GGUF text models from Hugging Face (progress, size, status)
  • Load a local llama.cpp engine and stream chat with live tokens/sec
  • Switch Coach / Spark / General profiles (or write your own)
  • Toggle memory and skills (Debrief, Thread revival ship as examples)
  • Tool calling: web search, Python, datetime, calculator
  • Parse practice <task> blocks into a pending tray; log predicted vs actual anxiety
  • Dashboard KPIs, skill radar, comfort-gap chart, 16-week heatmap, reflection log
  • OpenAI-compatible POST /v1/chat/completions and GET /v1/models with a local API key

Run the studio (web)

npm install
npm run dev

The app stores chats, profiles, memory, skills, tasks, and settings in the browser. Generation defaults and the local API key live under Settings.

First run

  1. npm run runtime:setup — installs llama-server for this OS.
  2. Open ModelsSmolLM2 135M is the recommended local engine. Load it (weights download on first use).
  3. Chat. The sidebar shows live tok/s. Coach may assign practice tasks onto The Floor.
  4. Grok cloud engines remain available as a fallback.

Desktop window

The studio is the same app Unsloth-style: llama.cpp in the back, a window in front.

npm i -D electron
npm run dev          # in one terminal
npm run desktop      # native window on the studio

Demo data on The Floor is synthetic and never mixed with real events.

Kaggle notebook (GPU)

Floor Studio runs on a Kaggle GPU the same way Unsloth notebooks do: enable GPU + Internet, Run All, open the public link.

Notebook in this repo: notebooks/Floor_Studio_Kaggle.ipynb

  1. Import the notebook from GitHub (or File → Import Notebook and paste the GitHub URL).
  2. Session options → Accelerator = GPU T4, Internet on.
  3. Run All. The last cell prints a public Gradio URL and embeds the studio.
  4. Pick SIZE = "balanced" (Llama 3.2 1B) or "quality" (3B) in that cell.

Weights cache under /kaggle/working/floor-data for the session. CUDA llama-cpp wheels are installed automatically; CPU is the fallback if no GPU is attached.

# same launcher locally
pip install -e ".[kaggle]"
python -m studio.kaggle --bootstrap --size balanced

Local llama.cpp runtime

Floor Studio shells llama-server (CPU by default) and streams OpenAI-compatible chat from it.

npm run runtime:setup
npm run dev

Weights live in ./data/models (or FLOOR_MODELS). Binary in ./bin.

Default local model: unsloth/SmolLM2-135M-Instruct-GGUF Q4_K_M (~105 MB). Larger GGUFs from Hugging Face download onto disk and load the same way.

The Python companion (python -m studio.backend.main) is still available if you prefer FastAPI.

OpenAI-compatible API

Local key is generated in Settings.

curl http://127.0.0.1:8080/v1/models \
  -H "Authorization: Bearer floor_sk_…"

curl http://127.0.0.1:8080/v1/chat/completions \
  -H "Authorization: Bearer floor_sk_…" \
  -H "Content-Type: application/json" \
  -d '{"model":"grok-4.5","messages":[{"role":"user","content":"Hello"}]}'

Prompt stack

When a chat is built, context is assembled in this order:

  1. Active profile system prompt
  2. Global memory (if enabled)
  3. Profile memory notes
  4. Project instructions
  5. Matching / enabled skills
  6. Task-format instructions

Layout

floor/                 domain (prompt, tasks, storage)
studio/backend/        FastAPI local runtime
src/                   web studio (TanStack Start)
data/                  gitignored runtime data

License

MIT

About

Local LLM studio with social-skills practice on The Floor

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages