Describe your site. An agent builds it.
Project description
cuttlefish
Describe your site. An agent builds it.
An agentic static site generator for personal sites and portfolios —
you write the content, agents handle the look and layout.
cuttlefish has the building blocks you'd expect from a static site generator — content types, taxonomies, templates — and one deliberate omission: there's no theme to install, no CSS framework, and no asset pipeline. Your whole site is a handful of plain-text files and one stylesheet you never open by hand.
Want a minimal layout with a teal accent? A two-column projects grid? Bigger headings? Describe it, and a coding agent edits the files to match. The look of your site is something you talk your way into, not something you hand-tune.
How it works
Every site ships an AGENTS.md: the agent's source of truth for the file map, the config.toml schema, the templating rules, and the styling conventions. Point a coding agent at it and say what you want —
Give the site a teal accent, put projects in a two-column grid, and make the headings bigger.
— and it edits the config, templates, and stylesheet to match. You review a diff, not a config dialect; there are no theme docs or class names to memorize. Then ctf build renders everything to public/, and ctf serve previews it live.
Quick start
Requires Python 3.11+.
pipx install cuttlefish-ssg
ctf init my-site
cd my-site
ctf build # render to public/
ctf serve # live-reloading preview at http://localhost:8000
Features
- Describe, don't hand-tune: No themes, no CSS framework, no build step — one plain stylesheet an agent edits to match what you describe.
- Agent-first: Every site ships an
AGENTS.mddocumenting its schema and conventions, so an agent can author and style it reliably. - Rebuild fast: Incremental builds cache the last render and rebuild only what changed — editing a post's body never touches your listing pages.
- Everything else you'd expect: Content types, taxonomies, Markdown with TOML front matter, standalone pages, pretty permalinks with pagination, a
sitemap.xml, and a live-reloading dev server.
Usage
| Command | What it does |
|---|---|
ctf init <dir> |
Scaffold a new site into <dir>. |
ctf build [root] |
Render the site to public/. Add --force to ignore the cache, --drafts to include drafts. |
ctf serve [root] |
Preview at http://localhost:8000, live-reloading on change. Drafts on by default; set --port to change the port. |
root defaults to the current directory, so you can run ctf build and ctf serve from inside your site.
Documentation
Visit https://acaibowlz.github.io/cuttlefish/ to view the full documentation.
License
Released under the MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cuttlefish_ssg-0.1.0.tar.gz.
File metadata
- Download URL: cuttlefish_ssg-0.1.0.tar.gz
- Upload date:
- Size: 1.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
53c3c975abcc12ba940d715cf970fe5bf2c216af2407e58b97b20cfb7849137c
|
|
| MD5 |
f9a87afb0cc6e71faf429bb4930f4970
|
|
| BLAKE2b-256 |
d3b78a4f3e84beae76aaf60ce9eedcb7bcb96698ca2755c494d3becf96a73762
|
File details
Details for the file cuttlefish_ssg-0.1.0-py3-none-any.whl.
File metadata
- Download URL: cuttlefish_ssg-0.1.0-py3-none-any.whl
- Upload date:
- Size: 68.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d16d035d75f94cffcf4cf3874ee30debd78b54a654176c3ae2fbf7d7b937713
|
|
| MD5 |
33625c4e47dd3a26e4dc486b0bd2eb0a
|
|
| BLAKE2b-256 |
1b5f341b419954f9841f8ebec541ebe4624860e728731371d78e87971a49f184
|