Dock is an SSH-based Markdown browser that turns your terminal into a cozy reading nook for when you don't want to open a bloated, corporate, AI-infected mini OS called Web Browser to view or navigate through Markdown files. Dock makes your .md files look stunning - just like Charm's glow, but with some extra steps.
Try it out, maybe you'll like it!
ssh marina@steado.techWhy would you do this?
- Keyboard first: Stay in the terminal. No distractions. Just beautiful docs. Your mouse is still supported 🐁
- SSH is cool: No bloated browser but you still get all information and probably all functionality the web docs would give you without installing anything.
- Eye Candy ✨: Powered by the glamourous charm libraries and kitty/sixel terminal image protocols! If you have a smooth terminal setup, dock will just fit in. It comes with gorgeous themes (Nord, Dracula, Tokyo Night, and more!) to keep your eyes happy. Just use it as a subdomain. Seriously.
ssh pink.marina@steado.techjust works.
If you are just using dock remotely, there is no need to install anything except ssh. Just ssh to the server provided by the project:
ssh docs.project.comFor running dock locally or as a SSH server for your own docs, install via Go:
go install go.steado.tech/dock@latestHost your docs for the world (or just your team) to see:
dock serve ./my-awesome-docs --port 2222Dock will automatically detect dock.toml, zensical or mkdocs configurations and populate the navigation ordering and project name.
Quick and dirty for your scripts or your clanker:
ssh -p 2222 localhost search ./docs "how to fly"
ssh -p 2222 dock get ./docs "getting started"Just point it at a folder full of Markdown files:
dock ./my-awesome-docsConnect to a remote dock instance directly. This is just a fancy wrapper around ssh that prefixes the theme and ports if set via environment variables or flags.
DOCK_SSH_PORT=22 dock marina@steado.tech --theme nordWe've got vibes for every mood. You can set DOCK_THEME or just pick one when you connect via SSH.
The Current Wardrobe:
- 🌑 Dark (The classic from Charm)
- 🗼 Tokyo Night (Neon vibes)
- 🧛 Dracula (For the night owls)
- ❄️ Nord (Cool and crisp)
- ☕ Catppuccin Mocha (Smooth & cozy)
- 🌸 Pink (Kawaii docs)
- 🏳️⚧️ Trans (Rights!)
- ☀️ Light (For those who like the sun)
Pro Tip: To connect with a specific theme over SSH:
ssh -p 2222 nord@localhostDock reads navigation order and project metadata from a config file in your docs directory (or its parent). It supports the following formats, checked in priority order:
dock.toml/.dock.tomlzensical.tomlmkdocs.yml/mkdocs.yaml
Example dock.toml:
site_name = "My Awesome Docs"
dock_dir = "docs"
nav = [
{ Introduction = "index.md" }, # Root-level page
{ "Getting Started" = [ # Section header
{ Installation = "setup/install.md" }, # Sub-page
{ "Quick Start" = "setup/quickstart.md" }
]},
{ Reference = "reference.md" }
]Example zensical.toml:
[project]
site_name = "My Awesome Docs"
docs_dir = "docs"
# Each block in nav is either a page or a section header
[[project.nav]]
Introduction = "index.md"
[[project.nav]]
"Getting Started" = [
{ Installation = "setup/install.md" },
{ "Quick Start" = "setup/quickstart.md" },
]site_name: Project name shown at the top of the nav panel.dock_dir: Path to docs folder, relative to the config file (defaults to the config file's directory).nav: Ordered list of pages and sections. A string value defines a clickable page, while an array value defines a section header with nested sub-pages.git_url: Git URL to clone/pull documentation from.git_ref: Git branch or tag to use (defaults to default branch).pull_interval: Interval between pulls (e.g.,1h,30m).cache_path: Local directory to store the cloned repository.
DOCK_TITLE: Override the project name shown in the nav.DOCK_THEME: Your default vibe.DOCK_IGNORE_DIRS: Folders you want to hide (Default:assets,stylesheets).DOCK_SSH_PORT: Default port for both serving and client connections (Default:22).DOCK_GIT_URL: Git repository to sync from.DOCK_GIT_REF: Branch or tag to use.DOCK_PULL_INTERVAL: How often to pull updates.DOCK_CACHE_PATH: Custom path for Git cache.