meja

command module
v0.0.9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 23, 2026 License: MIT Imports: 12 Imported by: 0

README

meja

meja is a tmux-style multiplexer with native remote capability and restorable & shareable sessions.

Meja screenshot


Installation

On Linux x86-64:

curl -fsSL https://github.com/garindra/meja/releases/download/v0.0.9/meja_0.0.9_linux_amd64.tar.gz \
  | sudo tar -xz -C /usr/local/bin meja

On macOS with Apple Silicon:

curl -fsSL https://github.com/garindra/meja/releases/download/v0.0.9/meja_0.0.9_darwin_arm64.tar.gz \
  | sudo tar -xz -C /usr/local/bin meja

You can also install the latest version with Go:

go install github.com/garindra/meja@latest

Check that your meja installation is successful:

meja version

For remote meja -h <host> sessions, make sure to also install the binary on the target machine, reachable on $PATH.


One familiar workflow, local or remote

Start a new session on your machine by running:

meja

This starts a session with tmux-style windows and panes you know and love, and keybindings you're familiar with.

You can also start one on another machine:

meja -h user@host

-h also accepts aliases from your system’s SSH configuration:

meja -h devbox

If the network disappears, the client stays open. Meja preserves the last confirmed screen, shows that it is reconnecting, and continues when the connection returns.

Rename the session from inside it:

meja rename work

Detach from it:

meja detach

Meja keeps the session and its processes running. Return to it later:

meja -h devbox attach -t work

If the machine reboots—or the session otherwise ends—recover it from its latest recorded state:

meja -h devbox restore -t work

Meja creates and enters a new session with the saved windows, panes, directories, and prepared commands.

You can also run save to save the current session as a readable and editable .meja file:

meja save -t work -o dev.meja

Then create a fresh session from it:

meja new -f dev.meja

The file is readable and editable. Check it into version control so your team can recreate the same session on their machines.


Why meja

Familiar by design

Meja follows tmux wherever practical.

It uses the same Ctrl+b prefix, command set, and the familiar model of sessions, windows, panes, splits, history, detaching, and attaching. Existing tmux knowledge transfers directly.

Editable .meja files

meja save writes a live session's plan to a readable .meja file.

These files can be edited, kept with a project, checked into version control, and used by other people to create the same session arrangement.

Named-session recovery

Meja persists the recoverable state of every named session.

After a reboot or ended session, meja restore -t <session-name> creates a new session from its latest recovery record. It preserves the session's windows, panes, layout, working directories, shells, commands, and active selection—not process memory or application state.

The client survives disconnections

A dropped connection does not close the client or return you to the local shell.

Meja keeps the last confirmed terminal contents visible, displays its connection status, and reconnects automatically. Once connected again, it applies the latest layout and complete visible pane contents before normal input resumes.

Latency compensation

Eligible keystrokes are applied optimistically on the client, keeping remote typing responsive while waiting for the server's render.

The server remains authoritative. Confirmed renders reconcile the local display with the actual terminal state.

Command Bindings

As does tmux, meja uses Ctrl+b as its command prefix.

Press Ctrl+b, release it, and then press the command key.

Normal typing continues to go to the focused pane.

Sessions and panes
Keys Behavior
Ctrl+b, d Leave the session while keeping it and its processes running.
Ctrl+b, c Create a new window.
Ctrl+b, Space Cycle through preset pane layouts.
Ctrl+b, % Split the focused pane left/right.
Ctrl+b, " Split the focused pane top/bottom.
Ctrl+b, / / / Focus the pane in that direction.
Ctrl+b, Ctrl+↑ / Ctrl+↓ / Ctrl+← / Ctrl+→ Move a pane boundary by one row or column.
Ctrl+b, Alt+↑ / Alt+↓ / Alt+← / Alt+→ Move a pane boundary by five rows or columns.
Ctrl+b, z Toggle the focused pane between its split position and the full window.
Ctrl+b, { Swap the focused pane with the previous pane.
Ctrl+b, } Swap the focused pane with the next pane.
Ctrl+b, x Ask for confirmation, then close the focused pane.
Ctrl+b, : Open the command prompt in the status bar.
Ctrl+b, Ctrl+b Send a literal Ctrl+b to the focused pane.
Windows
Keys Behavior
Ctrl+b, n Select the next window.
Ctrl+b, p Select the previous window.
Ctrl+b, l Return to the last selected window.
Ctrl+b, 09 Select the window with that status-bar index.
Ctrl+b, , Rename the current window.
Ctrl+b, $ Name or rename the current session.

Documentation

See REFERENCE.md for the complete command, option, keybinding, profile, socket, autosave, and diagnostics reference.

See ARCHITECTURE.md for a detailed overview of Meja's internals, including the SSH bootstrap flow, QUIC transport layer, reconnection model, latency compensation strategy, rendering pipeline, session lifecycle, persistence format, protocol design, and security considerations.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
internal

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL