LATE-SH(1)

NAME

late-shA cozy terminal clubhouse for developers. Lofi beats, casual games, chat, and tech news, all via SSH.

SYNOPSIS

INFO

334 stars
22 forks
0 views

DESCRIPTION

A cozy terminal clubhouse for developers. Lofi beats, casual games, chat, and tech news, all via SSH.

README

late.sh

A cozy terminal clubhouse for developers. Lofi beats, casual games, chat, and tech news, all via SSH.

ssh late.sh

late.sh is a terminal-first social app: real-time chat, music, games, news, profiles, and a shared always-on space you can enter from any SSH client.

Status

This repository is the main codebase for late.sh.

  • The project is open for source reading, local development, audits, and contributions.
  • The public hosted late.sh service remains the canonical deployment.
  • The code is source-available, not OSI open source, during the FSL protection period.

Read the details in LICENSE, the plain-English policy in LICENSING.md, and contribution rules in CONTRIBUTING.md.

What It Includes

  • SSH TUI with dashboard, chat, profile, news, and arcade screens
  • Real-time global chat and shared activity feed
  • Audio streaming via Icecast/Liquidsoap with browser and CLI pairing
  • Terminal games including 2048, Sudoku, Nonograms, Minesweeper, and Solitaire
  • Web frontend for landing, connect flow, and paired-client experiences
  • Companion CLI for local audio playback and synced visualizer data

Workspace

This is a Rust workspace with four crates:

CrateRole
late-cliCompanion CLI for local audio playback, paired controls, and visualizer sync
late-coreShared domain code, database layer, migrations, and infrastructure helpers
late-sshSSH server and terminal UI application
late-webWeb server, landing page, connect flow, and browser pairing

The stack is backed by PostgreSQL, Icecast, and Liquidsoap.

Quick Start

Try the live service:

ssh late.sh

Run it yourself (requires Docker):

git clone https://github.com/mpiorowski/late-sh
cd late-sh
make start

Then connect to your local instance:

ssh localhost -p 2222

That's it. Postgres, Icecast, and Liquidsoap all come up automatically.

Companion CLI

Install the companion CLI for local audio playback and synced visualizer:

macOS / Linux / Termux:

curl -fsSL https://cli.late.sh/install.sh | bash

On Termux, the installer fetches the Android CLI build instead of the GNU/Linux one.

Windows PowerShell (x64):

irm https://cli.late.sh/install.ps1 | iex

Or build it from source:

mise install        # optional — sets up the expected Rust toolchain
cargo build --release --bin late

Local Development

For development without Docker wrapping the Rust builds, you can run the infrastructure in Docker and the apps natively:

docker compose up -d postgres icecast liquidsoap
cargo run -p late-ssh
cargo run -p late-web

Local host development can use Cargo's normal defaults, including the standard repo-local target/ directory. The /app/target path is only for Docker/dev containers.

export CARGO_HOME=$HOME/.cargo

Use mise install to get the expected Rust toolchain, mold linker, and cargo-nextest.

Verification

Run before opening a PR:

make check

This runs cargo fmt --check, cargo clippy, and cargo nextest. Some integration tests require Docker via testcontainers.

Contributing

Contributions are welcome, but read the project policy first:

This repository uses DCO sign-off for commits:

git commit -s

If you distribute a fork, do not present it as the official late.sh service or use the project branding as your own.

More Context

  • CONTEXT.md — architecture, invariants, and working context. Written for LLMs — feed this to your AI editor for best results.
  • CONTRIBUTING.md — workflow, test rules, module patterns, and AI-assisted development tips.
  • THEME.md — how to contribute a new built-in SSH theme via PR.
  • late-cli/README.md — CLI-specific usage and behavior.

SEE ALSO

clihub4/22/2026LATE-SH(1)