Local AI harness/workstation: local AI image editor, Ollama image generation routing, SDXL inpainting UI, CivitAI model imports, 8GB VRAM Stable Diffusion.
20
stars
350
commits
Python
primary language
Sep 4, 2026
updated
JoyBoy is a local-first AI workstation for chat, coding, image generation, image editing, video experiments, model management, MCP tools, and optional extensions.
It is built to feel like a product, not a folder of scripts: launch it, let onboarding check your machine, pick a model, and start creating. JoyBoy can stay fully local by default with Ollama and local media models, while still letting you connect API providers, MCP servers, Browser Use, and private local packs when you want more power.
JoyBoy brings the main local AI workflows into one interface:
The goal is simple: make a private AI workstation that is powerful, understandable, and easy to operate on a real machine.
| Local Chat And Runtime | Image Edit Result |
|---|---|
![]() | ![]() |
| Edit Mode | Before/After Viewer |
|---|---|
![]() | ![]() |
Clone the repository, then run the launcher for your platform.
Double-click start_windows.bat, or run:
start_windows.bat
To force a full setup or repair after updating an older clone, double-click
setup_windows.bat or run:
setup_windows.bat
chmod +x start_mac.command setup_mac.command
./start_mac.command
To force a full setup or repair after updating an older clone:
./setup_mac.command
./start_linux.sh
To force a full setup or repair:
./setup_linux.sh
Then open:
http://127.0.0.1:7860
On first launch, JoyBoy guides you through setup and onboarding. It detects your GPU/RAM profile, checks required dependencies, explains what the app can do, and helps you fix missing pieces without making you dig through random terminal logs.
If you already completed setup, the launcher uses the fast path and starts the server directly. If the local setup marker is missing or stale after updating an older clone, the launcher refreshes setup automatically before starting.
For a remote GPU machine, keep JoyBoy private with an SSH tunnel.
Windows PowerShell:
ssh -L 7860:127.0.0.1:7860 ubuntu@<PUBLIC_IP>
macOS / Linux:
ssh -L 7860:127.0.0.1:7860 ubuntu@<PUBLIC_IP>
Then clone and start JoyBoy on the remote machine:
git clone https://github.com/Senzo13/JoyBoy.git
cd JoyBoy
chmod +x start_linux.sh
./start_linux.sh
Open http://127.0.0.1:7860 on your local computer while the SSH session stays open.
If JoyBoy is already running in one SSH terminal, open a second local terminal for the tunnel only:
ssh -N -L 7860:127.0.0.1:7860 ubuntu@<PUBLIC_IP>
If your local 7860 port is busy:
ssh -N -L 7861:127.0.0.1:7860 ubuntu@<PUBLIC_IP>
Then open http://127.0.0.1:7861.
See Cloud / Remote GPU Setup for the full Lambda-style setup notes.
JoyBoy is designed around everyday use:
The advanced pieces are still there, but the default path is meant to be obvious.
JoyBoy can run local chat through Ollama and can switch between installed models from the picker. It also tracks runtime state so models can be unloaded when memory gets tight.
Useful for:
Project mode gives JoyBoy a workspace-aware coding surface. It can inspect files, plan work, use tools, keep task state, and help with repository changes.
Useful for:
JoyBoy includes image generation, model catalogues, provider imports, SDXL/Flux-style workflows, inpainting, masks, quick prompts, expand/outpaint, upscale, and before/after comparison.
Useful for:
JoyBoy exposes video models through the same local model mindset: catalogue, install/equip flows, GPU-aware profiles, progress reporting, and gallery output.
Useful for:
Video generation is still hardware-sensitive. JoyBoy tries to keep the controls friendly while making VRAM/RAM/offload behavior visible.
JoyBoy has an Extensions hub because not every workflow belongs hardcoded inside the public core.
There are three extension families:
MCP lets JoyBoy connect tools without stuffing every integration directly into the app. MCP config stays local in:
~/.joyboy/config.json
JoyBoy can show configured MCP servers, enabled tools, missing environment variables, OAuth/token requirements, and runtime health from the UI.
Examples of MCP-style workflows:
Browser Use is an optional local browser automation surface. It opens a resizable right-side panel, can navigate local or public pages, take screenshots, click, scroll, type, and show a live cursor/action log while it works.
You can call it from chat with:
@browser-use open localhost:3000 and check the main button
It is especially useful for:
Browser Use is optional. If the runtime is missing, JoyBoy can install Playwright/Chromium locally from the UI.
Computer Use is the planned desktop-control surface for controlling the actual computer, not just a browser tab. Because real OS mouse/keyboard control is sensitive and platform-specific, JoyBoy exposes it as a local-pack extension surface instead of baking it directly into the public core.
The intended design is:
Until a trusted local pack is installed, Computer Use stays visible-but-locked in the Extensions hub.
JoyBoy is designed for privacy and control:
.env, or local UI config.The public repository is the neutral core. Private workflows should be added through local packs.
JoyBoy can work fully locally, or with optional providers.
Local model paths include:
Optional provider/API variables include:
HF_TOKENCIVITAI_API_KEYOLLAMA_BASE_URLOPENAI_API_KEYOPENROUTER_API_KEYANTHROPIC_API_KEYGEMINI_API_KEYDEEPSEEK_API_KEYMOONSHOT_API_KEYNOVITA_API_KEYMINIMAX_API_KEYVOLCENGINE_API_KEYZHIPU_API_KEYVLLM_API_KEYVLLM_BASE_URLGLM_BASE_URLUI-managed secrets are stored outside git in:
~/.joyboy/config.json
You only need provider keys for gated downloads or cloud models. Local-only usage can start without keys.
JoyBoy tries to adapt to the machine it is running on:
The app uses GPU profiles, VRAM/RAM displays, unload controls, and model compatibility hints to make local AI less mysterious.
If CUDA is expected but JoyBoy reports CPU-only PyTorch, rerun the launcher and choose the full setup/repair path.
Local packs live in:
~/.joyboy/packs/<pack_id>/
Packs can extend JoyBoy without polluting the public repository:
Third-party packs are external addons distributed separately from JoyBoy. They are not part of the official public core and may have their own safety, licensing, and maintenance rules.
See:
JoyBoy is being prepared as a clean public local AI core. Good contributions keep the app easy to understand and avoid committing secrets, generated files, model weights, caches, or local packs.
Good first areas:
Start with CONTRIBUTING.md, ROADMAP.md, and docs/GOOD_FIRST_ISSUES.md.
Apache License 2.0. See LICENSE.
Python
53.6%
JavaScript
37.3%
CSS
6.1%
HTML
2.4%
Local AI harness/workstation: local AI image editor, Ollama image generation routing, SDXL inpainting UI, CivitAI model imports, 8GB VRAM Stable Diffusion.
20
stars
350
commits
Python
primary language
Sep 4, 2026
updated
JoyBoy is a local-first AI workstation for chat, coding, image generation, image editing, video experiments, model management, MCP tools, and optional extensions.
It is built to feel like a product, not a folder of scripts: launch it, let onboarding check your machine, pick a model, and start creating. JoyBoy can stay fully local by default with Ollama and local media models, while still letting you connect API providers, MCP servers, Browser Use, and private local packs when you want more power.
JoyBoy brings the main local AI workflows into one interface:
The goal is simple: make a private AI workstation that is powerful, understandable, and easy to operate on a real machine.
| Local Chat And Runtime | Image Edit Result |
|---|---|
![]() | ![]() |
| Edit Mode | Before/After Viewer |
|---|---|
![]() | ![]() |
Clone the repository, then run the launcher for your platform.
Double-click start_windows.bat, or run:
start_windows.bat
To force a full setup or repair after updating an older clone, double-click
setup_windows.bat or run:
setup_windows.bat
chmod +x start_mac.command setup_mac.command
./start_mac.command
To force a full setup or repair after updating an older clone:
./setup_mac.command
./start_linux.sh
To force a full setup or repair:
./setup_linux.sh
Then open:
http://127.0.0.1:7860
On first launch, JoyBoy guides you through setup and onboarding. It detects your GPU/RAM profile, checks required dependencies, explains what the app can do, and helps you fix missing pieces without making you dig through random terminal logs.
If you already completed setup, the launcher uses the fast path and starts the server directly. If the local setup marker is missing or stale after updating an older clone, the launcher refreshes setup automatically before starting.
For a remote GPU machine, keep JoyBoy private with an SSH tunnel.
Windows PowerShell:
ssh -L 7860:127.0.0.1:7860 ubuntu@<PUBLIC_IP>
macOS / Linux:
ssh -L 7860:127.0.0.1:7860 ubuntu@<PUBLIC_IP>
Then clone and start JoyBoy on the remote machine:
git clone https://github.com/Senzo13/JoyBoy.git
cd JoyBoy
chmod +x start_linux.sh
./start_linux.sh
Open http://127.0.0.1:7860 on your local computer while the SSH session stays open.
If JoyBoy is already running in one SSH terminal, open a second local terminal for the tunnel only:
ssh -N -L 7860:127.0.0.1:7860 ubuntu@<PUBLIC_IP>
If your local 7860 port is busy:
ssh -N -L 7861:127.0.0.1:7860 ubuntu@<PUBLIC_IP>
Then open http://127.0.0.1:7861.
See Cloud / Remote GPU Setup for the full Lambda-style setup notes.
JoyBoy is designed around everyday use:
The advanced pieces are still there, but the default path is meant to be obvious.
JoyBoy can run local chat through Ollama and can switch between installed models from the picker. It also tracks runtime state so models can be unloaded when memory gets tight.
Useful for:
Project mode gives JoyBoy a workspace-aware coding surface. It can inspect files, plan work, use tools, keep task state, and help with repository changes.
Useful for:
JoyBoy includes image generation, model catalogues, provider imports, SDXL/Flux-style workflows, inpainting, masks, quick prompts, expand/outpaint, upscale, and before/after comparison.
Useful for:
JoyBoy exposes video models through the same local model mindset: catalogue, install/equip flows, GPU-aware profiles, progress reporting, and gallery output.
Useful for:
Video generation is still hardware-sensitive. JoyBoy tries to keep the controls friendly while making VRAM/RAM/offload behavior visible.
JoyBoy has an Extensions hub because not every workflow belongs hardcoded inside the public core.
There are three extension families:
MCP lets JoyBoy connect tools without stuffing every integration directly into the app. MCP config stays local in:
~/.joyboy/config.json
JoyBoy can show configured MCP servers, enabled tools, missing environment variables, OAuth/token requirements, and runtime health from the UI.
Examples of MCP-style workflows:
Browser Use is an optional local browser automation surface. It opens a resizable right-side panel, can navigate local or public pages, take screenshots, click, scroll, type, and show a live cursor/action log while it works.
You can call it from chat with:
@browser-use open localhost:3000 and check the main button
It is especially useful for:
Browser Use is optional. If the runtime is missing, JoyBoy can install Playwright/Chromium locally from the UI.
Computer Use is the planned desktop-control surface for controlling the actual computer, not just a browser tab. Because real OS mouse/keyboard control is sensitive and platform-specific, JoyBoy exposes it as a local-pack extension surface instead of baking it directly into the public core.
The intended design is:
Until a trusted local pack is installed, Computer Use stays visible-but-locked in the Extensions hub.
JoyBoy is designed for privacy and control:
.env, or local UI config.The public repository is the neutral core. Private workflows should be added through local packs.
JoyBoy can work fully locally, or with optional providers.
Local model paths include:
Optional provider/API variables include:
HF_TOKENCIVITAI_API_KEYOLLAMA_BASE_URLOPENAI_API_KEYOPENROUTER_API_KEYANTHROPIC_API_KEYGEMINI_API_KEYDEEPSEEK_API_KEYMOONSHOT_API_KEYNOVITA_API_KEYMINIMAX_API_KEYVOLCENGINE_API_KEYZHIPU_API_KEYVLLM_API_KEYVLLM_BASE_URLGLM_BASE_URLUI-managed secrets are stored outside git in:
~/.joyboy/config.json
You only need provider keys for gated downloads or cloud models. Local-only usage can start without keys.
JoyBoy tries to adapt to the machine it is running on:
The app uses GPU profiles, VRAM/RAM displays, unload controls, and model compatibility hints to make local AI less mysterious.
If CUDA is expected but JoyBoy reports CPU-only PyTorch, rerun the launcher and choose the full setup/repair path.
Local packs live in:
~/.joyboy/packs/<pack_id>/
Packs can extend JoyBoy without polluting the public repository:
Third-party packs are external addons distributed separately from JoyBoy. They are not part of the official public core and may have their own safety, licensing, and maintenance rules.
See:
JoyBoy is being prepared as a clean public local AI core. Good contributions keep the app easy to understand and avoid committing secrets, generated files, model weights, caches, or local packs.
Good first areas:
Start with CONTRIBUTING.md, ROADMAP.md, and docs/GOOD_FIRST_ISSUES.md.
Apache License 2.0. See LICENSE.
Python
53.6%
JavaScript
37.3%
CSS
6.1%
HTML
2.4%