You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Netscape Navigator b9e52c98c5 Test upkeep. Currently 76.9% 2 years ago
fixtures Remove Lipmaaa references 2 years ago
project Test upkeep. Currently 76.9% 2 years ago
targets Added vet and fmt 2 years ago
.gitignore Added vet and fmt 2 years ago
LICENSE Hello, world! 2 years ago
Makefile Trim extra line 2 years ago Test upkeep. Currently 71.3% 2 years ago Start moving stuff into `/testdata` 2 years ago Begin building message parser 2 years ago Begin building message parser 2 years ago

Pigeon CLI

A single executable to manage a Pigeon node.

Project Status

Don't use the Go version yet. If you want something stable, there is a Ruby version that is feature complete.


By default, data is stored in ~/.pigeon. You can override this value by specifying a PIGEON_PATH ENV var.

Help Wanted

Want to get involved? Below are a few things I need help with.

Email if you have any questions.

  • Writing a BNF grammar for message parsing
  • Test coverage increases
  • Manual QA of features and edge cases
  • Providing constructive feedback on documentation
  • Cross-compiling windows binaries
  • Security auditing and vulnerability discovery. Please send security concerns to privately.


  • Add forgery protection tests
  • Add a real testing lib to DRY things up.
  • Validate and scrutinize depth, prev fields when ingesting message bundles to account for poorly written peer clients.
  • Get a good CI system going? Run tests at PR time, provide prebuilt binaries, prevent coverage slips, etc..
  • Add a transact() helper to ensure all transactions are closed out.
  • Switch to SQLX for extra sanity.
  • Write docs for all CLI commands / args AFTER completion.
  • Start using the check helper instead of error != nil.
  • Update spec to only allow UPPERCASE MULTIHASHES
  • Implement query.pgn protocol, as outlined here and here.
  • Add a note about "shallow" vs. "deep" verification.
  • Finish all the things below
Done? Noun Verb Flag / arg 1 Flag 2
bundle ingest
message show message mhash
message find --all
blob remove mhash
message find --last
draft create
draft publish
draft show
draft update --key=? --value=?
bundle create
X blob find
X blob add file path
X blob add STDIO pipe
X peer untrack peer mhash
X peers list
X peer block peer mhash
X peer follow peer mhash
X identity show
X identity create
X help
X version

Run Tests

Without coverage:


With coverage:


Build Project