#blog #terminal #post

bin+lib agadir

Blogging over the terminal

1 unstable release

0.1.0 May 18, 2024

#24 in #blog

GPL-3.0 license

582 lines

🚧 Work In Progress 🚧

Agadir (ⴰⴳⴰⴷ⡉⡔)

Blogging over the terminal

πŸ”Œ Installation

πŸ“₯ Binary release

You can download the pre-built binaries from the release page release page

πŸ“¦ crates.io

You can install agadir from crates.io

cargo install agadir

βš’οΈ Build from source

Run the following command:

git clone https://github.com/pythops/agadir
cd agadir
cargo build --release

This will produce an executable file at target/release/agadir that you can copy to a directory in your $PATH.

πŸ›ž Naviguation

j or Down : Scroll down.

k or Up: Scroll up.

G: Go to the end.

gg: Go to the top.

Enter: Show the content of the post.

Esc: Go to the table of content.

πŸ“° Post format

the posts should have the following format:

title: Your post title here
created_at: DD/MM/YYYY
modified_at: DD/MM/YYYY

Your post content goes here in Markdown format.

βš™οΈ Configuration

The main directory is $HOME/.agadir, and it can be overriden with AGADIR env variable.

Its structure is as follows:

β”œβ”€β”€ key
└── posts/
   β”œβ”€β”€ assets/
   β”‚  └── fig.png
   β”œβ”€β”€ post_1.md
   └── post_2.md
  • key: This is the server signing key. It is generated once at the startup and used everytime the server restarts.
  • posts: This is where the posts should be located.
  • assets: This directory serves as a place to store images/figures for the posts.

πŸš€ Deploy

The default listening port is 2222 and can be customized with --port or -p cli option.


  • Adjust the terminal size based on the client.
  • Display images.
  • Load posts from remote git repositories.

πŸ“Έ Demo

ssh blog.pythops.com

βš–οΈ License



~754K SLoC