Skip to content
SkyNetCMSPublic

About

AI-Powered Conversational CMS - Build websites through chat

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Repository files navigation

SkyNetCMS

AI-Powered Conversational CMS - Build websites through chat.

Build and Publish License: MIT

Features

  • Conversational website building - Create and modify websites through natural language
  • Single Docker container - Everything you need in one image
  • Choose your LLM - Works with Claude, GPT-4, and other providers
  • No vendor lock-in - Standard HTML/CSS/JS stored in a Git repository
  • Self-hosted - Your data stays on your infrastructure

Quick Start

Pull the image and run:

docker run -d \
  -p 8080:80 \
  -e ADMIN_USER=admin \
  -e ADMIN_PASS=changeme \
  -v skynetcms-data:/data \
  --name skynetcms \
  ghcr.io/skynetcms/skynetcms:latest

Then visit:

First-Time Setup (Alternative)

Run without credentials to use the web-based registration:

docker run -d \
  -p 8080:80 \
  -v skynetcms-data:/data \
  --name skynetcms \
  ghcr.io/skynetcms/skynetcms:latest

Visit http://localhost:8080/sn_admin/ to create your admin account.

Configuration

Variable Required Default Description
ADMIN_USER No* - Admin username
ADMIN_PASS No* - Admin password
SITE_TITLE No SkyNetCMS Site title

*If both ADMIN_USER and ADMIN_PASS are provided, admin is pre-configured. If neither is provided, a registration form will be shown at first access.

Architecture

┌─────────────────────────────────────────────────────────┐
│                   Docker Container                       │
│                                                          │
│   ┌──────────────────────────────────────────────────┐  │
│   │           OpenResty (Nginx + Lua)                │  │
│   │                                                  │  │
│   │    /              /sn_admin/       /sn_admin/oc/ │  │
│   │    │              │                │             │  │
│   │    ▼              ▼                ▼             │  │
│   │  Static       Dashboard        OpenCode         │  │
│   │  Website      (htpasswd)       (AI Chat)        │  │
│   └──────────────────────────────────────────────────┘  │
│                           │                              │
│                           ▼                              │
│                    ┌─────────────┐                       │
│                    │  Git Repo   │                       │
│                    │  /data/     │                       │
│                    └─────────────┘                       │
└─────────────────────────────────────────────────────────┘

How it works:

  1. You chat with AI in the admin panel (/sn_admin/oc/)
  2. AI works in a draft worktree (isolated from live site)
  3. Preview your changes at /sn_admin/dev/ (Dev mode toggle)
  4. When ready, tell the AI to "publish" your changes
  5. Visitors see updates at /

Draft/Publish Workflow

SkyNetCMS protects your live site by separating draft work from production:

URL Purpose
/ Live site - What visitors see (main branch)
/sn_admin/dev/ Preview - See draft changes with live reload
/sn_admin/oc/ AI Chat - Make changes via conversation

Making Changes Safely

  1. Start a session - OpenCode will suggest creating a worktree (isolated branch)
  2. Make changes - Chat with AI to edit your site
  3. Preview - Click the "Dev" toggle to see changes in real-time
  4. Publish - Tell the AI "publish my changes" when ready

Rollback

Changed your mind? The AI automatically creates restore points:

  • Say "rollback to the previous version" to undo a publish
  • All previous states are saved as git tags

Development

Build from Source

git clone https://github.com/SkyNetCMS/SkyNetCMS.git
cd SkyNetCMS
./build.sh

Run Local Build

docker run -d \
  -p 8080:80 \
  -e ADMIN_USER=admin \
  -e ADMIN_PASS=test \
  -v skynetcms-data:/data \
  --name skynetcms \
  skynetcms

View Logs

docker logs -f skynetcms

Stop and Remove

docker stop skynetcms && docker rm skynetcms

Troubleshooting

Dev preview fails / Vite crashes with EMFILE or ENOSPC (inotify)

On resource-constrained hosts the kernel's inotify limit (often 128 by default) can be exhausted by Vite's file watcher, crashing the dev preview at /sn_admin/dev/. The container can only warn about this — max_user_instances is a host kernel setting and is not namespaced, so it cannot be raised reliably from inside an unprivileged container.

Temporary fix (resets on host reboot):

sudo sysctl fs.inotify.max_user_instances=512
sudo sysctl fs.inotify.max_user_watches=524288

Persistent fix:

echo -e "fs.inotify.max_user_instances=512\nfs.inotify.max_user_watches=524288" | \
  sudo tee /etc/sysctl.d/99-inotify.conf
sudo sysctl --system

Documentation

License

MIT License - Use it however you want.

About

AI-Powered Conversational CMS - Build websites through chat

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages