A fast terminal dashboard for launching, managing, and jumping between personal development projects.
RunDeck brings your projects, tmux workspaces, Neovim, lazygit, local previews, deploy links, and project metadata into one clean keyboard-driven terminal UI.
Installation · Usage · Themes · Configuration · Troubleshooting
- Why RunDeck
- Features
- Installation
- Requirements
- LazyVim setup
- Recommended workflow
- Usage
- Dashboard keymaps
- tmux workspace
- Local preview
- Supported project types
- Monorepo and workspace support
- Configuration
- Homebrew tap
- Themes
- Optional Neovim and LazyVim plugin
- Docker
- Kubernetes
- Troubleshooting
- License
Most developers keep switching between:
- terminal folders
- tmux sessions
- Neovim
- lazygit
- localhost URLs
- deploy links
- project notes/configs
RunDeck turns that messy workflow into one fast terminal dashboard.
Instead of remembering where every project lives, which port it runs on, or which command starts it, RunDeck gives you a single keyboard-first place to launch and manage everything.
- Fast terminal dashboard built in Rust
- Project launcher with tmux + Neovim workspace support
- Automatic stack detection
- Local preview launcher
- Deploy URL launcher
- lazygit shortcut
- Add existing projects with fzf
- Create new projects from the dashboard
- Remove projects from RunDeck without deleting folders
- Auto-removes missing projects when folders are deleted
- Configurable keymaps
- Multiple terminal-friendly themes
- Optional Neovim/LazyVim companion plugin
- Works great with custom dotfiles, tmux layouts, and terminal-first workflows
curl -fsSL https://raw.githubusercontent.com/IntScription/rundeck/main/scripts/install.sh | bashThen run:
rundeckIf rundeck is not found after installing, add Cargo/local binaries to your shell path:
export PATH="$HOME/.cargo/bin:$HOME/.local/bin:$PATH"For zsh:
echo 'export PATH="$HOME/.cargo/bin:$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrcUsing Homebrew:
brew install IntScription/rundeck/rundeckOr tap first:
brew tap IntScription/rundeck
brew install rundeckUsing the install script:
curl -fsSL https://raw.githubusercontent.com/IntScription/rundeck/main/scripts/install.sh | bashFrom source:
cargo install --git https://github.com/IntScription/rundeck --forceUsing the universal install script:
curl -fsSL https://raw.githubusercontent.com/IntScription/rundeck/main/scripts/install.sh | bashUsing Homebrew on Linux:
brew install IntScription/rundeck/rundeckFrom source:
cargo install --git https://github.com/IntScription/rundeck --forceFrom a local clone:
git clone https://github.com/IntScription/rundeck.git
cd rundeck
cargo install --path . --forceRunDeck can be distributed to Linux users in multiple package formats. Use the package that matches your distro once release artifacts are available.
Ubuntu / Debian:
sudo apt install ./rundeck-linux-amd64.debFedora / RHEL:
sudo dnf install ./rundeck-linux-x86_64.rpmArch Linux / Manjaro:
sudo pacman -U rundeck-linux-x86_64.pkg.tar.zstIf an AUR package is published later:
yay -S rundeckRunDeck is designed around terminal tools like tmux, Neovim, lazygit, and local project folders. On Windows, WSL2 is recommended for the best experience.
Inside your WSL terminal:
curl -fsSL https://raw.githubusercontent.com/IntScription/rundeck/main/scripts/install.sh | bashThen run:
rundeckInstall Rust, Git, and Neovim, then run:
cargo install --git https://github.com/IntScription/rundeck --forceIf you add a PowerShell installer later, you can expose it like this:
irm https://raw.githubusercontent.com/IntScription/rundeck/main/scripts/install.ps1 | iexHomebrew:
brew update
brew upgrade rundeckSource install:
cargo install --git https://github.com/IntScription/rundeck --forceLocal clone:
cd rundeck
git pull
cargo install --path . --forceDocker:
docker pull ghcr.io/intscription/rundeck:latestHomebrew:
brew uninstall rundeck
brew untap IntScription/rundeckCargo/source install:
cargo uninstall rundeckRemove RunDeck config:
rm -rf ~/.config/rundeckRemove local data only if you know you no longer need it:
rm -rf ~/.local/share/rundeckRunDeck works best with:
- tmux
- git
- fzf
- lazygit
- Neovim
- LazyVim optional, but recommended for the full terminal IDE workflow
- Rust/Cargo only required for source installs
Check your setup:
rundeck doctorbrew install tmux lazygit fzf neovim ripgrep fdLazyVim is not a separate Homebrew package. It is a Neovim config setup. Install it using the LazyVim setup section below.
Ubuntu / Debian:
sudo apt update
sudo apt install -y git tmux fzf neovim ripgrep fd-find curl build-essentialOptional fd alias for Ubuntu/Debian, because the binary may be named fdfind:
mkdir -p ~/.local/bin
ln -sf "$(command -v fdfind)" ~/.local/bin/fdFedora:
sudo dnf install -y git tmux fzf neovim ripgrep fd-find curl gcc gcc-c++ makeArch Linux / Manjaro:
sudo pacman -S git tmux fzf neovim ripgrep fd curl base-develInstall lazygit using your distro package manager, Homebrew on Linux, or the official lazygit release package.
For the smoothest setup, install these inside WSL2 using the Linux commands above.
For native Windows, use Windows Terminal plus your preferred package manager:
winget install Git.Git Neovim.Neovim Rustlang.RustupLazyVim is optional, but it pairs well with RunDeck because RunDeck can launch project workspaces directly into Neovim.
Back up any existing Neovim config first:
mv ~/.config/nvim{,.bak}
mv ~/.local/share/nvim{,.bak}
mv ~/.local/state/nvim{,.bak}
mv ~/.cache/nvim{,.bak}Clone the LazyVim starter:
git clone https://github.com/LazyVim/starter ~/.config/nvim
rm -rf ~/.config/nvim/.git
nvimAfter opening Neovim, run:
:LazyHealthIf you want the same terminal-first setup with LazyVim, tmux, Alacritty, and related configs, you can use my dotfiles:
git clone https://github.com/IntScription/dotfiles ~/.dotfiles
cd ~/.dotfiles
./install.shOr manually stow only the configs you want:
cd ~/.dotfiles
stow nvim tmux alacrittyThe dotfiles repo is useful if you want a ready-to-use LazyVim and tmux workflow that matches the way RunDeck is intended to be used.
| Step | Action |
|---|---|
| 1 | Open RunDeck with rundeck |
| 2 | Press a to add an existing project |
| 3 | Press Enter to open the selected project workspace |
| 4 | Use the top pane for Neovim and the bottom pane for shell commands |
| 5 | Press g when you need lazygit |
| 6 | Press b to start/open the local preview |
| 7 | Use rundeck back to return to the dashboard |
This is the workflow RunDeck is built for: open a project, code in Neovim, manage Git with lazygit, preview locally, and jump back to your project list without breaking terminal flow.
Open the dashboard:
rundeckRun diagnostics:
rundeck doctorAdd a project manually:
rundeck add ~/Projects/my-app --name "My App" --port 3000Add a deploy URL:
rundeck add ~/Projects/my-app \
--name "My App" \
--port 3000 \
--url "https://my-app.vercel.app"Default keymaps:
| Key | Action |
|---|---|
Enter |
Open project tmux workspace |
a |
Add existing project |
c |
Create new project |
d |
Remove project from RunDeck only |
b |
Start/open local preview |
B |
Open deployed preview |
g |
Open lazygit |
u |
Edit deploy URL |
e |
Edit RunDeck config |
T |
Theme picker |
D |
Doctor |
/ |
Search projects |
? |
Help / commands |
q |
Quit |
h/l |
Switch focus |
j/k |
Move or scroll |
Removing a project with d only removes it from RunDeck config. It does not delete the actual project folder.
Pressing Enter opens a tmux workspace for the selected project.
By default:
- Top pane opens your editor
- Bottom pane opens a shell
- The bottom pane shows useful RunDeck commands
Inside a project tmux session:
rundeck backReturn to RunDeck.
rundeck closeReturn to RunDeck and close the current project session.
rundeck killKill the current tmux session.
Press b to start the project dev server and open localhost.
RunDeck detects common dev servers:
- Next.js →
3000 - Vite →
5173 - Expo →
8081
For custom setups, edit config:
[[projects]]
name = "My App"
path = "/Users/me/Projects/my-app"
port = 3000
dev_command = "cd web && npm run dev"RunDeck can detect common project stacks including:
| Category | Examples |
|---|---|
| Frontend | React, Next.js, Vite, Tailwind |
| Mobile | Expo, React Native |
| Backend | Node.js, Python, Go, Rust |
| Infra / services | Supabase, Docker, Kubernetes |
| Desktop / native | Tauri, Rust |
| Workspaces | web, mobile, apps, packages, monorepos |
The stack detector reads common project markers like package.json, framework configs, workspace folders, Rust manifests, Supabase folders, and other development files.
RunDeck supports projects like:
my-project/
├─ web/
│ └─ package.json
├─ mobile/
│ └─ package.json
└─ supabase/It shows one project in the dashboard:
My ProjectExample detected stack:
Next.js · React · TypeScript · Tailwind · Expo · React Native · SupabaseConfig lives here:
~/.config/rundeck/config.tomlOpen it from RunDeck with:
eExample config:
editor = "nvim"
shell = "/bin/zsh"
theme = "catppuccin-mocha"
top_pane_ratio = 70
show_icons = true
project_picker = "fzf"
project_roots = ["~/Projects", "~/Developer"]
[keymaps]
quit = "q"
help = "?"
search = "/"
add_project = "a"
create_project = "c"
remove_project = "d"
workspace = "enter"
workspace_alt = "t"
local_preview = "b"
deploy_preview = "B"
editor = "o"
lazygit = "g"
edit_deploy = "u"
config = "e"
theme = "T"
doctor = "D"
kill_session = "x"
stop_dev = "X"
reload = "r"
left = "h"
right = "l"
down = "j"
up = "k"RunDeck uses a separate Homebrew tap repository:
IntScription/homebrew-rundeckThat repository contains the Homebrew formula used by:
brew install IntScription/rundeck/rundeckOr tap first:
brew tap IntScription/rundeck
brew install rundeckThe main repository contains the Rust source code. The Homebrew tap only contains the install recipe.
RunDeck ships with multiple terminal-friendly themes. The main screenshot at the top of this README uses the Catppuccin Mocha theme.
Open the theme picker from the dashboard:
TThen press Enter to apply the selected theme, or q to close the picker.
You can also set a theme manually in ~/.config/rundeck/config.toml:
theme = "catppuccin-mocha"Available theme values:
catppuccin-mocha
tokyo-night
kanagawa-wave
gruvbox-dark
rose-pine
nord
draculaThe gallery expects the screenshots to be stored in the assets/ folder with these filenames:
catppuccin-mocha.png
tokyonight.png
kanagawa-wave.png
gruvbox-dark.png
rose-pine.png
nord.png
dracula.png
Catppuccin Mocha
|
Tokyo Night
|
Kanagawa Wave
|
Gruvbox Dark
|
Rose Pine
|
Nord
|
Dracula
|
RunDeck includes an optional Neovim helper plugin.
Folder:
nvim/lua/rundeck.luaLazyVim plugin setup:
return {
dir = "~/Projects/Personal/rundeck/nvim",
name = "rundeck.nvim",
lazy = false,
config = function()
require("rundeck").setup({
keymaps = {
open = "<leader>rd",
add = "<leader>ra",
create = "<leader>rc",
config = "<leader>re",
},
})
end,
}Commands:
:Rundeck
:RundeckAdd
:RundeckCreate
:RundeckConfigDefault keymaps:
| Keymap | Action |
|---|---|
<leader>rd |
Open RunDeck dashboard |
<leader>ra |
Add current Neovim project to RunDeck |
<leader>rc |
Open create project helper |
<leader>re |
Edit RunDeck config |
Docker support is mainly for development, testing, and container users. RunDeck is designed to run directly on the host because it integrates with tmux, Neovim, local folders, browser URLs, and user config.
Pull from GitHub Container Registry if the image is published:
docker pull ghcr.io/intscription/rundeck:latestRun doctor:
docker run --rm ghcr.io/intscription/rundeck:latest doctorBuild locally:
docker build -t rundeck:local .Run doctor locally:
docker run --rm rundeck:local doctorOpen a container shell:
docker compose run --rm shellKubernetes support is provided as example manifests for running RunDeck as a toolbox/job container.
Apply:
kubectl apply -f k8s/namespace.yaml
kubectl apply -f k8s/configmap.yaml
kubectl apply -f k8s/job.yamlView doctor output:
kubectl logs -n rundeck job/rundeck-doctorRun toolbox pod:
kubectl apply -f k8s/toolbox-pod.yaml
kubectl exec -n rundeck -it rundeck-toolbox -- zshClean up:
kubectl delete namespace rundeckAdd Cargo/local binaries to your shell path:
export PATH="$HOME/.cargo/bin:$HOME/.local/bin:$PATH"For zsh:
echo 'export PATH="$HOME/.cargo/bin:$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrcCheck that tmux is installed:
tmux -VThen run diagnostics:
rundeck doctorCheck that lazygit is installed:
lazygit --versionCheck your editor:
echo $EDITOROr set the editor in ~/.config/rundeck/config.toml:
editor = "nvim"Set the project port manually:
[[projects]]
name = "My App"
path = "/Users/me/Projects/my-app"
port = 3000
dev_command = "npm run dev"MIT License.






