Cute Magick is a self-hosted, Git-backed website environment with built-in infinite undo.
It's for people who want to build real websites—but don't want to fight platforms, config, and SaaS billing just to experiment, learn, or keep infinite projects alive.
You get a real server, real files, real URLs, and the ability to rewind your site's entire history at any time.
📚 Full documentation: https://pixelswithin.notion.site/Cute-Magick-Docs-2fdb91326d968024b11cc40c73a18e90
Cute Magick is open source. You can run it anywhere Docker runs. It does not phone home and does not require any external service to function.
You need:
- Docker
- a terminal
- ~5 minutes
docker run -p 3000:3000 -v $(pwd)/cutemagick:/app/data ghcr.io/pinkhairs/cutemagick:mainThen copy .env.example to .env and fill in those details, specifically JWT_SECRET, LOGIN_EMAIL, and PASSWORD (bcrypt hash). Open localhost:3000/admin and log in.
Basic requirements:
- 512 MB RAM (1 GB recommended)
- ~1 GB disk space
- any CPU from the last decade
A Raspberry Pi 4 can run it. The cheapest VPS is usually overkill. Your laptop won't notice it's running.
📖 See the docs for VPS deployment, reverse proxy setup, and configuration.
The hosted version gives you everything above — plus automatic backups, SSL, and zero maintenance. You're up in under a minute.
Cute Magick starts from a simple idea:
Your computer is already a server, and the web is already accessible.
Cute Magick makes that feel true again.
It gives you a place to:
- create and run websites immediately
- use HTML, CSS, JavaScript, PHP, Python, Node, Lua, Bash
- experiment without fear of breaking things
- time-travel through every change you make
Every site has:
- files
- a URL
- a complete history
- a private draft state and a live state
- optional Git remotes for backup
Your sites are just folders and files. Your history is just Git.
If you:
- learned HTML/CSS once and drifted away
- know how to code but hate deployment rituals
- want server power without server culture
- miss personal websites and creative freedom
Cute Magick is designed for you.
It's a workspace where websites are allowed to be unfinished, experimental, and reversible.
A site is just a folder.
Inside:
- HTML, CSS, JS, images
- server-side code (PHP, Python, Node, Lua, Bash)
- SQLite databases
- secrets via environment variables
Each site has infinite versions across a few clear states:
- working (private working files)
- preview#123 (on-demand, disposable private version render)
- live (what the world sees)
Every file save, upload, delete, rename creates a snapshot automatically.
You can:
- preview any past version
- restore old versions without deleting newer ones
- recover deleted files
- undo mistakes from months ago
Under the hood, this is Git—but you don't need to know Git to use it.
Secrets are stored as environment variables in a hidden .env file:
- API keys
- passwords
- tokens
They are:
- not committed to Git
- not included in exports
- injected at runtime only
Each site can use SQLite databases.
SQLite is:
- zero-config
- portable
- stored as files
Databases persist across previews and versions. Your site history rewinds; your data does not—by design.
You can connect a Git remote (GitHub, GitLab, your own server) to:
- back up your site history
- collaborate
- work locally and sync back
Secrets and database contents are never pushed.
Cute Magick stores all persistent state in /data.
Key directories:
/data/sites— your sites and their Git history/data/databases— live SQLite data/data/renders— ephemeral preview output/data/secrets— per-site environment variables/data/keys— generated SSH keys
Everything is transparent. If you understand /data, you understand Cute Magick.
Cute Magick executes server-side code per request.
File extensions determine runtime automatically:
.php→ PHP.py→ Python.js(with shebang) → Node.lua→ Lua.sh→ Bash.html,.css→ served as-is
No configuration. No build step. Just save a file.
Cute Magick favors:
- stacking reversible actions over destructive ones
- explicit version control over auto-deploy
- transparency over abstraction
- ownership over lock-in
You can't permanently break your site. And if you ever want to leave, you can.
If you're using it and have thoughts—especially confusion or friction—that feedback is actively shaping the project, particularly around:
- UX
- docs clarity
- edge cases
- things that felt confusing or "too magical" (read: implicit)
Contact: Diana Lopez — me@diana.nu
