Loading...

What Is GitManager

GitManager solves the "commit push" problem. If you maintain multiple projects that share code, skills, configs, or any files from external upstream repositories, GitManager automates the entire pipeline:

Upstream Repo A (GitHub)
Upstream Repo B (GitHub)     →  git pull  →  Forward selected paths  →  git commit + push
Upstream Repo C (GitHub)                      to your project dirs       to your repo

No more manually pulling repos, copying folders, and committing changes. GitManager does it all — on a schedule, in the background, with a beautiful dashboard to control everything.

No cloud. No account required. Runs entirely on your machine.


How It Works

Step 1 — Create a Project

Click + in the sidebar. Give it a name and the absolute path to your local Git repository.

Step 2 — Add Upstreams

For each upstream source, define:

  • Name — a label (e.g. claude-skills)
  • URL — the GitHub clone URL (optional if already cloned locally)
  • Branch — which branch to track (default: main)
  • Path — where to clone it on your machine

Step 3 — Define Path Forwards

For each upstream, specify which directories or files to copy into your project:

FROM: /home/user/.claude-skills/skills/python-patterns
  TO: /home/user/my-project/skills/python-patterns

Step 4 — Set the Schedule

Set the sync interval in minutes in the toolbar. Click Run to start the background worker — it will pull upstreams, forward paths, commit changes, and push automatically.


API Reference

Method Endpoint Description
POST /api/auth/login Login with username & password
POST /api/auth/logout Logout (requires auth)
GET /api/auth/check Check current session
GET /api/projects List all projects
POST /api/projects Create a new project
GET /api/projects/{id} Get project details
PUT /api/projects/{id} Update project config
DELETE /api/projects/{id} Delete a project
POST /api/projects/{id}/run Start background sync worker
POST /api/projects/{id}/stop Stop background sync worker

1. First Launch

Start the server:

python main.py

Open http://localhost:8000 in your browser. You will see the login page.

GitManager automatically kills any stale process on port 8000 before starting — no manual cleanup needed if you left a session running in the background.

Enter the credentials you set in .env:

GM_USERNAME=admin
GM_PASSWORD=your_password

After login, you land directly on the dashboard. Your session is stored as an HMAC-signed cookie that survives server restarts — you will stay logged in until you explicitly click Exit.


2. Creating a Project

Click the + button at the top-right of the sidebar.

Fill in:

  • Project Name — a human-readable label (e.g. human-skills)
  • Project Path — the absolute path to your local Git repository (e.g. /home/user/human-skills)

Click Create. The project appears in the sidebar and is immediately selected.

Your project directory must already be a Git repository (git init or cloned). GitManager does not initialize Git repos for you.

3. Adding Upstreams

Click + Upstream in the toolbar. A new empty row appears in the Upstreams section.

Fill in each field:

Field Description Example
Name Identifier for this upstream claude-skills
URL GitHub clone URL (optional if path already exists) https://github.com/user/repo.git
Branch Which branch to track main
Path Where to clone/pull the upstream repo /home/user/.claude-skills
Toggle Enable or disable pulling this upstream ON

Auto-Clone: If the path does not exist and a URL is provided, GitManager will run git clone -b <branch> <url> <path> on the first sync.

Branch Sync Strategy: GitManager uses git fetch origin <branch> + git reset --hard origin/<branch> instead of plain git pull. This guarantees a clean sync even if the upstream had a force-push, without merge conflicts.


4. Defining Path Forwards

Path Forwards define which files or directories from an upstream get copied into your project.

Click + Forward in the toolbar. A new row appears in the Path Forwards section.

Field Description Example
From Source path (inside the upstream clone) /home/user/.claude-skills/skills/python-patterns
To Destination path (inside your project) /home/user/my-project/skills/python-patterns
Toggle Enable or disable this forward rule ON

Rules:

  • If From is a directory, the entire directory is copied recursively.
  • If From is a file, only that file is copied.
  • Multiple forwards can safely write to the same destination directory using the Wipe-Once Merge Strategy (the destination is cleared only once before the first forward rule writes to it, preserving subsequent copies).

5. Configuring Git Settings

In the Manual Commit Template section, customize the commit message format.

Available placeholders:

  • {count} — number of files changed
  • {datetime} — timestamp of the sync

6. Running the Sync Worker

Once your upstreams and forwards are configured, click Save to persist the configuration. Then click Run.

What happens on each sync cycle:

  1. Pull (or clone) all enabled upstreams
  2. Copy all enabled path forwards into the project
  3. Stage all changes (git add .)
  4. Commit with the configured message template
  5. Push to remote (if Push is enabled)

7. Understanding the Toolbar

Element Description
Path Project path (username is masked for privacy)
Status badge Current worker status
Branch Editable Git branch name
Interval Sync frequency in minutes (editable)
Push Toggle for auto-push
+ Upstream Add a new upstream row
+ Forward Add a new path forward row
Save Persist all changes to disk
Run / Stop Start or stop the background worker

8. Data Storage

All project data is stored as JSON files under data/:

data/
├── projects.json
└── projects/
    └── <project-id>/
        ├── upstream.json
        ├── forward.json
        ├── automation.json
        └── memory.json

9. Environment Variables

Variable Required Description
GM_USERNAME Dashboard login username
GM_PASSWORD Dashboard login password
GM_SECRET_KEY HMAC signing key
← Back to App

On this page