Angerwhale - filesystem-based blog with integrated cryptography


Angerwhale is blogging software that reads posts from the filesystem, and determines authorship based on the post's PGP digital signature. These posts can be in a variety of formats (text, wiki, HTML, POD), and new formats can be added dynamically at runtime. Posting comments is also supported, and again, authorship is determined by checking the digital signature.

Features include guaranteed valid XHTML 1.1 output, social tagging, categories, syntax highlighting (see for details), RSS and YAML feeds for every article, comment, tag, and category, nested comments, intelligent caching of everything, space-conserving mini-posts, search-engine (and human!) friendly archiving, a flashy default theme, and lots of other cool stuff.


Trying Angerwhale is pretty simple. Download the tarball from CPAN, and extract it. Then, run

   $ perl Makefile.PL
   $ make
   $ make test

make test will run the test suite to make sure Angerwhale works on your system. You can then run the test server:

   $ perl script/

You'll then be able to connect to http://localhost:3000 and see your blog. There's already a sample post, so that should show up and you should be able to leave a comment or log in.

If all goes well, open up the config file, angerwhale.yml, and customize the options to your heart's content. You specifically might want to set base to some place more convenient than the root/posts directory that ships with Angerwhale.

(There are more config options than those listed; for now grep the source for "config" to find them all. You shouldn't need to change the defaults, though; they're reasonable.)

Playing with Angerwhale a bit

Add a file to the base you set up earlier, and you'll see it rendered as a blog post. Edit it, and watch Angerwhale update the modification time (but preserve the creation time). Sign it, and watch your name show up on the post. Log in (on the login page), and add tags. Create a subdirectory in base, symlink some posts into it, and watch them show up in a new category. Try posting some comments.

There's tons more you can do, so explore the code or join the IRC channel! Enjoy!


Angerwhale is a Catalyst application, so if you'd like to run it in a production environment, check out the Catalyst deployment manual. Basically, you can run it as a FastCGI, mod_perl, or plain CGI.



Lots of things TODO. Patches welcome; but it's best to ask on IRC before you get started. I'll give you a commit bit so you can work at your leisure.

  • Image support. Support loading or RTF documents with embedded images, and then resize them to look nice at web resolution.

  • ACLs. Based on the logged-in user's key, restrict posting or allow them to post. Allow administrators to delete SPAM posts, etc.

  • More tests. Test coverage is pretty good (85% or so), but 100% is the goal.

  • Let users use their OpenID instead of PGP key.

  • More docs. Angerwhale has a lot of nice features, but you'll only know about them if you're me, or you hang out on IRC when I'm implementing them. If you're reading the code and see something you like, send a short snippet of POD to add to the docs! I'll love you forever if you do!


Although Angerwhale doesn't do everything I want it to, the code that exists is pretty solid (it's been in use for almost a year). Most of the lingering corner cases (mostly unicode and memory leak) were fixed in 0.06.

If you'd like to request a feature or report a bug, either open an RT ticket, or join #angerwhale on Thanks in advance for your contribution.


Jonathan Rockway <jrockway AT>


These people have been nice enough to test Angerwhale and provide patches when something didn't work quite right:



Copyright (C) 2007 Jonathan Rockway and Contributors

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.