I am proud to announce Argo, a flat-file static-site blog authoring and building system. It generates your site on your own computer, then syncs it to a remote host via Git or rsync.
(This very blog uses Argo, and has done so for quite a while.)
My blogging software for the longest time was WordPress, and it was good enough, though it was subject to intermittent denial-of-service and other attacks. Mitigating those was not a lot of trouble, but it was occasionally time-consuming, and never a welcome distraction.
Then I started hearing about, and witnessing, the Social Justice cancellation and de-platforming of some of my regular online readings, all built using WordPress. One day there, next day gone -- and on contacting the authors, I learned they did not keep their own local backups. All their content, all their hard work and creative product, had all disappeared because of the Social Justice indignation of the week.
Now, it is well-known that I am no fan of Social Justice. I am not a Leftist of any stripe: not a Democrat, Progressive, Socialist, Communist, or Marxist. I think that Marxism in its various forms is a great enemy of Western civilization.
That attitude makes me persona non grata in much of the technology and programming world. It makes me a target for censorship and cancellation under whatever cover is deniably plausible, by people who signal their tolerance for anything other than their outgroup.
I began to consider what might happen to my own blog, how it too might be disappeared one day. How might I defend it against the attacks of Marxist and Social Justice zealots?
Thus was born my motivation to create Argo.
Argo's key features are centered around resilience:
You always keep all your content on your own computer. All your posts, images, and other files are stored locally.
The software itself runs on your own computer, not in the cloud, so you always keep the code behind the software.
Argo uses flat file storage, not a database; among other things, this makes it easy to use standard file tools, and to bundle assets with posts.
Argo generates static HTML and JSON for publishing, and does not use a server-side programming language; this keeps the hosting requirements minimal.
Publishing is a matter of syncing to a remote host, whether by Git or rsync. If a host cancels you, you can change your local configuration, and sync all your content to the new host.
These basic features make Argo-based blogs resistant to cancellation, censorship, and de-platforming. Yes, a host might still surprise you by pulling your account, but the consequences are far less drastic: none of your content has been lost.
Some of the incidental and technical features are:
Content items are written in Markdown; HTML and WordPress pseudo-html are supported as well.
The content items do not use "YAML frontmatter"; instead, content metadata is stored in an
argo.jsonfile, and the body content is stored in
The flat-file storage structure is exactly the same as the published URL structure, resulting in a easy-to-understand information architecture. When syncing, the remote file structure will be identical to the local file structure.
The build system generates not only HTML files, but also JSON files; this means that each content item is accessible through a read-only API. (Try out the JSON resource for this post.)
All configuration settings are stored as JSON files.
It is still early days for Argo, and there is a lot left to do.
The administrative interface is spartan at best, and needs some UI/UX love.
Likewise, the WordPress import feature appears to work properly, but I'd like to have more test cases around it.
There is no built-in commenting system (nor do I think there could be, given that it runs locally and not on a server) but integrating an external commenting service ought to be achievable.
Those are just some of the highlights.
Of course, Argo is not only for those who are interested in being cancel-resistant. Use Argo because you want to keep local control over your own content.