A terminal client for Friendly, built with Bubble Tea.
This is a fork of the official CLI. It runs on the forked
Go SDK, pinned to its main.
There's no official release for this project, you'll have to build from source and move it to your bin.
This project can be installed via oku with the following command:
oku add github:friendly-social-ai/cli
# then you can run it with
friendlyRequires Go 1.27.
git clone https://github.com/friendly-social-ai/cli.git
cd cli
make runmake build writes the binary to bin/cli.
- Images render in Ghostty and Kitty, also inside tmux with
allow-passthroughon. With a low resolution fallback. - The composer has Vim keys, from fude. It opens in insert mode, and
escin normal mode closes it.:wposts the draft,:qcloses and keeps it, and:q!throws it away. - Pasting an image reads the clipboard with
osascripton macOS, andwl-pasteorxclipon Linux. - Emoji shortcode supports
- LaTeX math, read the same way as on the web. Inline
$...$becomes Unicode, so$\alpha^2$shows as α². Display math goes between$$lines or in a```mathblock. It draws as an image with MathJax when the terminal has graphics, and as Unicode otherwise. Text the math font lacks, like CJK or emoji, draws with system fonts, which the app indexes once intofriendly/fontsof the user cache folder. Math that neither can show stays as its source - Drag, paste or attach (with auto path completion) for images
- Change any key in
~/.config/friendly/keys.toml, see docs/keys.md - Change the colors in
~/.config/friendly/theme.toml, see docs/theme.md - Turn images off or change how often the app checks for new posts in
~/.config/friendly/config.toml, see docs/config.md - Start with another config folder through
FRIENDLY_CONFIG_DIR - config/ holds every default config file, ready to copy to
~/.config/friendly
Bind the following to your tmux config:
bind C-d display-popup -T "Friendly" -w 90% -h 80% -d "#{pane_current_path}" -E "friendly"And you now have access to friendly anywhere within tmux.
make fmt # gofmt
make lint # golangci-lintSet FRIENDLY_DEBUG=1 or 2 to write a debug log, see docs/debug.md.