Skip to content

matwate/pm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PM - Project Manager

What this is

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.

What this is not

  • 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.

Features

  • 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)

Installation

go build -o pm cmd/pm/main.go
go build -o pm_companion cmd/pm_companion/main.go

Usage

Basic Commands

  • pm - Interactive project selection and connection
  • pm -t - Open terminal when connecting to project
  • pm -b - Bind current directory to a project
  • pm -list - List available companion projects
  • pm -stow - Upload project to companion server
  • pm -fetch - Download project from companion server
  • pm -c <path> - Use custom config file

Project Workflow

  1. Bind a directory: pm -b (from your project directory)
  2. 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.

Configuration

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"

Companion Setup

The companion is a remote server that stores and manages your projects:

  1. Deploy pm_companion on your remote server
  2. Configure SSH access to the companion
  3. Update companion settings in config.toml
  4. The companion runs on port 6767

Architecture

  • 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)

About

A Go-based project management tool for managing development environments across local and remote systems via tmux sessions and companion synchronization.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages