π©πͺ Zur deutschen Dokumentation wechseln | π¬π§ Switch to English Documentation
UpGit is an autonomous, professional Terminal User Interface (TUI) utility built to streamline publishing local directory projects directly to GitHub.
It features a single-login architecture: Once you provide your GitHub Personal Access Token (PAT), UpGit validates and links with your GitHub account (@Graba92) and securely stores credentials under ~/.config/upgit/auth.json with hardened 0600 permissions.
- π Single-Login & Account Synchronization:
- One-time token input verified instantly against the GitHub REST API v3.
- Auto-Import: Seamlessly detects and imports existing tokens from the official GitHub CLI (
gh auth token) with 1 click. - Live Profile Stats: Real-time display of user profile, public & private repository counters, and remaining API rate limits.
- Security First: Credentials are saved strictly with
0600permissions and are never committed or stored in plaintext inside.git/config.
- π Workspace Project Scanner:
- Audits directories for GitHub release readiness:
- Validates presence of
README.md,LICENSE, and.gitignore. - Detects git repository initialization status (
.git), active branch, and uncommitted file count.
- Validates presence of
- Autonomous metadata extraction: Pulls project descriptions directly from existing local README files.
- Audits directories for GitHub release readiness:
- π 1-Click GitHub Repository Upload:
- Remote Provisioning: Automatically creates the repository on GitHub via REST API if it doesn't already exist (Public or Private).
- Local Git Orchestration: Handles
git init -b main, git user setup, staging (git add .), initial commit, and secure remote push. - Live Log Modal: Real-time streaming console showing step-by-step progress and output.
- Generates clickable GitHub URLs upon completion.
upgit/
βββ app.py # Universal CLI & TUI entry point
βββ upgit_app.py # Textual Master TUI Application
βββ run.sh # Universal launcher
βββ setup.sh # Automated setup & installer (pacman / venv)
βββ requirements.txt # Python dependencies (textual, rich)
βββ README.md # English documentation (this file)
βββ README_DE.md # German documentation
βββ LICENSE # MIT License (Matthias Haase / Graba92)
βββ .gitignore # Git ignore rules
β
βββ core/ # Low-level system & business logic
β βββ auth.py # Token storage, 0600 hardening & gh CLI import
β βββ github_api.py # Native REST API engine (User, Check, Create Repo)
β βββ git_manager.py # Local Git engine (Init, Commit, Remote & Push)
β βββ scanner.py # Project scanner & README parser
β
βββ ui/ # Modern Textual interface layer
βββ theme.py # Nordic Dark TCSS stylesheet
βββ screens/ # Modals and ergonomic views
βββ auth_screen.py # Token input & authentication modal
βββ upload_modal.py # Upload configuration (Name, Visibility, Commit)
βββ log_modal.py # Real-time execution log modal
git clone https://github.com/Graba92/upgit.git
cd upgit
chmod +x setup.sh run.sh
./setup.shsudo pacman -S --needed python-textual python-rich gitpython3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt./run.sh
# or launch with explicit language
python3 app.py --lang en
python3 app.py --lang de# Query active GitHub login and token status (in English or German):
python3 app.py --status --lang en
# List and audit projects in a directory:
python3 app.py --list ..
# Remove saved token (Logout):
python3 app.py --logout
# Print version:
python3 app.py --version| Key | Action |
|---|---|
l |
Toggle language between English and Deutsch |
u / Enter |
Upload highlighted project to GitHub |
r |
Refresh project workspace scanner |
s |
Synchronize GitHub profile & rate limit |
t |
Open Token & Authentication Manager |
q |
Cleanly exit UpGit |
If you need a new token:
- Navigate to: github.com/settings/tokens.
- Click Generate new token (classic).
- Select expiration (e.g.
90 daysorNo expiration). - Select the necessary scopes:
[x] repo(Full control of private and public repositories).- (Optional)
[x] workflow(for GitHub Actions).
- Click Generate token, copy the token string (
ghp_...), and paste it into UpGit.
This project is licensed under the MIT License β Copyright (c) 2026 Matthias Haase (Graba92).
