cmf built on python 3, tornado, and mongodb

View project onGitHub


content management framework built on python 3, tornado, and mongo. this is the RESTful backend and is not intended to be exposed to the public.

idea behind this?

well, I wanted something that handles different entity types individual of each other. for example, I wanted to query for a activity entity type that would provide me access to a status attribute that could be manipulated by a frontend application anyway I see fit. Kind of like Drupal's custom field attributes, or Wordpress' custom advanced fields. Obviously, with a smaller footprint and entities encoded in json so I could easily write any frontend I wanted as long as it knew what json was. Im sure this has been done million times over but I was bored.

some things I want to implement:

  • entity constraints
  • mongo's replication features
  • entity helpers/validators

some things that shouldnt be here:

  • authentication - its not intended to be public
  • entity dependencies on each other
  • a bear


python >= 3.3.2, mongo, <3


git clone
cd cage
pip install -r requirements.txt

Run in debug mode (autoreload enabled)

./claw --debug

Single instance, increased logging, and autoreload during changes.

Run in production


This will run multiple instances equal to your num of cpus. Autoreload is not available in this mode.


There's really nothing to "view" in a browser, but the default port is 9000 so you could visit http://localhost:9000 if you're feeling squirrely.


I like nginx so use that with proxy_pass, look in scripts/deploy-post for an example. Or you're own proxy server that'll handle a cluster of cage instances.


(c) 2011-2013 Adam Stokes