localgpt-app/localgptPublic

Local AI assistant, dreaming explorable worlds.

AI summary: Locally-hosted AI agent and world-building tool using natural language and the Bevy engine.

Stars
1.1K
Forks
100
Watchers
6
Open issues
6
Open PRs
0
Contributors
~12
Commits
619
Branches
2

RustApache-2.0Created Feb 1, 2026Last push 1mo ago+2 stars this week

Star history

since Apr 9, 2023
05001KApr 2023May 2024Jun 2025Aug 2026
1.1K stars as of Aug 7, 2026, tracked back to Apr 9, 2023. Historical curve reconstructed from public GitHub event archives, calibrated to the current total.

Signals and awards

derived from tracked data
  • Permissive license

    Apache-2.0

  • Continuous integration

    Automated checks passing

What localgpt does

LocalGPT is an open-source tool that allows users to generate and explore 3D worlds entirely through natural language prompts. It combines a local AI assistant with the Bevy game engine (written in Rust) to translate text instructions into tangible 3D geometry, materials, lighting, and behaviors. Because it runs completely locally, it provides a private environment for AI-driven procedural generation and interactive chat without relying on cloud APIs.

Game developers, 3D artists, and Rust enthusiasts interested in AI-driven procedural generation. It requires capable local hardware to run both the 3D engine and the LLMs.

  • Bevy engine integration: renders high-performance 3D worlds using Rust's premier game engine.
  • Natural language generation: translates text prompts into 3D geometry, audio, and lighting setups.
  • Local execution: ensures complete privacy by running the AI models and rendering pipeline entirely on-device.
  • Modular architecture: separates the world-generation executable from the AI chat daemon.
  • Behavioral scripting: allows defining complex interactions and entity behaviors via AI prompts.

Where teams use it

Procedural world generation

Rapidly prototype 3D environments for games by describing the scene in plain English.

Local AI interaction

Chat with a context-aware assistant that can modify the 3D space you are actively exploring.

Rust game development

Study how to integrate local LLMs directly into the Bevy ECS (Entity Component System).

Private prototyping

Experiment with AI generation without sending proprietary ideas to external servers.

Getting started: cargo install localgpt-gen

README

main branch

LocalGPT LocalGPT

License Crates.io Downloads Docs CI Discord

Build explorable 3D worlds with natural language — geometry, materials, lighting, audio, and behaviors. Open source, runs locally.

LocalGPT Gen Demo

Install

From crates.io (for users)

If you just want to run LocalGPT — no source checkout needed:

# World Building
cargo install localgpt-gen

# AI Assistant (chat, memory, daemon)
cargo install localgpt

From source (for developers)

If you've cloned the repository and want to hack on the code, use cargo run to iterate without installing:

git clone https://github.com/localgpt-app/localgpt.git
cd localgpt

# World Building
cargo run -p localgpt-gen -- "Create a desert scene with pyramids"

# AI Assistant
cargo run -- chat
cargo run -- daemon start

Full options (feature flags, headless builds, Docker): see Installation.

LocalGPT Gen Mode (World Building)

localgpt-gen is a standalone binary for AI-driven 3D world creation with the Bevy game engine.

# Start interactive mode
localgpt-gen

# Start with an initial prompt
localgpt-gen "Create a desert scene with pyramids and a UFO hovering above"

# Load an existing scene
localgpt-gen --scene ./world.glb

# Verbose logging
localgpt-gen --verbose

Features

  • Parametric shapes — box, sphere, cylinder, capsule, plane, torus, pyramid, tetrahedron, icosahedron, wedge
  • PBR materials — color, metalness, roughness, emissive, alpha, double-sided
  • Lighting — point, spot, directional lights with color and intensity
  • Behaviors — orbit, spin, bob, look_at, pulse, path_follow, bounce
  • Audio — ambient sounds (wind, rain, forest, ocean, cave) and spatial emitters
  • Export — glTF/GLB, HTML (browser-viewable), screenshots
  • World skills — save/load complete worlds as reusable skills

Headless Mode & Experiment Queue

Queue world experiments and generate without a window — overnight batch runs, CI pipelines, or scripted variations:

# Generate a single world (no window)
localgpt-gen headless --prompt "Build a cozy cabin in a snowy forest"

# With style hint
localgpt-gen headless --prompt "Village marketplace" --style "Studio Ghibli"

The memory system learns your creative style across sessions — palettes, lighting preferences, entity templates — and applies them automatically in future generations.

Full docs: Headless Mode & Experiment Queue

MCP Server

Use Gen from Claude Desktop, Codex Desktop, or any MCP-compatible editor (VS Code, Zed, Cursor):

localgpt-gen mcp-server

Add to Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "localgpt-gen": {
      "command": "localgpt-gen",
      "args": ["mcp-server"]
    }
  }
}

For CLI tools (Claude CLI, Gemini CLI, Codex CLI), use --connect to route tool calls to your existing window. See CLI Mode (MCP Relay).

Full docs: LocalGPT Gen | MCP Server

Built something cool? Share on Discord or YouTube!


AI Assistant

localgpt is a local-first AI assistant with persistent memory, autonomous tasks, and multiple interfaces.

# Interactive chat
localgpt chat

# Single question
localgpt ask "What is the meaning of life?"

# Run as daemon with HTTP API and web UI
localgpt daemon start

Why LocalGPT?

  • Single binary — no Node.js, Docker, or Python required
  • Local device focused — runs entirely on your machine, your data stays yours
  • Persistent memory — markdown-based knowledge store with full-text and semantic search
  • Hybrid web search — native provider search passthrough plus client-side fallback
  • Autonomous heartbeat — delegate tasks and let it work in the background
  • Multiple interfaces — CLI, web UI, desktop GUI, Telegram bot
  • Defense-in-depth security — signed policy files, kernel-enforced sandbox, prompt injection defenses
  • Multiple LLM providers — LM Studio, Ollama, Anthropic, OpenAI, xAI, GLM, Vertex AI, CLI providers

How It Works

LocalGPT uses XDG-compliant directories for config/data/state/cache. Run localgpt paths to see resolved paths.

Workspace memory layout:

<workspace>/
├── MEMORY.md     # Long-term knowledge (auto-loaded each session)
├── HEARTBEAT.md  # Autonomous task queue
├── SOUL.md       # Personality and behavioral guidance
└── knowledge/    # Structured knowledge bank

Files are indexed with SQLite FTS5 for keyword search and sqlite-vec for semantic search with local embeddings.

Configuration

Stored at <config_dir>/config.toml:

Local models via LM Studio (no API key, fully offline):

[agent]
default_model = "openai/qwen/qwen3.5-35b-a3b"

[providers.openai]
api_key = "lm-studio"
base_url = "http://127.0.0.1:1234/v1"

Cloud providers (Anthropic, OpenAI, etc.):

[agent]
default_model = "claude-cli/opus"

[providers.anthropic]
api_key = "${ANTHROPIC_API_KEY}"

Full config reference: website/docs/configuration.md

Security

  • Kernel-enforced sandbox — Landlock/seccomp on Linux, Seatbelt on macOS
  • Signed policy files — HMAC-SHA256 signed LocalGPT.md with tamper detection
  • Prompt injection defenses — marker stripping, pattern detection, content boundaries
  • Audit chain — hash-chained security event log

Security docs: website/docs/sandbox.md | website/docs/localgpt.md

HTTP API

Endpoint Description
GET / Embedded web UI
POST /api/chat Chat with assistant
POST /api/chat/stream SSE streaming chat
GET /api/memory/search?q=<query> Search memory

Full API reference: website/docs/http-api.md

CLI Commands

localgpt chat                   # Interactive chat
localgpt ask "question"         # Single question
localgpt daemon start           # Start daemon
localgpt memory search "query"  # Search memory
localgpt config show            # Show config
localgpt paths                  # Show resolved paths

Full CLI reference: website/docs/cli-commands.md

Blog

Built With

Rust, Tokio, Axum, Bevy, SQLite (FTS5 + sqlite-vec), fastembed, eframe

Contributors

License

Apache-2.0

View on GitHub

Recent activity

commits and pull requests

Recent open issues

view all

Code frequency

additions and deletions
+61.4K-61.4KWeek of 2025-08-03: +0 linesWeek of 2025-08-03: -0 linesWeek of 2025-08-10: +0 linesWeek of 2025-08-10: -0 linesWeek of 2025-08-17: +0 linesWeek of 2025-08-17: -0 linesWeek of 2025-08-24: +0 linesWeek of 2025-08-24: -0 linesWeek of 2025-08-31: +0 linesWeek of 2025-08-31: -0 linesWeek of 2025-09-07: +0 linesWeek of 2025-09-07: -0 linesWeek of 2025-09-14: +0 linesWeek of 2025-09-14: -0 linesWeek of 2025-09-21: +0 linesWeek of 2025-09-21: -0 linesWeek of 2025-09-28: +0 linesWeek of 2025-09-28: -0 linesWeek of 2025-10-05: +0 linesWeek of 2025-10-05: -0 linesWeek of 2025-10-12: +0 linesWeek of 2025-10-12: -0 linesWeek of 2025-10-19: +0 linesWeek of 2025-10-19: -0 linesWeek of 2025-10-26: +0 linesWeek of 2025-10-26: -0 linesWeek of 2025-11-02: +0 linesWeek of 2025-11-02: -0 linesWeek of 2025-11-09: +0 linesWeek of 2025-11-09: -0 linesWeek of 2025-11-16: +0 linesWeek of 2025-11-16: -0 linesWeek of 2025-11-23: +0 linesWeek of 2025-11-23: -0 linesWeek of 2025-11-30: +0 linesWeek of 2025-11-30: -0 linesWeek of 2025-12-07: +0 linesWeek of 2025-12-07: -0 linesWeek of 2025-12-14: +0 linesWeek of 2025-12-14: -0 linesWeek of 2025-12-21: +0 linesWeek of 2025-12-21: -0 linesWeek of 2025-12-28: +0 linesWeek of 2025-12-28: -0 linesWeek of 2026-01-04: +0 linesWeek of 2026-01-04: -0 linesWeek of 2026-01-11: +0 linesWeek of 2026-01-11: -0 linesWeek of 2026-01-18: +0 linesWeek of 2026-01-18: -0 linesWeek of 2026-01-25: +0 linesWeek of 2026-01-25: -0 linesWeek of 2026-02-01: +42,102 linesWeek of 2026-02-01: -10,923 linesWeek of 2026-02-08: +18,140 linesWeek of 2026-02-08: -3,413 linesWeek of 2026-02-15: +52,990 linesWeek of 2026-02-15: -35,732 linesWeek of 2026-02-22: +28,877 linesWeek of 2026-02-22: -7,333 linesWeek of 2026-03-01: +23,548 linesWeek of 2026-03-01: -9,143 linesWeek of 2026-03-08: +28,597 linesWeek of 2026-03-08: -6,335 linesWeek of 2026-03-15: +42,346 linesWeek of 2026-03-15: -12,231 linesWeek of 2026-03-22: +61,445 linesWeek of 2026-03-22: -27,133 linesWeek of 2026-03-29: +11 linesWeek of 2026-03-29: -9 linesWeek of 2026-04-05: +7,038 linesWeek of 2026-04-05: -943 linesWeek of 2026-04-12: +619 linesWeek of 2026-04-12: -615 linesWeek of 2026-04-19: +298 linesWeek of 2026-04-19: -49 linesWeek of 2026-04-26: +0 linesWeek of 2026-04-26: -0 linesWeek of 2026-05-03: +180 linesWeek of 2026-05-03: -111 linesWeek of 2026-05-10: +0 linesWeek of 2026-05-10: -0 linesWeek of 2026-05-17: +0 linesWeek of 2026-05-17: -0 linesWeek of 2026-05-24: +0 linesWeek of 2026-05-24: -0 linesWeek of 2026-05-31: +0 linesWeek of 2026-05-31: -0 linesWeek of 2026-06-07: +4,007 linesWeek of 2026-06-07: -1,444 linesWeek of 2026-06-14: +52 linesWeek of 2026-06-14: -17 linesWeek of 2026-06-21: +1 linesWeek of 2026-06-21: -42 linesWeek of 2026-06-28: +0 linesWeek of 2026-06-28: -0 linesWeek of 2026-07-05: +0 linesWeek of 2026-07-05: -0 linesWeek of 2026-07-12: +0 linesWeek of 2026-07-12: -0 linesWeek of 2026-07-19: +0 linesWeek of 2026-07-19: -0 linesWeek of 2026-07-26: +0 linesWeek of 2026-07-26: -0 linesAug 3, 2025Jul 26, 2026
+310.3K lines added, -115.5K removed over the last year.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 17 commitsSun 1:00 — 4 commitsSun 2:00 — 0 commitsSun 3:00 — 0 commitsSun 4:00 — 0 commitsSun 5:00 — 0 commitsSun 6:00 — 2 commitsSun 7:00 — 0 commitsSun 8:00 — 5 commitsSun 9:00 — 4 commitsSun 10:00 — 6 commitsSun 11:00 — 13 commitsSun 12:00 — 10 commitsSun 13:00 — 0 commitsSun 14:00 — 5 commitsSun 15:00 — 0 commitsSun 16:00 — 7 commitsSun 17:00 — 9 commitsSun 18:00 — 4 commitsSun 19:00 — 9 commitsSun 20:00 — 5 commitsSun 21:00 — 10 commitsSun 22:00 — 10 commitsSun 23:00 — 9 commitsMon 0:00 — 17 commitsMon 1:00 — 6 commitsMon 2:00 — 1 commitsMon 3:00 — 0 commitsMon 4:00 — 0 commitsMon 5:00 — 0 commitsMon 6:00 — 1 commitsMon 7:00 — 3 commitsMon 8:00 — 9 commitsMon 9:00 — 2 commitsMon 10:00 — 1 commitsMon 11:00 — 0 commitsMon 12:00 — 2 commitsMon 13:00 — 2 commitsMon 14:00 — 2 commitsMon 15:00 — 4 commitsMon 16:00 — 4 commitsMon 17:00 — 5 commitsMon 18:00 — 1 commitsMon 19:00 — 12 commitsMon 20:00 — 7 commitsMon 21:00 — 5 commitsMon 22:00 — 4 commitsMon 23:00 — 18 commitsTue 0:00 — 16 commitsTue 1:00 — 8 commitsTue 2:00 — 1 commitsTue 3:00 — 0 commitsTue 4:00 — 0 commitsTue 5:00 — 1 commitsTue 6:00 — 0 commitsTue 7:00 — 1 commitsTue 8:00 — 1 commitsTue 9:00 — 1 commitsTue 10:00 — 0 commitsTue 11:00 — 0 commitsTue 12:00 — 0 commitsTue 13:00 — 0 commitsTue 14:00 — 3 commitsTue 15:00 — 1 commitsTue 16:00 — 2 commitsTue 17:00 — 10 commitsTue 18:00 — 10 commitsTue 19:00 — 3 commitsTue 20:00 — 7 commitsTue 21:00 — 9 commitsTue 22:00 — 4 commitsTue 23:00 — 12 commitsWed 0:00 — 3 commitsWed 1:00 — 8 commitsWed 2:00 — 2 commitsWed 3:00 — 0 commitsWed 4:00 — 0 commitsWed 5:00 — 0 commitsWed 6:00 — 0 commitsWed 7:00 — 1 commitsWed 8:00 — 1 commitsWed 9:00 — 2 commitsWed 10:00 — 0 commitsWed 11:00 — 0 commitsWed 12:00 — 1 commitsWed 13:00 — 1 commitsWed 14:00 — 0 commitsWed 15:00 — 0 commitsWed 16:00 — 2 commitsWed 17:00 — 2 commitsWed 18:00 — 3 commitsWed 19:00 — 4 commitsWed 20:00 — 8 commitsWed 21:00 — 6 commitsWed 22:00 — 9 commitsWed 23:00 — 9 commitsThu 0:00 — 11 commitsThu 1:00 — 2 commitsThu 2:00 — 5 commitsThu 3:00 — 6 commitsThu 4:00 — 6 commitsThu 5:00 — 2 commitsThu 6:00 — 1 commitsThu 7:00 — 6 commitsThu 8:00 — 1 commitsThu 9:00 — 1 commitsThu 10:00 — 0 commitsThu 11:00 — 0 commitsThu 12:00 — 1 commitsThu 13:00 — 3 commitsThu 14:00 — 0 commitsThu 15:00 — 1 commitsThu 16:00 — 0 commitsThu 17:00 — 0 commitsThu 18:00 — 1 commitsThu 19:00 — 0 commitsThu 20:00 — 0 commitsThu 21:00 — 3 commitsThu 22:00 — 3 commitsThu 23:00 — 2 commitsFri 0:00 — 3 commitsFri 1:00 — 6 commitsFri 2:00 — 8 commitsFri 3:00 — 4 commitsFri 4:00 — 0 commitsFri 5:00 — 1 commitsFri 6:00 — 0 commitsFri 7:00 — 0 commitsFri 8:00 — 0 commitsFri 9:00 — 0 commitsFri 10:00 — 0 commitsFri 11:00 — 0 commitsFri 12:00 — 1 commitsFri 13:00 — 0 commitsFri 14:00 — 0 commitsFri 15:00 — 0 commitsFri 16:00 — 0 commitsFri 17:00 — 0 commitsFri 18:00 — 3 commitsFri 19:00 — 2 commitsFri 20:00 — 0 commitsFri 21:00 — 3 commitsFri 22:00 — 7 commitsFri 23:00 — 4 commitsSat 0:00 — 10 commitsSat 1:00 — 5 commitsSat 2:00 — 1 commitsSat 3:00 — 1 commitsSat 4:00 — 0 commitsSat 5:00 — 0 commitsSat 6:00 — 0 commitsSat 7:00 — 0 commitsSat 8:00 — 0 commitsSat 9:00 — 4 commitsSat 10:00 — 3 commitsSat 11:00 — 5 commitsSat 12:00 — 6 commitsSat 13:00 — 9 commitsSat 14:00 — 11 commitsSat 15:00 — 7 commitsSat 16:00 — 6 commitsSat 17:00 — 4 commitsSat 18:00 — 6 commitsSat 19:00 — 6 commitsSat 20:00 — 8 commitsSat 21:00 — 7 commitsSat 22:00 — 13 commitsSat 23:00 — 22 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
DateListRankStars gained
Feb 8, 2026daily#11+261
  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    385.5K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • obra/superpowers

    An agentic skills framework & software development methodology that works.

    268.6K stars · Shell

  • NousResearch/hermes-agent

    The agent that grows with you

    227K stars · Python