Sign inSign up

bugfishtm/ai-everything

By bugfishtm

โ€ขUpdated about 20 hours ago

Do everything, music, 3d models, images, videos with a simple claude pro subscription.

Image
Integration & delivery
Machine learning & AI
Developer tools
0

740

bugfishtm/ai-everything repository overview

โ Everything Studio (ai-everything)

A self-hosted creative workspace in one container: music, images, 3D models, video, browser games, Android apps, Windows programs, web apps and WordPress sites, built by an AI coding agent that runs with each user's own AI account.

๐Ÿ“ฆ Source code, issues, releasesgithub.com/bugfishtm/ai-everythingโ 
๐Ÿ“– Documentation with screenshotsbugfishtm.github.io/ai-everythingโ 
๐Ÿ’ฌ SupportGitHub Issuesโ  ยท Discordโ 
๐Ÿ“œ LicenseGNU GPL v3.0

Note

ai-everything is independent open-source software. It is **not affiliated with or endorsed by Anthropic**, OpenAI, Google or the WordPress Foundation. Claude Code is Anthropic's proprietary software and is **not included** in this image. It is downloaded from its official source at the first start and used with each person's own account.

Warning

This software contains code written with the help of AI. Review and test it in an isolated environment before you deploy it. It is provided as-is and you use it at your own risk.

โ ๐Ÿš€ What's inside

  • The Studio website and API (Node.js) on port 8080
  • Its own database (MariaDB, MySQL compatible). Nothing to set up.
  • Text-driven creative tools the AI uses and extends: a DAW (studio-daw), a 3D editor (studio-3d), studio-image, studio-video and studio-stickman
  • Toolchains: Node.js, Python, JDK + Gradle (Android), .NET + mingw-w64 + NSIS (Windows), PHP-FPM + WP-CLI (WordPress), Playwright + Chromium (headless browser)
  • A website server on ports 8081 / 8443 that publishes projects on your own domains, with HTTPS certificates from Let's Encrypt requested and renewed by itself
  • One Linux account per user, sandboxed previews, confined PHP per WordPress site, per-user limits and an admin area

Downloaded at runtime, not part of the image: Claude Code, the other AI agents (OpenAI Codex, Gemini CLI, OpenCode), the Android SDK (after an admin accepts Google's license) and WordPress.


โ ๐Ÿ—’๏ธ Requirements

Platformlinux/amd64 (x86-64)
Memory4 GB minimum, 8 GB or more recommended
DiskAbout 15 GB
InternetRequired at the first start
AI accountEach user's own (Claude subscription or API key, or another AI the admin switched on)

โ ๐Ÿณ Quick start

โ docker run
docker run -d --name ai-everything \
  -p 127.0.0.1:8080:8080 -p 127.0.0.1:8081:8081 -p 127.0.0.1:8443:8443 \
  --shm-size=1g --restart unless-stopped \
  -v studio-data:/data -v studio-db:/var/lib/mysql \
  bugfishtm/ai-everything:latest

Open http://localhost:8080โ . The first account you create becomes the administrator. Then connect your AI under Account & AI.

โ Docker Compose

A ready-to-use docker-compose.yml and .env are below the variable tables: Deploy with Docker Composeโ .

OptionWhy
--shm-size=1gThe headless Chromium needs more shared memory than Docker's 64 MB default.
--stop-timeout 30Gives running AI turns and the database time to shut down cleanly.
--security-opt no-new-privileges:trueNothing inside may gain privileges it was not started with.
--pids-limit 16384A runaway program of one user cannot exhaust the host.

โ ๐Ÿ”Œ Ports

Container portPurpose
8080The Studio website and API.
8081Published websites, games and WordPress sites of projects, chosen by the domain in the request (HTTP).
8443The same websites over HTTPS, with one certificate per domain. Can also serve the Studio itself under STUDIO_DOMAIN.

Bind to 127.0.0.1 for a single computer. On a public server map 80 โ†’ 8081 and 443 โ†’ 8443, set SITES_PORT=80 and SITES_HTTPS_PORT=443, and keep 8080 on 127.0.0.1 (reach the Studio over HTTPS under STUDIO_DOMAIN).


โ ๐Ÿ’พ Volumes

Everything persistent lives in two volumes. They survive updates, container re-creation and docker compose down. Only docker compose down -v or docker volume rm deletes them.

Mount pointSuggested nameContents
/datastudio-dataProjects, the asset library, packs, user home folders (AI sign-ins and settings), runtime downloads (Claude Code, other agents, the Android SDK, WordPress), website certificates and the Studio's internal state.
/var/lib/mysqlstudio-dbThe built-in database: users, projects, settings and one database per WordPress site. Not used when MYSQL_HOST points to an external server.

Use named volumes, not bind mounts from Windows or macOS folders: the Studio sets Linux owners and permissions per user, which those file systems don't keep.

Backups: back up both volumes together, ideally with the container stopped, or use scripts/backup.sh from the repository (database dump + data volume).


โ โš™๏ธ Environment variables

Every variable is optional. Without any, the Studio runs with the defaults below.

โ Website and access
VariableDefaultDescription
APP_NAMEEverything StudioName shown on the website.
PUBLIC_URL(empty)Public address when running behind a reverse proxy or on a domain, e.g. https://studio.example.com. Used for origin checks.
TRUST_PROXYfalsetrue when a reverse proxy (Caddy, nginx, Traefik) sits in front of the Studio.
COOKIE_SECUREautotrue = cookies only over HTTPS, false = never secure, auto = decide per request.
REGISTRATIONclosedopen = anyone who reaches the site may register. closed = admins add users.
APP_SECRET(generated)Encrypts stored keys and certificates and signs preview links. 48+ random characters. Left empty, one is generated at the first start and kept in /data. Never change it afterwards.
โ First administrator

Optional. Without these, the first person who opens the website creates the admin account (from the internet that needs the setup code printed in the container log: docker logs ai-everything | grep "setup code").

VariableDefaultDescription
ADMIN_EMAIL(empty)E-mail of the admin account created at the first start.
ADMIN_USERNAMEadminUser name of that account.
ADMIN_PASSWORD(empty)Password of that account. Use a long one and change it on the website later.
โ AI agents
VariableDefaultDescription
CLAUDE_CODE_VERSIONlatestlatest keeps Claude Code up to date (checked at start and daily). An exact version such as 2.1.319 pins it.
CLAUDE_CODE_AUTO_INSTALLtrueDownload Claude Code from npm at the first start.
CLAUDE_CODE_AUTO_UPDATEtrueKeep it updated.
DEFAULT_PERMISSION_MODEbypassWhat the AI may do without asking in new projects: bypass (autonomous, sandboxed per user), acceptEdits, ask or plan.
DEFAULT_MODEL(empty)Default model alias for everybody (fable, opus, sonnet, haiku). Empty = the account's default.
AGENTS(empty)More AIs switched on at the first start, comma separated: codex,gemini,opencode. Admins can also do this in Admin โ†’ AI providers.
AGENTS_AUTO_UPDATEtrueKeep the other agents updated.
AGENT_IDLE_MINUTES10How long an AI process stays up between messages of a chat.
โ Limits
VariableDefaultDescription
MAX_RUNS_PER_USER2AI runs one user may have at the same time.
MAX_TERMINALS_PER_USER4Open terminals per user.
RUN_TIMEOUT_MINUTES60Longest AI run.
TERMINAL_IDLE_MINUTES30Idle terminals are closed after this time.
UPLOAD_LIMIT_MB500Largest upload.
TRASH_DAYS7Deleted projects stay in the trash this long.
PACK_LIMIT_MB4096Largest pack.
RELEASE_EXPORTS_MB1024Largest exports/ folder kept with a release (versioning).
โ Project servers (Node.js backends)

Projects can run their own Node.js servers (multiplayer, saves, APIs), each as the owner's sandbox user, reachable at <Studio address>/srv/<name>/.

VariableDefaultDescription
SERVICES_ENABLEDtrueAllow project servers.
MAX_SERVICES_PER_USER3Servers per user.
SERVICE_MEMORY_MB512Memory per server.
โ Websites and HTTPS
VariableDefaultDescription
SITES_ENABLEDtruePublish web apps, games and WordPress sites on the website ports.
SITES_PORT8081The port users see for websites over HTTP (set 80 on a public server).
SITES_TLStrueBuilt-in HTTPS with one certificate per domain. false = plain HTTP only (e.g. behind your own proxy).
SITES_HTTPS_PORT8443The port users see for websites over HTTPS (set 443 on a public server).
SITES_HTTPSfalsetrue when your own proxy terminates TLS in front. The built-in HTTPS then switches itself off.
STUDIO_DOMAIN(empty)Serve the Studio itself over HTTPS under this host name (also settable in Admin โ†’ HTTPS).
SITES_BASE_DOMAIN(empty)Every website also gets <name>.<base domain>. Needs a wildcard DNS record. Use a domain of its own, not a subdomain of the Studio's.
MAX_SITES_PER_USER10Websites per user.
SITE_MAX_MB500Largest website.
ACME_EMAIL(empty)Contact e-mail for the certificate authority.
ACME_AGREE_TOS(empty)yes accepts the certificate authority's terms here instead of in Admin โ†’ HTTPS.
ACME_DIRECTORY_URL(empty)Another ACME certificate authority instead of Let's Encrypt.
ACME_ORDERS_PER_HOUR40New certificate orders per hour for the whole Studio.
โ WordPress

Each WordPress project is a real site with its own database and its own PHP, running as the owner's sandbox user. WordPress itself is downloaded from wordpress.org when a site is set up.

VariableDefaultDescription
WORDPRESS_ENABLEDtrueEnable the WordPress area.
MAX_WORDPRESS_PER_USER5WordPress sites per user.
WORDPRESS_MEMORY_MB256PHP memory limit per site.
WORDPRESS_MAX_WORKERS6PHP worker processes per site.
WORDPRESS_UPLOAD_MB64Largest upload in WordPress.
WORDPRESS_IDLE_MINUTES60Stop a site's PHP after this many minutes without visitors (0 = keep running).
WORDPRESS_PHP_HARDENINGtrueA site's PHP can only reach its project folder and has no shell functions.
WORDPRESS_DB_ADMIN_USER(empty)Only with an external database: an account that may create databases and users.
WORDPRESS_DB_ADMIN_PASSWORD(empty)Its password.
โ Android SDK

Installed at runtime into /data, never baked into the image. Normally an admin installs it in Admin โ†’ Android SDK and accepts Google's license there.

VariableDefaultDescription
ANDROID_SDK_ACCEPT_LICENSE(empty)Accepting Google's Android SDK termsโ  for unattended setups.
ANDROID_SDK_AUTO_INSTALLfalseInstall the SDK at the first start.
ANDROID_SDK_PACKAGES(empty)Explicit packages instead of the newest stable ones, e.g. platform-tools platforms/android-36 build-tools/36.0.0.
โ External database (optional)

Leave MYSQL_HOST empty to use the built-in database.

VariableDefaultDescription
MYSQL_HOST(empty)Host of an external MySQL / MariaDB server.
MYSQL_PORT3306Its port.
MYSQL_DATABASEstudioDatabase name.
MYSQL_USERstudioUser name.
MYSQL_PASSWORD(empty)Password.

โ ๐Ÿงฉ Deploy with Docker Compose

Create a folder with these two files, edit .env, then run:

docker compose up -d
docker compose logs -f studio
โ docker-compose.yml
name: ai-everything

services:
  studio:
    image: bugfishtm/ai-everything:latest
    restart: unless-stopped
    ports:
      # the Studio website
      - "${STUDIO_BIND:-127.0.0.1}:${STUDIO_PORT:-8080}:8080"
      # published websites of projects (HTTP and HTTPS)
      - "${SITES_BIND:-127.0.0.1}:${SITES_PORT:-8081}:8081"
      - "${SITES_BIND:-127.0.0.1}:${SITES_HTTPS_PORT:-8443}:8443"
    env_file: .env
    environment:
      # the ports users see in website addresses (the container ports above stay 8081/8443)
      SITES_PORT: ${SITES_PORT:-8081}
      SITES_HTTPS_PORT: ${SITES_HTTPS_PORT:-8443}
    volumes:
      - studio-data:/data
      - studio-db:/var/lib/mysql
    # headless Chromium needs more shared memory than Docker's 64 MB default
    shm_size: "1gb"
    # time for AI runs and the database to shut down cleanly
    stop_grace_period: 30s
    security_opt:
      - no-new-privileges:true
    pids_limit: ${STUDIO_PIDS_LIMIT:-16384}
    logging:
      driver: json-file
      options:
        max-size: "20m"
        max-file: "5"

volumes:
  studio-data:
  studio-db:
โ .env (local computer or home network)
# --- Ports -------------------------------------------------------------------
# 127.0.0.1 = only this computer, 0.0.0.0 = reachable from your network
STUDIO_BIND=127.0.0.1
STUDIO_PORT=8080
SITES_BIND=127.0.0.1
SITES_PORT=8081
SITES_HTTPS_PORT=8443

# --- Website -----------------------------------------------------------------
APP_NAME=Everything Studio
REGISTRATION=closed

# --- First admin (optional: otherwise the first person to register is admin) --
ADMIN_EMAIL=
ADMIN_USERNAME=admin
ADMIN_PASSWORD=

# --- AI ----------------------------------------------------------------------
CLAUDE_CODE_VERSION=latest
DEFAULT_PERMISSION_MODE=bypass
DEFAULT_MODEL=
# more AIs switched on at the first start, e.g. codex,gemini,opencode
AGENTS=

# --- Limits ------------------------------------------------------------------
MAX_RUNS_PER_USER=2
MAX_TERMINALS_PER_USER=4
MAX_SERVICES_PER_USER=3
MAX_SITES_PER_USER=10
MAX_WORDPRESS_PER_USER=5
UPLOAD_LIMIT_MB=500
STUDIO_PIDS_LIMIT=16384

Then open http://localhost:8080โ .

โ .env (public server with HTTPS)

Use the same docker-compose.yml. Point the DNS record of STUDIO_DOMAIN at the server and open ports 80 and 443 in the firewall.

# --- Ports: websites and HTTPS on 80/443, the Studio's own port stays local ----
STUDIO_BIND=127.0.0.1
STUDIO_PORT=8080
SITES_BIND=0.0.0.0
SITES_PORT=80
SITES_HTTPS_PORT=443

# --- The Studio's own address (served over HTTPS on port 443) -----------------
STUDIO_DOMAIN=studio.example.com
PUBLIC_URL=https://studio.example.com
COOKIE_SECURE=true

# --- Let's Encrypt -------------------------------------------------------------
[email protected]
ACME_AGREE_TOS=yes

# --- First admin -----------------------------------------------------------------
[email protected]
ADMIN_USERNAME=admin
ADMIN_PASSWORD=
REGISTRATION=closed

# --- Optional: every website gets <name>.apps.example.com (wildcard DNS record) ---
SITES_BASE_DOMAIN=

# --- Limits worth a look on a shared server -------------------------------------
MAX_RUNS_PER_USER=2
MAX_SERVICES_PER_USER=3
MAX_SITES_PER_USER=10
MAX_WORDPRESS_PER_USER=5
STUDIO_PIDS_LIMIT=16384

Wait for certificate for studio.example.com issued in the log, then open https://studio.example.com. Any variable from the tables above can be added to .env.


โ ๐ŸŒ Public server

docker run -d --name ai-everything \
  -p 127.0.0.1:8080:8080 -p 80:8081 -p 443:8443 \
  --shm-size=1g --restart unless-stopped \
  -e STUDIO_DOMAIN=studio.example.com \
  -e PUBLIC_URL=https://studio.example.com \
  -e SITES_PORT=80 -e SITES_HTTPS_PORT=443 \
  -e COOKIE_SECURE=true \
  -e [email protected] -e ACME_AGREE_TOS=yes \
  -v studio-data:/data -v studio-db:/var/lib/mysql \
  bugfishtm/ai-everything:latest
  1. DNS: an A record (and AAAA for IPv6) for the Studio's host name. Optionally a wildcard record on a separate domain (*.apps.example.com) together with SITES_BASE_DOMAIN.
  2. Firewall: ports 80 and 443 open. Port 8080 stays on the server (use an SSH tunnel for maintenance).
  3. Watch the log for certificate for studio.example.com issued, then open https://studio.example.com.

Behind your own reverse proxy instead: route the Studio's host name to 8080 and every other host name to 8081, pass Host, X-Forwarded-* and WebSocket upgrades, and set TRUST_PROXY=true, PUBLIC_URL and SITES_HTTPS=true. Full guide: Server & HTTPSโ .


โ ๐Ÿ”„ Updating

docker pull bugfishtm/ai-everything:latest
docker stop ai-everything && docker rm ai-everything
# run the same docker run command again โ€” the volumes keep all data

With Compose: docker compose pull && docker compose up -d.


โ ๐Ÿฉบ Health check

The image has a built-in health check on http://127.0.0.1:8080/api/health. The first start can take a minute or two while the database initializes and Claude Code is downloaded.


  • Claude Code is not in this image. It is downloaded from the official npm package at the first start and used by each person with their own account under Anthropic's termsโ . The Studio never stores subscription credentials.
  • Other AIs, the Android SDK and WordPress are downloaded unmodified from their official sources; their own licenses and terms apply.
  • If you run the Studio for other people, the providers' terms for operators apply to you.
  • Third-party software in the image and its licenses: docs/LICENSES.mdโ .

What you make is yours. The GPL-3.0 covers the Studio itself, not the songs, pictures, models, games, apps and sites you create with it.


๐ŸŸ Bugfish ยท GitHubโ  ยท Documentationโ  ยท Security issues: [email protected]โ 

Tag summary

Content type

Image

Digest

sha256:8b4a7cc2bโ€ฆ

Size

2 GB

Last updated

about 20 hours ago

docker pull bugfishtm/ai-everything