A Go project management tool that uses tmux for session management so i don't forget what i was doing. And since i have low disk space on my local linux partition, if i'm not working on a project or burnt out, i can offload it to a remote companion server and fetch it back later.
- A git server, this is not version control, the .git folder is sent along with the project
- A cross-platform tool, this is designed for linux with tmux and wofi
- A replacement for ssh, you still need to setup ssh access to your companion server, and i personally use tailscale for those sort of stuff so the default ssh may be a tad bit scuffed.
- Session Management: Create and connect to tmux sessions for your projects
- Project Binding: Bind local directories to project names for easy access
- Companion Sync: Synchronize projects with a remote companion server
- Interactive Selection: Use wofi for project selection in GUI environments
- Tailscale Support: Built around using tailscale for secure and easy remote connections, but can work with normal ssh as well (i think)
go build -o pm cmd/pm/main.go
go build -o pm_companion cmd/pm_companion/main.gopm- Interactive project selection and connectionpm -t- Open terminal when connecting to projectpm -b- Bind current directory to a projectpm -list- List available companion projectspm -stow- Upload project to companion serverpm -fetch- Download project from companion serverpm -c <path>- Use custom config file
- Bind a directory:
pm -b(from your project directory) - Connect to project:
pm(select project from wofi)
When connecting, pm will:
- Check for existing tmux session
- Create a new tmux session if none exists
Wheneer done, simply detach from tmux with Ctrl+b d, then pm -stow to offload your project to the companion server.
If going back to the project later, use pm -fetch to download the latest version from the companion server.
Default config location: ~/.config/pm/config.toml
[terminal]
emulator = "ghostty"
shell = "zsh"
[wofi]
config_path = "~/.config/wofi/config/config"
style_path = "~/.config/wofi/src/mocha/style.css"
hide_scroll = true
additional_args = ["--insensitive"]
[tmux]
session_prefix = ""
default_command = "zsh"
[companion]
use_tailscale = false
ssh_name = "companion"
normal_ssh_command = "ssh companion"
companion_ip = "192.168.1.100"
companion_user = "companion"
projects_path = "~/.projects/"
[project_bindings]
myproject = "/home/user/dev/myproject"The companion is a remote server that stores and manages your projects:
- Deploy
pm_companionon your remote server - Configure SSH access to the companion
- Update companion settings in config.toml
- The companion runs on port 6767
- pm: Main CLI tool for local project management
- pm_companion: Remote server component for project storage
- rsync: Used for efficient project synchronization
- tmux: Session management for development environments
- wofi: GUI project selector (Linux)