MCPcopy Index your code
hub / github.com/charmbracelet/sequin

github.com/charmbracelet/sequin @v0.3.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.3.1 ↗ · + Follow
32 symbols 84 edges 20 files 18 documented · 56% updated 2mo agov0.3.1 · 2025-01-27★ 8054 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Sequin

<img width="356" alt="Charm Sequin Logo" src="https://github.com/user-attachments/assets/5d41c071-c27f-412e-8a00-4e1258c70ceb">


<a href="https://github.com/charmbracelet/sequin/releases"><img src="https://img.shields.io/github/release/charmbracelet/sequin.svg" alt="Latest Release"></a>
<a href="https://github.com/charmbracelet/sequin/actions"><img src="https://github.com/charmbracelet/sequin/workflows/build/badge.svg" alt="Build Status"></a>

Human-readable ANSI sequences.

Sequin is a small utility that can help you debug your CLIs and TUIs. It's also great for describing escape sequences you might not understand, and exploring what TUIs are doing under the hood.

There are lots more use cases too, like inspecting golden files such as the ones used by teatest to crystalize Bubble Tea output.

Are you using Sequin in an interesting way? We’d love to hear about it.

Installation

Use a package manager:

# macOS or Linux
brew install charmbracelet/tap/sequin

# Arch Linux (btw)
yay -S sequin-bin

# Nix
nix-shell -p nur.repos.charmbracelet.sequin

Debian/Ubuntu

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://repo.charm.sh/apt/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/charm.gpg
echo "deb [signed-by=/etc/apt/keyrings/charm.gpg] https://repo.charm.sh/apt/ * *" | sudo tee /etc/apt/sources.list.d/charm.list
sudo apt update && sudo apt install sequin

Fedora/RHEL

echo '[charm]
name=Charm
baseurl=https://repo.charm.sh/yum/
enabled=1
gpgcheck=1
gpgkey=https://repo.charm.sh/yum/gpg.key' | sudo tee /etc/yum.repos.d/charm.repo
sudo yum install sequin

Or, download it:

  • Packages are available in Debian and RPM formats
  • Binaries are available for Linux, macOS, Windows, FreeBSD, OpenBSD, and NetBSD

Or, just install it with go:

go install github.com/charmbracelet/sequin@latest

Shell Completions

All the packages and archives come with pre-generated completion files for Bash, ZSH, Fish, and PowerShell.

If you built it from source, you can generate them with:

sequin completion bash -h
sequin completion zsh -h
sequin completion fish -h
sequin completion powershell -h

If you use a package (like Homebrew, Debs, etc), the completions should be set up automatically, given your shell is configured properly.

Examples

Describing escape sequences

Just use printf to send some sequences to sequin for an explanation.

printf "\x1b[38;5;4mCiao, \x1b[1;7mBaby.\x1b[0m\n" | sequin

Sequin with printf

Reading the output of a program

You can also use it to check the output of any program, for instance, ls or git.

ls -1 --color=always | sequin

git -c status.color=always status -sb | sequin

So yeah, it’s great for debugging applications, and of course, learning about ANSI!

[!NOTE] Many programs render their output as plain text when output isn't a terminal (i.e. when redirecting to a file or piping to a program, like sequin). This is a good thing, except in this case when we actually want ANSI sequences so we can inspect them. Thankfully there are usually ways to force colors, like by setting CLICOLOR_FORCE=1 or with flags to force ANSI output. If you're not seeing sequences be sure to to check what works in the case of your specific program.

Examining golden files

Golden file for TUIs contain ANSI, which can be easily inspected with sequin:

cat ./testdata/MyCuteApp.golden | sequin

To generate golden files for your TUIs have a look at golden and teatest from the /x project.

Fake TTY - executing commands

You can also execute commands directly in sequin:

sequin -- ls -1 go.*

Pro Mode: Syntax Highlighting for Raw Sequences

One of the pain points that we find when reading raw ANSI output is that it’s hard to visually separate sequences from regular text. For situations like this you can use the --raw/-r flag to simply highlight sequences inline:

git -c status.color=always status -sb | sequin -r && echo

How it all works

Sequin relies heavily on our glorious ansi package, currently in the elusive /x project. Whilst traversing the strings, Sequin pretty prints what the sequences are and what they’re doing.

Is it done?

No! Common sequences are implemented, but there is still plenty of work to do. For instance, APC sequences are not supported yet. If you notice one of such missing sequences, or want to work on any other area of the project, feel free to open a PR. 💘

FAQ

Why isn't sequin using my terminal's background color? (with multiplexer)

related: https://github.com/charmbracelet/sequin/issues/28

Check your multiplexer's version

Tmux

This could be a few things depending on your environment. First thing to consider: are you using a terminal multiplexer (e.g. tmux)? If so, check your tmux version is 3.4 or higher. (Tmux added support for OSC10/11 queries in 3.4 see https://github.com/tmux/tmux/blob/master/CHANGES#L152). Not sure which version of tmux you're using? tmux -V

GNU Screen

If you're a GNU screen user, check that your version is 4.99.0 or higher to ensure OSC10/11 can be used. Not sure which version of screen you're using? screen --version

Check your config

Make sure your multiplexer config has your default terminal and COLORTERM set.

tmux.conf

set -g default-terminal "xterm-ghostty"
setenv -g COLORTERM "truecolor"

~/.screenrc

term xterm-256color
setenv COLORTERM truecolor
defbce on

Note: if you don't set defbce on, you will get a different background color on cells cleared with an erase/insert/scroll/clear operation in the regular background color.

Contributing

We love contributions. We recommend checking out our contribution guidelines for faster responses on our end.

Feedback

We’d love to hear your thoughts on this project. Feel free to drop us a note.

License

MIT


Part of Charm.

The Charm logo

Charm热爱开源 • Charm loves open source

Core symbols most depended-on inside this repo

default1
called by 10
handlers.go
kindStyle
called by 5
theme.go
printf
called by 4
handlers.go
getColorLabel
called by 3
sgr.go
getColorType
called by 3
sgr.go
readColor
called by 3
sgr.go
modeDesc
called by 2
mode.go
charmTheme
called by 2
theme.go

Shape

Function 30
Method 1
Struct 1

Languages

Go100%

Modules by API surface

theme.go4 symbols
sgr.go4 symbols
main.go3 symbols
mode.go2 symbols
handlers.go2 symbols
cursor.go2 symbols
color.go2 symbols
xt.go1 symbols
title.go1 symbols
termcap.go1 symbols
screen.go1 symbols
pointer.go1 symbols

For agents

$ claude mcp add sequin \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact