✅ Agentic OS-aware Intention Programming Technology
22
stars
1,045
commits
PHP
primary language
Sep 3, 2026
updated
🐘 A PHP/Composer Project — Built with PHP 8.3, managed via Composer, following modern PSR standards.
A powerful local AI Agent that runs entirely on your machine. Works with OpenAI-compatible APIs and leverages the fastest inference engines on the planet: Groq and Cerebras.
https://github.com/user-attachments/assets/62220ea5-453b-4774-b13a-1cca89f728ff
Left: Ginto AI in action. Right: Multi-provider model selection supporting Ollama, Groq, Cerebras, OpenAI, and local llama.cpp models — all from a unified interface.
Left: Syntax-highlighted code blocks with copy, save, and live preview. Right: Full LaTeX/KaTeX math rendering for equations and formulas.
Left: Interactive web console with full terminal emulation for sandbox access. Right: Proxmox-style LXC/LXD admin interface for container and image management.
Left: DNS Zone Manager with PowerDNS integration — full support for A, AAAA, CNAME, MX, TXT, NS, SRV, CAA, and SOA records. Right: Server Hosting Panel with system stats, service management, database provisioning, and firewall controls.
Left: Network Dashboard with 4 network modes (NAT, Bridge, MACVLAN, IPVLAN) — Right: Featuring Cerebras & Groq with Ollama & llama.cpp API support.
Left: VS Code Monaco Editor with integrated file explorer for sandbox files. Right: VNC remote desktop access for graphical sandbox environments.
Left: Live code preview for HTML, CSS, and JavaScript. Right: Agent Mode with autonomous multi-step task execution.
Left: AI-powered web search with LightPanda browser engine — real-time search during chat. Right: Search results with collapsible activity timeline and source citations.
Left: OpenWebUI embedded in Ginto AI's universal iframe modal with minimize, maximize, and fullscreen controls. Right: Full-screen view with stacked minimized tabs for Console and OpenWebUI running simultaneously.
Note: OpenWebUI runs at
oi.silverqueen.pro(same-origin subdomain) for seamless iframe integration with shared localStorage and authentication.
This project's web UI draws inspiration from Open WebUI, Ollama, and llama.cpp WebUI — pioneering projects that shaped the local AI landscape.
Historical note: The author contributed discussions, ideas, code, and documentation to Open WebUI's early development, including the Apache configuration guide. That era remains a fond example of focused, community-driven open-source collaboration. Ginto AI carries forward that spirit: simplicity, productivity, and respect for the user's machine.
The sandboxing architecture is inspired by Anthropic Claude's and OpenAI's approach to isolated code execution in agentic pipelines — enabling safe, contained tool use while preserving the power of autonomous task completion. The LXC/LXD containerization and virtualization layer draws from Proxmox VE's proven infrastructure model, extended with first-class support for horizontal server scaling.
The Code Editor uses VS Code's Monaco Editor on desktop with an integrated File Explorer, and CodeMirror on mobile for the sandbox view. This is a unique differentiator from other popular AI web UIs — none offer a built-in code editor. Users simply click "My Files" to activate the full editor mode, seamlessly blending file management with code editing in a single interface.
The "My Files" interface follows the familiar Microsoft Windows file management paradigm — together, these form a cohesive blend of battle-tested technologies.
web_fetch/image tool/imagegen with streaming events$...$ inline, $$...$$ display){subdomain}.silverqueen.pro*.silverqueen.pro routes to frp vhost
Left: Creating a public tunnel to expose local OpenWebUI to the internet. Right: Active tunnel with public subdomain URL ready to share.
composer.json| Provider | Type | Notable Models |
|---|---|---|
| Groq | OpenAI-compatible | Llama 3.3 70B, DeepSeek R1, Llama 4 |
| Cerebras | OpenAI-compatible | Ultra-fast inference |
| OpenAI | Native | GPT-4o, o1-preview |
| Anthropic | Native | Claude Sonnet 4, Claude Opus |
| Together AI | OpenAI-compatible | Llama 3.1, Qwen 2.5 |
| Fireworks AI | OpenAI-compatible | Llama 3.1, Mixtral |
Recommended Reasoning Model: GPT-OSS - The most obedient and capable reasoning model tested so far.
You are free to swap out the Vision Model and Reasoning Model with any Huggingface GGUF that is compatible with llama.cpp. Simply download your preferred model and configure it in your environment.
| Platform | Core AI Agent | Sandbox (LXD) | Sandbox (Docker) | Notes |
|---|---|---|---|---|
| Ubuntu/Debian | ✅ Full | ✅ Full | ✅ Full | Recommended |
| Fedora/RHEL | ✅ Full | ✅ Full | ✅ Full | Tested |
| Windows (WSL2) | ✅ Full | ✅ Full | ✅ Full | Requires systemd + LXD or Docker |
| macOS | ✅ Docker | ❌ No LXD | ✅ Full | Use Docker mode |
| Docker | ✅ Full | N/A | ✅ Full | See Docker Installation Mode |
Ginto AI fully supports Windows via WSL2 with Ubuntu. Both the core AI agent and the LXD sandbox environment work correctly.
Prerequisites:
Enable systemd in WSL2 - add to /etc/wsl.conf:
[boot]
systemd=true
Then restart WSL: wsl --shutdown from PowerShell.
Upgrade Ubuntu to the latest LTS (required for LXD snap):
sudo apt update && sudo apt upgrade -y
sudo do-release-upgrade
Install LXD via Snap (apt package is outdated in WSL):
sudo snap install lxd
sudo lxd init --auto
sudo usermod -aG lxd $USER
# Log out and back in for group membership to take effect
Run the installer as your normal user (not root directly):
cd ~/silverqueen.pro
sudo ./run.sh install
--skip sdcpu)If you need to re-run the installer on a system that already has Ginto installed — e.g. to change your domain, TLS email, or database — always clear the install checkpoint first. Otherwise the installer may resume from a stale checkpoint left by a previous run (for example, if an earlier run failed partway through) and silently skip steps like the domain/email prompt.
# 1. Clear any leftover checkpoint/config from a previous run
sudo bash ./run.sh reset
# Destructive (if you're sure you want to wipe out everything) — clears checkpoints AND drops the database, with a typed confirmation
sudo ./run.sh reset --wipe-db
# 2. Re-run the installer (skip SDCPU image generation if you don't need it)
sudo ./run.sh install --skip sdcpu
When prompted, choose:
2. Fresh install - Remove all and reinstall from scratch
This clears checkpoints, backs up and removes your existing .env
(saved as .env.bak.<timestamp> in the project root — delete it once
you've confirmed the new install works and copied out anything you
still need, like old API keys), and walks you through the full
configuration flow again, including:
localhost) or Live (your own domain with HTTPS)Some steps (PowerDNS, in particular) can leave a stale checkpoint if
they fail. If a re-run seems to skip prompts it should be asking, or
seems to silently jump to a later step, always run reset first:
sudo bash bin/gintoai.sh reset
This is safe to run anytime — it only clears .install_checkpoint and
.install_config, never your actual .env, database, or installed
packages.
--skip sdcpu — skip AI image generation (SDCPU), ~2GB and several
minutes of install time--skip powerdns — skip the PowerDNS authoritative DNS server
(only needed if you're hosting DNS zones through Ginto)--skip sdcpu,powerdnsExample, full fresh reinstall without SDCPU or PowerDNS:
sudo bash bin/gintoai.sh reset
sudo ./run.sh install --skip sdcpu,powerdns
One-liner install (recommended):
curl -fsSL https://silverqueen.pro/install.sh | sh
This will clone the repo to ~/silverqueen.pro and run the full installer automatically.
Or clone manually:
cd ~
git clone https://github.com/oliverbob/silverqueen.pro.git
cd silverqueen.pro
sudo ./run.sh install
This runs ./bin/gintoai.sh which handles:
The installer has resume capability - if interrupted, simply run it again to continue from where it left off.
./run.sh start
Access the web UI at http://localhost:8000 (or your configured domain).
After the main installation, the web UI will guide you to optionally set up the sandbox environment for isolated code execution:
./bin/ginto.sh init
This runs ./bin/ginto.sh which sets up:
📖 See docs/sandbox.md for detailed sandbox architecture, diagrams, and the collision-free IP routing algorithm.
silverqueen.pro/
├── run.sh # Main entry point
├── install.sh # One-line installer
├── docker-compose.yml # Docker sandbox services only
├── bin/
│ ├── gintoai.sh # Core installation script
│ ├── ginto.sh # Sandbox management script
│ └── ... # Other utilities
├── src/
│ ├── Controllers/ # API and admin controllers
│ ├── Core/ # LLM providers and clients
│ ├── Handlers/ # MCP tool handlers (AgentTools, DevTools, etc.)
│ ├── Helpers/ # Utilities and sandbox management
│ ├── Models/ # Data models
│ ├── Views/ # PHP view templates (admin, hosting, etc.)
│ └── Routes/ # FastRoute definitions
├── public/ # Web root (front controller)
├── tools/ # MCP servers and utilities
│ ├── groq-mcp/ # Groq MCP server
│ ├── paypal-mcp/ # PayPal integration
│ ├── sandbox-proxy/ # Node.js reverse proxy
│ └── terminal-server/ # Terminal WebSocket server
├── docker/ # Docker build files
│ ├── sandbox/ # Sandbox container images
│ └── ... # Other Docker configs
├── database/ # SQL migrations
├── docs/ # Documentation
└── config/ # Configuration files
Create a .env file with your API keys:
# LLM Provider (auto-detected if not set)
LLM_PROVIDER=groq
# API Keys (set the ones you need)
GROQ_API_KEY=your_groq_api_key
CEREBRAS_API_KEY=your_cerebras_api_key
OPENAI_API_KEY=your_openai_api_key
ANTHROPIC_API_KEY=your_anthropic_api_key
# Database (auto-configured during install)
DB_HOST=localhost
DB_NAME=ginto
DB_USER=ginto
DB_PASS=your_db_password
If LLM_PROVIDER is not set, the system detects based on available API keys in this order:
| Command | Description |
|---|---|
./run.sh install | Install all dependencies (requires sudo) |
./run.sh start | Start the web server and services |
./run.sh stop | Stop all running services |
./run.sh status | Show status of all services |
./bin/ginto.sh init | Initialize sandbox environment |
./bin/ginto.sh create <name> | Create a new sandbox |
./bin/ginto.sh list | List all sandboxes |
./bin/ginto.sh shell <name> | Open shell in sandbox |
Ginto uses LXD containers with Proxmox-style security hardening to safely allow nesting (Docker/LXC inside containers) while protecting the host.
| Feature | Status | Implementation |
|---|---|---|
| Unprivileged Containers | ✅ | security.privileged=false |
| UID Namespace Isolation | ✅ | security.idmap.isolated=true |
| Nesting Enabled | ✅ | security.nesting=true with interception |
| Mount Syscall Interception | ✅ | Whitelist: ext4,tmpfs,proc,sysfs,cgroup,overlay |
| Device Node Interception | ✅ | security.syscalls.intercept.mknod=true |
| Resource Limits | ✅ | 2 CPU, 1GB RAM, 200 processes |
| Kernel Module Loading | ✅ Blocked | linux.kernel_modules="" |
| Command Filtering | ✅ | SandboxSecurity.php blocks dangerous commands |
If your server uses UFW, LXD bridge traffic must be allowed for containers to get IP addresses.
The ginto.sh init command automatically configures UFW if it detects UFW is active. However, if you need to configure it manually:
# Allow LXD bridge traffic (required for container networking)
sudo ufw allow in on lxdbr0
sudo ufw allow out on lxdbr0
sudo ufw route allow in on lxdbr0
sudo ufw route allow out on lxdbr0
Application logs are located at:
../storage/logs/ginto.log
(One level up from the project directory, at /home/<user>/storage/logs/ginto.log)
The Feistel-based IP routing wasn't built for today—it was designed for datacenter-scale AI orchestration.
Imagine a datacenter running billions of autonomous AI agents, each in its own isolated sandbox:
QUANTUM AI DATACENTER
+---------------------------------------------------------------+
| |
| Agent Swarm: 4,294,967,296 unique sandboxes |
| IP Space: 1.0.0.1 --> 255.255.255.254 (full IPv4) |
| Routing: O(1) - instant, no database, no collisions |
| |
| +-------+ +-------+ +-------+ +-------+ |
| |Agent-1| |Agent-2| |Agent-3| ... |Agent-4B| |
| |1.0.0.1| |142.87 | |15.8.77| |254.254 | |
| +-------+ +-------+ +-------+ +-------+ |
| | | | | |
| +---------+----------+------------------+ |
| | |
| +------+------+ |
| | FEISTEL | SHA256 --> Permute --> IP |
| | ROUTER | ~1 microsecond per lookup |
| +-------------+ |
| |
| No Redis. No database. No collisions. Pure math. |
+---------------------------------------------------------------+
| Traditional Routing | Feistel Routing |
|---|---|
| Database lookup per request | Pure computation |
| O(log n) or O(n) scaling | O(1) constant time |
| Collision risk with hashing | Bijective = zero collisions |
| Redis/DB becomes bottleneck | No external dependencies |
| ~1-10ms per lookup | ~1μs per lookup |
When quantum computers orchestrate agent swarms:
The IP_PERMUTATION_KEY can be derived from quantum-resistant algorithms (Kyber, Dilithium), ensuring routing remains secure post-quantum.
# Full 32-bit mode (datacenter scale)
unset LXD_NETWORK_PREFIX
# Subnet mode (local /24 network)
export LXD_NETWORK_PREFIX=10.166.3
📖 See docs/sandbox.md for the complete Feistel algorithm and architecture diagrams.
Status: ✅ Implemented — Docker mode provides a fully containerized deployment that works on Linux, macOS, and Windows.
Docker mode allows you to run Ginto AI entirely in containers, with optional Docker-based sandboxes that replace LXD for cross-platform compatibility.
One-liner install:
curl -fsSL https://silverqueen.pro/install.sh | sh
Then choose option 2) docker when prompted for installation mode.
Or manual setup:
# Clone the repository
git clone https://github.com/oliverbob/silverqueen.pro.git
cd silverqueen.pro
# Copy and configure environment
cp docker/.env.example .env
nano .env # Add your API keys
# Start all services
docker compose up -d
# View logs
docker compose logs -f
Access the web interface at http://localhost
┌───────────────────────────────────────────────────────────────┐
│ Host / LXC / LXD Container │
├───────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Caddy │ │ PHP-FPM │ │ WebSocket │ │
│ │ :80/443 │───▶│ :9000 │ │ :8080 │ │
│ │ │ │ (Ginto AI) │ │ (Ratchet) │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ MariaDB │ │ Redis │ │ PowerDNS │ │
│ │ :3306 │ │ :6379 │ │ (optional) │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ Docker (sandboxes only) │ │
│ ├─────────────────────────────────────────────────┤ │
│ │ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │Sandbox Proxy│ │Terminal Srv │ │ │
│ │ │ :3000 │ │ :3001 │ │ │
│ │ └─────────────┘ └─────────────┘ │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ ┌─────────────────────────────────────────┐ │ │
│ │ │ User Sandbox Containers │ │ │
│ │ │ Network: 172.30.0.0/16 │ │ │
│ │ └─────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────┘ │
│ │
└───────────────────────────────────────────────────────────────┘
# Start/stop main application (systemd)
sudo systemctl start ginto
sudo systemctl stop ginto
sudo systemctl status ginto
# View application logs
journalctl -u ginto -f
# Start/stop Docker sandbox services
docker compose up -d
docker compose down
docker compose logs -f
# Database access (runs on host)
mysql -u ginto -p ginto
# Restart PHP-FPM after code changes
sudo systemctl restart php8.3-fpm
| Mode | Target Platform | Main Stack | Sandboxes | Complexity |
|---|---|---|---|---|
| Native mode | Linux | Host | LXD | Low |
| Docker mode | Linux | Host | Docker | Low |
| Feature | Docker Sandboxes | LXD Sandboxes |
|---|---|---|
| Platform | Linux, macOS, Windows | Linux only |
| Isolation | Container-level | VM-level (optional) |
| Setup | Automatic | Requires ginto.sh init |
| IP Allocation | Same Feistel algorithm | Same Feistel algorithm |
| Performance | Excellent | Excellent |
| Nested Containers | Supported (DinD) | Supported (nested LXD) |
| Variable | Description | Default |
|---|---|---|
SANDBOX_MODE | docker, lxd, or auto | docker |
DOCKER_SANDBOX_SUBNET | Subnet for sandboxes | 172.30.0.0/16 |
IP_PERMUTATION_KEY | Secret for IP allocation | (auto-generated) |
📖 See docker/README.md for complete Docker documentation.
Ginto AI includes a worldwide geographic database powered by GeoNames.org (Creative Commons Attribution 4.0). This enables:
After installation, import geographic data using the CLI tool:
# Import Philippines (42,000+ barangays, ~5MB download)
php bin/geo_import.php PH
# Import multiple countries
php bin/geo_import.php PH,US,JP
# Import ALL countries (~12M records, ~400MB download)
php bin/geo_import.php all
# Check import status
php bin/geo_import.php --status
# Re-import (force overwrite)
php bin/geo_import.php PH --force
geo_places table — Stores the complete GeoNames dataset (populated places + administrative divisions)barangays table — Active registered zones used by sellers and delivery systembarangays first; if few results, falls back to geo_places (FULLTEXT search)barangaysThe installer (bin/gintoai.sh) automatically imports PH data during setup. To configure which countries to import, set in .env:
GEO_COUNTRIES=PH # Default: Philippines only
GEO_COUNTRIES=PH,US,JP # Multiple countries
GEO_COUNTRIES=all # All countries (large)
A (administrative) and P (populated place) feature classes are importedgeo_places, geo_admin1, geo_import_logThe ./install.sh script will support multiple installation modes:
| Mode | Speed | Description |
|---|---|---|
lite | ⚡⚡⚡⚡⚡ | Lightning fast (<30s). UI loads immediately, dependencies install in background via lazy loading |
image | ⚡⚡⚡⚡ | Pre-built images. Docker Hub / LXD / QCOW2 for instant deployment |
install | ⚡⚡ | Standard (2-5 min). Complete setup with verification — default mode |
test | ⚡⚡ | CI/CD mode. Headless, runs full test suite, machine-readable output |
expert | ⚡ | Full control. Interactive prompts for every component (Docker/LXD/Podman, MySQL/SQLite/PostgreSQL, etc.) |
bare | 🌩️ | Bare metal server. Manual provisioning with production hardening, systemd services, SSL |
cloud | • | Cloud instance. Instant premium deployment on managed infrastructure |
Lazy Loading (lite mode):
Guided Walkthrough:
📖 See ROADMAP.md for detailed installation mode specifications.
https://silverqueen.pro/install.sh/install/ web installer, focuses on CMS/MVC features only (no sandboxes, no Docker, no system services)oi.silverqueen.pro) for seamless iframe integration{subdomain}.silverqueen.pro/admin/lxc)/admin/hosting)| Version | Date | Description |
|---|---|---|
| v1.0.6 | 2026-01-07 | Ginto Tunnel - Expose to Web |
| v1.0.5 | 2026-01-07 | OpenWebUI Native Support |
| v1.0.4 | 2026-01-06 | Hosting DNS Management |
| v1.0.3 | 2026-01-05 | Docker architecture change |
| v1.0.2 | 2026-01-02 | Panda Search |
| v1.0.1 | 2025-12-26 | LXC Manager improvements |
| v1.0.0 | 2025-12-21 | Initial release |
See CHANGELOG.md for full release notes and version history.
MIT License - see LICENSE for details.
1,045 commits
PHP
62.7%
JavaScript
26.2%
Shell
3.8%
Hack
2.1%
CSS
2.0%
Python
1.6%
HTML
1.6%
✅ Agentic OS-aware Intention Programming Technology
22
stars
1,045
commits
PHP
primary language
Sep 3, 2026
updated
🐘 A PHP/Composer Project — Built with PHP 8.3, managed via Composer, following modern PSR standards.
A powerful local AI Agent that runs entirely on your machine. Works with OpenAI-compatible APIs and leverages the fastest inference engines on the planet: Groq and Cerebras.
https://github.com/user-attachments/assets/62220ea5-453b-4774-b13a-1cca89f728ff
Left: Ginto AI in action. Right: Multi-provider model selection supporting Ollama, Groq, Cerebras, OpenAI, and local llama.cpp models — all from a unified interface.
Left: Syntax-highlighted code blocks with copy, save, and live preview. Right: Full LaTeX/KaTeX math rendering for equations and formulas.
Left: Interactive web console with full terminal emulation for sandbox access. Right: Proxmox-style LXC/LXD admin interface for container and image management.
Left: DNS Zone Manager with PowerDNS integration — full support for A, AAAA, CNAME, MX, TXT, NS, SRV, CAA, and SOA records. Right: Server Hosting Panel with system stats, service management, database provisioning, and firewall controls.
Left: Network Dashboard with 4 network modes (NAT, Bridge, MACVLAN, IPVLAN) — Right: Featuring Cerebras & Groq with Ollama & llama.cpp API support.
Left: VS Code Monaco Editor with integrated file explorer for sandbox files. Right: VNC remote desktop access for graphical sandbox environments.
Left: Live code preview for HTML, CSS, and JavaScript. Right: Agent Mode with autonomous multi-step task execution.
Left: AI-powered web search with LightPanda browser engine — real-time search during chat. Right: Search results with collapsible activity timeline and source citations.
Left: OpenWebUI embedded in Ginto AI's universal iframe modal with minimize, maximize, and fullscreen controls. Right: Full-screen view with stacked minimized tabs for Console and OpenWebUI running simultaneously.
Note: OpenWebUI runs at
oi.silverqueen.pro(same-origin subdomain) for seamless iframe integration with shared localStorage and authentication.
This project's web UI draws inspiration from Open WebUI, Ollama, and llama.cpp WebUI — pioneering projects that shaped the local AI landscape.
Historical note: The author contributed discussions, ideas, code, and documentation to Open WebUI's early development, including the Apache configuration guide. That era remains a fond example of focused, community-driven open-source collaboration. Ginto AI carries forward that spirit: simplicity, productivity, and respect for the user's machine.
The sandboxing architecture is inspired by Anthropic Claude's and OpenAI's approach to isolated code execution in agentic pipelines — enabling safe, contained tool use while preserving the power of autonomous task completion. The LXC/LXD containerization and virtualization layer draws from Proxmox VE's proven infrastructure model, extended with first-class support for horizontal server scaling.
The Code Editor uses VS Code's Monaco Editor on desktop with an integrated File Explorer, and CodeMirror on mobile for the sandbox view. This is a unique differentiator from other popular AI web UIs — none offer a built-in code editor. Users simply click "My Files" to activate the full editor mode, seamlessly blending file management with code editing in a single interface.
The "My Files" interface follows the familiar Microsoft Windows file management paradigm — together, these form a cohesive blend of battle-tested technologies.
web_fetch/image tool/imagegen with streaming events$...$ inline, $$...$$ display){subdomain}.silverqueen.pro*.silverqueen.pro routes to frp vhost
Left: Creating a public tunnel to expose local OpenWebUI to the internet. Right: Active tunnel with public subdomain URL ready to share.
composer.json| Provider | Type | Notable Models |
|---|---|---|
| Groq | OpenAI-compatible | Llama 3.3 70B, DeepSeek R1, Llama 4 |
| Cerebras | OpenAI-compatible | Ultra-fast inference |
| OpenAI | Native | GPT-4o, o1-preview |
| Anthropic | Native | Claude Sonnet 4, Claude Opus |
| Together AI | OpenAI-compatible | Llama 3.1, Qwen 2.5 |
| Fireworks AI | OpenAI-compatible | Llama 3.1, Mixtral |
Recommended Reasoning Model: GPT-OSS - The most obedient and capable reasoning model tested so far.
You are free to swap out the Vision Model and Reasoning Model with any Huggingface GGUF that is compatible with llama.cpp. Simply download your preferred model and configure it in your environment.
| Platform | Core AI Agent | Sandbox (LXD) | Sandbox (Docker) | Notes |
|---|---|---|---|---|
| Ubuntu/Debian | ✅ Full | ✅ Full | ✅ Full | Recommended |
| Fedora/RHEL | ✅ Full | ✅ Full | ✅ Full | Tested |
| Windows (WSL2) | ✅ Full | ✅ Full | ✅ Full | Requires systemd + LXD or Docker |
| macOS | ✅ Docker | ❌ No LXD | ✅ Full | Use Docker mode |
| Docker | ✅ Full | N/A | ✅ Full | See Docker Installation Mode |
Ginto AI fully supports Windows via WSL2 with Ubuntu. Both the core AI agent and the LXD sandbox environment work correctly.
Prerequisites:
Enable systemd in WSL2 - add to /etc/wsl.conf:
[boot]
systemd=true
Then restart WSL: wsl --shutdown from PowerShell.
Upgrade Ubuntu to the latest LTS (required for LXD snap):
sudo apt update && sudo apt upgrade -y
sudo do-release-upgrade
Install LXD via Snap (apt package is outdated in WSL):
sudo snap install lxd
sudo lxd init --auto
sudo usermod -aG lxd $USER
# Log out and back in for group membership to take effect
Run the installer as your normal user (not root directly):
cd ~/silverqueen.pro
sudo ./run.sh install
--skip sdcpu)If you need to re-run the installer on a system that already has Ginto installed — e.g. to change your domain, TLS email, or database — always clear the install checkpoint first. Otherwise the installer may resume from a stale checkpoint left by a previous run (for example, if an earlier run failed partway through) and silently skip steps like the domain/email prompt.
# 1. Clear any leftover checkpoint/config from a previous run
sudo bash ./run.sh reset
# Destructive (if you're sure you want to wipe out everything) — clears checkpoints AND drops the database, with a typed confirmation
sudo ./run.sh reset --wipe-db
# 2. Re-run the installer (skip SDCPU image generation if you don't need it)
sudo ./run.sh install --skip sdcpu
When prompted, choose:
2. Fresh install - Remove all and reinstall from scratch
This clears checkpoints, backs up and removes your existing .env
(saved as .env.bak.<timestamp> in the project root — delete it once
you've confirmed the new install works and copied out anything you
still need, like old API keys), and walks you through the full
configuration flow again, including:
localhost) or Live (your own domain with HTTPS)Some steps (PowerDNS, in particular) can leave a stale checkpoint if
they fail. If a re-run seems to skip prompts it should be asking, or
seems to silently jump to a later step, always run reset first:
sudo bash bin/gintoai.sh reset
This is safe to run anytime — it only clears .install_checkpoint and
.install_config, never your actual .env, database, or installed
packages.
--skip sdcpu — skip AI image generation (SDCPU), ~2GB and several
minutes of install time--skip powerdns — skip the PowerDNS authoritative DNS server
(only needed if you're hosting DNS zones through Ginto)--skip sdcpu,powerdnsExample, full fresh reinstall without SDCPU or PowerDNS:
sudo bash bin/gintoai.sh reset
sudo ./run.sh install --skip sdcpu,powerdns
One-liner install (recommended):
curl -fsSL https://silverqueen.pro/install.sh | sh
This will clone the repo to ~/silverqueen.pro and run the full installer automatically.
Or clone manually:
cd ~
git clone https://github.com/oliverbob/silverqueen.pro.git
cd silverqueen.pro
sudo ./run.sh install
This runs ./bin/gintoai.sh which handles:
The installer has resume capability - if interrupted, simply run it again to continue from where it left off.
./run.sh start
Access the web UI at http://localhost:8000 (or your configured domain).
After the main installation, the web UI will guide you to optionally set up the sandbox environment for isolated code execution:
./bin/ginto.sh init
This runs ./bin/ginto.sh which sets up:
📖 See docs/sandbox.md for detailed sandbox architecture, diagrams, and the collision-free IP routing algorithm.
silverqueen.pro/
├── run.sh # Main entry point
├── install.sh # One-line installer
├── docker-compose.yml # Docker sandbox services only
├── bin/
│ ├── gintoai.sh # Core installation script
│ ├── ginto.sh # Sandbox management script
│ └── ... # Other utilities
├── src/
│ ├── Controllers/ # API and admin controllers
│ ├── Core/ # LLM providers and clients
│ ├── Handlers/ # MCP tool handlers (AgentTools, DevTools, etc.)
│ ├── Helpers/ # Utilities and sandbox management
│ ├── Models/ # Data models
│ ├── Views/ # PHP view templates (admin, hosting, etc.)
│ └── Routes/ # FastRoute definitions
├── public/ # Web root (front controller)
├── tools/ # MCP servers and utilities
│ ├── groq-mcp/ # Groq MCP server
│ ├── paypal-mcp/ # PayPal integration
│ ├── sandbox-proxy/ # Node.js reverse proxy
│ └── terminal-server/ # Terminal WebSocket server
├── docker/ # Docker build files
│ ├── sandbox/ # Sandbox container images
│ └── ... # Other Docker configs
├── database/ # SQL migrations
├── docs/ # Documentation
└── config/ # Configuration files
Create a .env file with your API keys:
# LLM Provider (auto-detected if not set)
LLM_PROVIDER=groq
# API Keys (set the ones you need)
GROQ_API_KEY=your_groq_api_key
CEREBRAS_API_KEY=your_cerebras_api_key
OPENAI_API_KEY=your_openai_api_key
ANTHROPIC_API_KEY=your_anthropic_api_key
# Database (auto-configured during install)
DB_HOST=localhost
DB_NAME=ginto
DB_USER=ginto
DB_PASS=your_db_password
If LLM_PROVIDER is not set, the system detects based on available API keys in this order:
| Command | Description |
|---|---|
./run.sh install | Install all dependencies (requires sudo) |
./run.sh start | Start the web server and services |
./run.sh stop | Stop all running services |
./run.sh status | Show status of all services |
./bin/ginto.sh init | Initialize sandbox environment |
./bin/ginto.sh create <name> | Create a new sandbox |
./bin/ginto.sh list | List all sandboxes |
./bin/ginto.sh shell <name> | Open shell in sandbox |
Ginto uses LXD containers with Proxmox-style security hardening to safely allow nesting (Docker/LXC inside containers) while protecting the host.
| Feature | Status | Implementation |
|---|---|---|
| Unprivileged Containers | ✅ | security.privileged=false |
| UID Namespace Isolation | ✅ | security.idmap.isolated=true |
| Nesting Enabled | ✅ | security.nesting=true with interception |
| Mount Syscall Interception | ✅ | Whitelist: ext4,tmpfs,proc,sysfs,cgroup,overlay |
| Device Node Interception | ✅ | security.syscalls.intercept.mknod=true |
| Resource Limits | ✅ | 2 CPU, 1GB RAM, 200 processes |
| Kernel Module Loading | ✅ Blocked | linux.kernel_modules="" |
| Command Filtering | ✅ | SandboxSecurity.php blocks dangerous commands |
If your server uses UFW, LXD bridge traffic must be allowed for containers to get IP addresses.
The ginto.sh init command automatically configures UFW if it detects UFW is active. However, if you need to configure it manually:
# Allow LXD bridge traffic (required for container networking)
sudo ufw allow in on lxdbr0
sudo ufw allow out on lxdbr0
sudo ufw route allow in on lxdbr0
sudo ufw route allow out on lxdbr0
Application logs are located at:
../storage/logs/ginto.log
(One level up from the project directory, at /home/<user>/storage/logs/ginto.log)
The Feistel-based IP routing wasn't built for today—it was designed for datacenter-scale AI orchestration.
Imagine a datacenter running billions of autonomous AI agents, each in its own isolated sandbox:
QUANTUM AI DATACENTER
+---------------------------------------------------------------+
| |
| Agent Swarm: 4,294,967,296 unique sandboxes |
| IP Space: 1.0.0.1 --> 255.255.255.254 (full IPv4) |
| Routing: O(1) - instant, no database, no collisions |
| |
| +-------+ +-------+ +-------+ +-------+ |
| |Agent-1| |Agent-2| |Agent-3| ... |Agent-4B| |
| |1.0.0.1| |142.87 | |15.8.77| |254.254 | |
| +-------+ +-------+ +-------+ +-------+ |
| | | | | |
| +---------+----------+------------------+ |
| | |
| +------+------+ |
| | FEISTEL | SHA256 --> Permute --> IP |
| | ROUTER | ~1 microsecond per lookup |
| +-------------+ |
| |
| No Redis. No database. No collisions. Pure math. |
+---------------------------------------------------------------+
| Traditional Routing | Feistel Routing |
|---|---|
| Database lookup per request | Pure computation |
| O(log n) or O(n) scaling | O(1) constant time |
| Collision risk with hashing | Bijective = zero collisions |
| Redis/DB becomes bottleneck | No external dependencies |
| ~1-10ms per lookup | ~1μs per lookup |
When quantum computers orchestrate agent swarms:
The IP_PERMUTATION_KEY can be derived from quantum-resistant algorithms (Kyber, Dilithium), ensuring routing remains secure post-quantum.
# Full 32-bit mode (datacenter scale)
unset LXD_NETWORK_PREFIX
# Subnet mode (local /24 network)
export LXD_NETWORK_PREFIX=10.166.3
📖 See docs/sandbox.md for the complete Feistel algorithm and architecture diagrams.
Status: ✅ Implemented — Docker mode provides a fully containerized deployment that works on Linux, macOS, and Windows.
Docker mode allows you to run Ginto AI entirely in containers, with optional Docker-based sandboxes that replace LXD for cross-platform compatibility.
One-liner install:
curl -fsSL https://silverqueen.pro/install.sh | sh
Then choose option 2) docker when prompted for installation mode.
Or manual setup:
# Clone the repository
git clone https://github.com/oliverbob/silverqueen.pro.git
cd silverqueen.pro
# Copy and configure environment
cp docker/.env.example .env
nano .env # Add your API keys
# Start all services
docker compose up -d
# View logs
docker compose logs -f
Access the web interface at http://localhost
┌───────────────────────────────────────────────────────────────┐
│ Host / LXC / LXD Container │
├───────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Caddy │ │ PHP-FPM │ │ WebSocket │ │
│ │ :80/443 │───▶│ :9000 │ │ :8080 │ │
│ │ │ │ (Ginto AI) │ │ (Ratchet) │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ MariaDB │ │ Redis │ │ PowerDNS │ │
│ │ :3306 │ │ :6379 │ │ (optional) │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ Docker (sandboxes only) │ │
│ ├─────────────────────────────────────────────────┤ │
│ │ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │Sandbox Proxy│ │Terminal Srv │ │ │
│ │ │ :3000 │ │ :3001 │ │ │
│ │ └─────────────┘ └─────────────┘ │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ ┌─────────────────────────────────────────┐ │ │
│ │ │ User Sandbox Containers │ │ │
│ │ │ Network: 172.30.0.0/16 │ │ │
│ │ └─────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────┘ │
│ │
└───────────────────────────────────────────────────────────────┘
# Start/stop main application (systemd)
sudo systemctl start ginto
sudo systemctl stop ginto
sudo systemctl status ginto
# View application logs
journalctl -u ginto -f
# Start/stop Docker sandbox services
docker compose up -d
docker compose down
docker compose logs -f
# Database access (runs on host)
mysql -u ginto -p ginto
# Restart PHP-FPM after code changes
sudo systemctl restart php8.3-fpm
| Mode | Target Platform | Main Stack | Sandboxes | Complexity |
|---|---|---|---|---|
| Native mode | Linux | Host | LXD | Low |
| Docker mode | Linux | Host | Docker | Low |
| Feature | Docker Sandboxes | LXD Sandboxes |
|---|---|---|
| Platform | Linux, macOS, Windows | Linux only |
| Isolation | Container-level | VM-level (optional) |
| Setup | Automatic | Requires ginto.sh init |
| IP Allocation | Same Feistel algorithm | Same Feistel algorithm |
| Performance | Excellent | Excellent |
| Nested Containers | Supported (DinD) | Supported (nested LXD) |
| Variable | Description | Default |
|---|---|---|
SANDBOX_MODE | docker, lxd, or auto | docker |
DOCKER_SANDBOX_SUBNET | Subnet for sandboxes | 172.30.0.0/16 |
IP_PERMUTATION_KEY | Secret for IP allocation | (auto-generated) |
📖 See docker/README.md for complete Docker documentation.
Ginto AI includes a worldwide geographic database powered by GeoNames.org (Creative Commons Attribution 4.0). This enables:
After installation, import geographic data using the CLI tool:
# Import Philippines (42,000+ barangays, ~5MB download)
php bin/geo_import.php PH
# Import multiple countries
php bin/geo_import.php PH,US,JP
# Import ALL countries (~12M records, ~400MB download)
php bin/geo_import.php all
# Check import status
php bin/geo_import.php --status
# Re-import (force overwrite)
php bin/geo_import.php PH --force
geo_places table — Stores the complete GeoNames dataset (populated places + administrative divisions)barangays table — Active registered zones used by sellers and delivery systembarangays first; if few results, falls back to geo_places (FULLTEXT search)barangaysThe installer (bin/gintoai.sh) automatically imports PH data during setup. To configure which countries to import, set in .env:
GEO_COUNTRIES=PH # Default: Philippines only
GEO_COUNTRIES=PH,US,JP # Multiple countries
GEO_COUNTRIES=all # All countries (large)
A (administrative) and P (populated place) feature classes are importedgeo_places, geo_admin1, geo_import_logThe ./install.sh script will support multiple installation modes:
| Mode | Speed | Description |
|---|---|---|
lite | ⚡⚡⚡⚡⚡ | Lightning fast (<30s). UI loads immediately, dependencies install in background via lazy loading |
image | ⚡⚡⚡⚡ | Pre-built images. Docker Hub / LXD / QCOW2 for instant deployment |
install | ⚡⚡ | Standard (2-5 min). Complete setup with verification — default mode |
test | ⚡⚡ | CI/CD mode. Headless, runs full test suite, machine-readable output |
expert | ⚡ | Full control. Interactive prompts for every component (Docker/LXD/Podman, MySQL/SQLite/PostgreSQL, etc.) |
bare | 🌩️ | Bare metal server. Manual provisioning with production hardening, systemd services, SSL |
cloud | • | Cloud instance. Instant premium deployment on managed infrastructure |
Lazy Loading (lite mode):
Guided Walkthrough:
📖 See ROADMAP.md for detailed installation mode specifications.
https://silverqueen.pro/install.sh/install/ web installer, focuses on CMS/MVC features only (no sandboxes, no Docker, no system services)oi.silverqueen.pro) for seamless iframe integration{subdomain}.silverqueen.pro/admin/lxc)/admin/hosting)| Version | Date | Description |
|---|---|---|
| v1.0.6 | 2026-01-07 | Ginto Tunnel - Expose to Web |
| v1.0.5 | 2026-01-07 | OpenWebUI Native Support |
| v1.0.4 | 2026-01-06 | Hosting DNS Management |
| v1.0.3 | 2026-01-05 | Docker architecture change |
| v1.0.2 | 2026-01-02 | Panda Search |
| v1.0.1 | 2025-12-26 | LXC Manager improvements |
| v1.0.0 | 2025-12-21 | Initial release |
See CHANGELOG.md for full release notes and version history.
MIT License - see LICENSE for details.
1,045 commits
PHP
62.7%
JavaScript
26.2%
Shell
3.8%
Hack
2.1%
CSS
2.0%
Python
1.6%
HTML
1.6%