This blog didn’t start with a IDE or a terminal. It started with a conversation.
I sat down with Crush — an agentic AI coding assistant that runs in the CLI — and described what I wanted: a personal blog called Innerspace, hosted on thylong.com, built with Hugo and the monochrome theme, served by Redbean, containerized with Docker, and deployed to a k3s cluster.
Why this stack, specifically? As a Go developer, I’ve long admired spf13’s work — Hugo is a remarkable piece of engineering, and choosing it felt natural. Similarly, I went with Redbean from the start because Justine’s work on the Cosmopolitan project is genuinely amazing. The idea of a single binary that runs anywhere, no runtime needed — that resonates with how I think about infrastructure. I plan to host this blog somewhere else at some point, but more on that in a later post.
A word about the languages on this blog: French is my native language, I’m more or less bilingual in English, and I’m currently learning Chinese intensively. Writing in three languages is part of the exercise — a way to practice, to think in different shapes.
What will you find here? Personal thoughts and deep dives into topics I’m passionate about: creativity, history, software engineering, infrastructure, historiography, art, minimalism, and a slight touch of geopolitics.
Crush did the rest. Here’s what that looked like.
The Stack
| Layer | Tool | Why |
|---|---|---|
| Static site generator | Hugo Extended v0.146+ | SCSS support for the monochrome theme |
| Theme | hugo-theme-monochrome | Minimal, fast (~5KB gzipped CSS), dark mode, search |
| Web server | Redbean | Single-binary web server from the Cosmopolitan project |
| Container | Docker (multi-stage) | Hugo builds in stage 1, Redbean runs on scratch in stage 2 |
| Orchestration | k3s | Lightweight Kubernetes, TLS handled at the cluster level |
What Crush Did
Crush operated as a fully autonomous agent. I gave it a high-level plan, and it:
- Scaffolded the Hugo site —
hugo new site, added the monochrome theme as a git submodule - Configured
hugo.toml— baseURL, theme, dark mode, search, TOC, SEO, syntax highlighting - Set up multilingual support — 3 languages (English, Français, 中文) with directory-based content organization and a custom
zh.tomli18n file for simplified Chinese (the theme only shipped traditional Chinese) - Created initial content — homepage and a hello-world post in all 3 languages
- Fixed an RSS compatibility issue — the monochrome theme’s RSS template uses
.Site.Author.email, which broke on Hugo v0.160+. Crush overrode the template with a customlayouts/_default/rss.xml - Wrote
build.sh— downloads Redbean from cosmo.zip, runs Hugo, packs the output into the binary asthylong.com - Wrote the
Dockerfile— multi-stage:hugomods/hugo:exts→ Hugo build,debian:bookworm-slim→ Redbean pack,scratch→ final 1-binary image - Created k8s manifests — Deployment with probes, ClusterIP Service, Ingress for thylong.com
- Set up CI/CD — GitHub Actions workflow: build → push to registry →
kubectl rollout restart - Wrote a Makefile —
dev,build,docker-build,deploy,hooks, etc. - Added a pre-commit hook — validates Hugo and Docker builds before allowing a commit
- Updated
PLAN.mdto persist the architecture decisions
Model Details
Crush was running GLM-5.1 Cloud (via Ollama) as its large model, with Claude Haiku 4.5 as the small model. The execution was agentic — Crush planned, searched the codebase, read files, edited files, ran builds, diagnosed errors (like the RSS template breakage), and iterated until everything compiled cleanly. Each decision was made autonomously, with brief progress updates.
The Result
innerspace/
├── hugo.toml # Multilingual config (en/fr/zh)
├── Makefile # Build targets + help
├── PLAN.md # Architecture decisions
├── README.md
├── build.sh # Hugo build + Redbean packing
├── Dockerfile # Multi-stage: Hugo → Redbean on scratch
├── content/
│ ├── en/ # English content
│ ├── fr/ # French content
│ └── zh/ # Chinese content
├── i18n/
│ └── zh.toml # Simplified Chinese translations
├── layouts/_default/
│ └── rss.xml # Custom RSS (Hugo v0.160+ fix)
├── k8s/ # Deployment, Service, Ingress
├── .githooks/pre-commit # Build validation
├── .github/workflows/ # CI/CD
└── themes/
└── hugo-theme-monochrome/
The final build produces 34 pages across 3 languages, all packed into a single Redbean binary that runs on scratch. One binary, zero dependencies, served from k3s.
This very post was the last thing Crush wrote.