Skip to content
vee is a highly portable, zero configuration (but configurable), cli microblogging tool.
Shell Perl Makefile
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.


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


vee is a highly portable, zero configuration (but configurable), cli 
microblogging tool that I created because I hated having to set up 
web-based blogging software every so often. It became popular for some 
reason, and now it's used in some for by many people - mostly in silence. 
It does everything I want it to do, hence the lack of feature creep; 
however I am always interested in improving it in some basic way.

It's available in a variety of package repositories, like pkgsrc and
FreeBSD Ports.

vee is one of hundreds of "static site generators", many of which are
listed at




vee is released under the WTFPL. See the LICENSE file for more information.

Portability Goals:

0. no external dependencies other than Bourne Shell and traditional 
   Unix userland tools (no need to install non-optional utils)
1. any *nix platform that supports Bourne Shell (sh)
2. it "just works" out of the box
3. new versions won't require "upgrading"


The goal of vee is that it should work on minimal systems using only
original Bourne shell (sh) and without having to install anything. I
originally began this work on FreeBSD, but it seems that a couple of
utilities seem to not be the most portable in their usage. In particular,
`date` and `sort` have caused some headaches, but alas they have been

Project Status:

Update - recently I have had some interest and time in addressing some
issues that have been plaguing MacOS (i.e., sort), all platforms (date),
and have a couple of goals to make vee easy to install locally to try out.
Also included is an attempt to understand the utf8 issues that have been
reported. My goal is to have a 1.0 release very soon.

This is one of those "forever" projects that met my needs very early
on, and I have revisited the code for only incremental improvements.
I'd like to get to 1.0, but this would realy just mean a nice set
of useful utilities (veels, veecat, vee-rebuild) and associated
documentation. Work towards this has been spotty, but progress has
been good. At some point, I'll have some time to wrap it up and
present version 1.0 - at which point it's likely I'll cease any work
on it other than bug fixes or applying patches from others.

Project Home Page:

Bug reports:

Developer contact:

estrabd at gmail dot com

It's also on Freshmeat:

 R.I.P. Freshmeat :(

Usage: See below.                                                     

  -b                batch mode; used when piping in msg via stdin             
  -B  file          define bottom template; default is ./vee-bottom.tpl       
  -c  [1-9\d*]      specify the number of characters 'fold' allows per line   
                    this only applies when 'fold' (-f) is used                
  -d  'publis_dir'  specify the directory .vee is in - defaults to PWD        
  -f  'format'      use defined format instead of the default, groff;         
                    'groff', 'fold', and 'none' are supported out of the box  
  -h                prints this blurb                                         
  -i  'custom.html' specify a custom index file over the default              
  -I                force index file to be "index.html"                     
  -l                edit latest post's *.raw; used with '-r' publishes changes;
                    calls reformat automatically;                             
  -L  [1-9\d*]      edit the Nth latest, relative to last post; lp starts at 1
  -m  'message ...' specify entry message at commandline and avoid vi         
  -n                lists all entries, newest first, then quits               
  -o                lists all entries, oldest first, then quits               
  -p                see what *raw files don't have an entry in the INDEX      
  -P                forever deletes all *raw and formatted files associated with
                    posts that are listed with -p;                            
  -r  [1-9\d*]      reformats the Nth latest post                             
  -R                reformats _all_ .vee/*.raw files; -c applies as well      
  -s  summary       placed below title in INDEX                               
  -t  'title'       specify title at commandline and avoid annoying default prompt
  -T  file          define top template; default is ./vee-top.tpl             
  -v                version and exit                                          
  -x  filter        defines filter if not using default ./vee-pre; filter   
                    must be executable, i.e., chmod 755 vee-pre
You can’t perform that action at this time.