Skip to content


Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Hey! This is Cytoplasm, a simple static blogging-and-other-things generator. Cytoplasm takes some posts and templates and outputs a bunch of HTML files.

Here are some things I think are exciting about it:

  • Cytoplasm makes really portable websites. It just outputs a bunch of HTML files that you can put pretty much anywhere. The build script, cytoplasm, will run anywhere you have Python installed. It's tested in 2.7.2.

  • It's really configurable. Almost everything Cytoplasm does is defined by your site's interpreters and controllers, which live in and _controllers, respectively. You can change anything there; interpreters are just functions with a certain decorator and controllers are just classes that inherit from cytoplasm.controllers.Controller.

  • Cytoplasm sites work really well as Git repositories. New controllers can be installed as git submodules.

  • There's a testing server that automatically rebuilds your site whenever you make a change to it -- cytoplasm serve -r. This makes playing with templates and controllers really simple and painless.

  • Easy deployment to github pages with cytoplasm git-deploy; never worry again about how clumsy using git for generated content is.



Cytoplasm is mostly beta right now. Things might change very frequently and then not at all for a few weeks. Most of the time, though, it works; if you have any questions or problems, ask!

You can install the version on PyPI, which might get a little out of date:

pip install cytoplasm

Or you can install directly from this Git repository:

pip install git+git://


You can start a blank site in an empty directory by running cytoplasm init bare (though note that you must have Git installed for this to work). Cytoplasm will start you with a minimal configuration file at and the blog controller, though you won't have any posts yet.

Posts go in _posts and start with a header that looks like this:

title: An Example Post
date: 2011/12/17
tags: [category1, category2]

cytoplasm build will build your site and put the output in _build.

The first thing you'll want to do after you have some posts is to copy the templates from the blog controller's example templates (_controllers/blog/templates) to a new directory called _templates. In order to tell your blog controller to use these new templates, change in

("blog", ["_posts", "_build/blog", "_controllers/blog/templates"]),


("blog", ["_posts", "_build/blog", "_templates"]),

Mess with your templates to your heart's content.


Cytoplasm comes with a built-in server for testing things locally. To use it, cytoplasm serve. To get Cytoplasm to rebuild the site whenever you make a change, cytoplasm serve -r.


For development, you should probably clone this repository and install it with pip install -e .. You can test that you didn't break anything with cytoplasm test.

If you're messing with a controller and there's a Cytoplasm site in the current working directory, you can run all of the controllers' tests with cytoplasm test -c.


A static site generator written in python.







No releases published


No packages published