lazypush-cli
v0.1.3
Published
Schedule Git commits for future push
Readme
lazypush-cli
Schedule Git commits for a future push — no local daemons, no open terminals, no guilt.
The Problem
You finished the feature at 2pm. The standup is at 10am tomorrow. Pushing now means everyone knows you had the afternoon free, and guess who gets the next ticket assigned in 4 minutes?
lazypush lets you schedule the push for later. Your git history stays clean. Your commit timestamp is exactly what you want it to be. You get your afternoon back.
Install
npm install -g lazypush-cliQuickstart
# Step 1: one-time login
lazypush login
# Step 2: schedule a push from inside your git repo
lazypush scheduleYou'll see an interactive prompt:
? Date (dd/mm/yyyy format, or press Enter for today) 20/05/2026
? Time (e.g., 5:30pm, 17:30, 9:15am) 9:00pm
? Timezone (or press Enter for local) IST
ℹ Local timezone: Asia/Calcutta
? Commit message (optional) fix: handle null user
ℹ ═══ PUSH DETAILS ═══
ℹ Repository: https://github.com/you/your-repo
ℹ Branch: main
ℹ Commit Message: fix: handle null user
ℹ ═══════════════════
? Confirm scheduling? Yes
ℹ Parsing scheduled time...
ℹ Scheduled for: 5/20/2026, 9:00:00 PM UTC
ℹ Creating git bundle...
ℹ Compressing bundle...
ℹ Encoding to base64...
ℹ Uploading to backend...
✓ Job scheduled! ID: 6a0dd278c2dcaedb805baf3c
ℹ Push will occur at: 5/20/2026, 9:00:00 PMShut your laptop. The push will happen in the cloud at exactly that time.
Commands
| Command | Description |
| ---------------------- | -------------------------------------------------------------------- |
| lazypush login | Authenticate via GitHub OAuth. Opens browser, stores JWT locally. |
| lazypush schedule | Interactive prompt to schedule a push. Auto-detects repo and branch. |
| lazypush jobs | List all currently scheduled (pending) jobs. |
| lazypush list | List all jobs — scheduled and finished — latest first. |
| lazypush cancel <id> | Cancel a scheduled job by its ID. |
| lazypush logout | Clear local session. |
| lazypush help | Show all commands and options. |
Time Format
The time prompt accepts natural human input:
| Input | Meaning |
| -------------- | ------------------------ |
| 5pm | Today at 5:00 PM |
| 17:30 | Today at 5:30 PM (24h) |
| tomorrow 9am | Next day at 9:00 AM |
| in 2 hours | 2 hours from now |
| friday 8pm | Coming Friday at 8:00 PM |
Timezone examples: IST, EST, UTC, America/New_York, Asia/Kolkata
If no timezone is provided, your system's local timezone is used.
How It Works
Inside your repo:
┌──────────────────────────────────────────────────────────────┐
│ lazypush schedule │
│ │
│ 1. git bundle create repo.bundle HEAD │
│ 2. gzip repo.bundle │
│ 3. base64 encode │
│ 4. POST /jobs { bundle, scheduledAt, repoUrl, branch } │
└──────────────────────────────────────────────────────────────┘
│
▼
LazyPush Backend (cloud)
Stores job → polls every 60s
At T: restores bundle, rewrites timestamps, pushesNo background process runs on your machine after schedule completes. The CLI's job ends the moment the upload finishes.
Session Storage
After lazypush login, credentials are stored at:
~/.lazypush/session.json{
"token": "<jwt>",
"userId": "...",
"username": "vaibhavgupta5"
}Protected by OS file permissions. Run lazypush logout to clear it.
License
MIT © Vaibhav Gupta
