hermes-git 0.2.5 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +188 -493
- package/dist/index.js +13880 -975
- package/package.json +13 -9
package/README.md
CHANGED
|
@@ -4,716 +4,411 @@
|
|
|
4
4
|
|
|
5
5
|
**Intent-driven Git, guided by AI**
|
|
6
6
|
|
|
7
|
+
[](https://www.npmjs.com/package/hermes-git)
|
|
7
8
|
[](https://opensource.org/licenses/MIT)
|
|
8
9
|
[](https://www.typescriptlang.org/)
|
|
9
|
-
[](https://github.com/github/copilot-cli)
|
|
10
10
|
|
|
11
11
|
*Turn natural language intent into safe, explainable Git operations*
|
|
12
12
|
|
|
13
|
-
[Installation](#installation) • [
|
|
13
|
+
[Installation](#installation) • [Quick Start](#quick-start) • [Commands](#commands) • [Configuration](#configuration)
|
|
14
14
|
|
|
15
15
|
</div>
|
|
16
16
|
|
|
17
17
|
---
|
|
18
18
|
|
|
19
|
-
##
|
|
19
|
+
## What it does
|
|
20
20
|
|
|
21
|
-
Hermes is
|
|
21
|
+
Hermes is a CLI that translates what you want to do in Git into the correct, safe sequence of commands — and explains every step.
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
- **🧠 Context-Aware:** Learns your project patterns and enforces team conventions
|
|
29
|
-
- **📊 Built-in Analytics:** See your productivity gains, command usage, and Git efficiency improvements
|
|
30
|
-
- **🔄 Workflow Shortcuts:** Turn 50+ commands into 5 with intelligent macros
|
|
31
|
-
- **🛡️ Safety First:** Auto-backup, pre-flight checks, and explainable operations
|
|
32
|
-
- **👥 Team-Ready:** Share config and workflows across your entire team
|
|
33
|
-
|
|
34
|
-
### Why Hermes?
|
|
35
|
-
|
|
36
|
-
Git is powerful, but unforgiving. Even experienced developers regularly:
|
|
37
|
-
|
|
38
|
-
- 🔀 Rebase the wrong branch
|
|
39
|
-
- ⚠️ Panic during merge conflicts
|
|
40
|
-
- 🤔 Forget what state their repository is in
|
|
41
|
-
- 🌳 Avoid worktrees because they feel dangerous
|
|
42
|
-
|
|
43
|
-
**Hermes doesn't replace Git.** It stands beside you, explaining where you are, what's risky, and what your safest next move is.
|
|
44
|
-
|
|
45
|
-
> Think of Hermes as your guide at every crossing—the messenger between you and Git's complexity.
|
|
46
|
-
|
|
47
|
-
---
|
|
48
|
-
|
|
49
|
-
## Core Principles
|
|
23
|
+
```bash
|
|
24
|
+
hermes start "add oauth login"
|
|
25
|
+
# → Picks the right base branch
|
|
26
|
+
# → Creates feature/add-oauth-login
|
|
27
|
+
# → Switches and sets upstream
|
|
50
28
|
|
|
51
|
-
|
|
52
|
-
|
|
29
|
+
hermes sync
|
|
30
|
+
# → Evaluates rebase vs merge based on your branch state
|
|
31
|
+
# → Explains the tradeoff before doing anything
|
|
53
32
|
|
|
54
|
-
|
|
55
|
-
|
|
33
|
+
hermes conflict explain
|
|
34
|
+
# → Reads the conflict markers
|
|
35
|
+
# → Explains what each side was trying to do
|
|
36
|
+
# → Suggests a resolution strategy
|
|
56
37
|
|
|
57
|
-
|
|
58
|
-
|
|
38
|
+
hermes wip
|
|
39
|
+
# → Decides commit vs stash based on your repo state
|
|
40
|
+
# → Saves your work safely
|
|
41
|
+
```
|
|
59
42
|
|
|
60
|
-
|
|
61
|
-
No UI, no context switching. Just clarity where you already work.
|
|
43
|
+
No magic. Every command shows exactly what git operations it runs.
|
|
62
44
|
|
|
63
45
|
---
|
|
64
46
|
|
|
65
47
|
## Installation
|
|
66
48
|
|
|
67
|
-
|
|
49
|
+
```bash
|
|
50
|
+
npm install -g hermes-git
|
|
51
|
+
```
|
|
68
52
|
|
|
69
|
-
|
|
70
|
-
- **Git** (obviously!)
|
|
71
|
-
- **[GitHub Copilot CLI](https://github.com/github/copilot-cli)** (with active subscription)
|
|
53
|
+
**Requires:** Node.js 18+, Git
|
|
72
54
|
|
|
73
|
-
###
|
|
55
|
+
### Set up your AI provider
|
|
56
|
+
|
|
57
|
+
Hermes works with Anthropic, OpenAI, or Google Gemini — bring your own API key.
|
|
74
58
|
|
|
75
59
|
```bash
|
|
76
|
-
|
|
60
|
+
hermes config setup
|
|
77
61
|
```
|
|
78
62
|
|
|
79
|
-
|
|
63
|
+
This walks you through selecting a provider and saving your key to `~/.config/hermes/config.json` (chmod 600).
|
|
80
64
|
|
|
81
|
-
|
|
65
|
+
Or set it manually:
|
|
82
66
|
|
|
83
67
|
```bash
|
|
84
|
-
#
|
|
85
|
-
|
|
68
|
+
# Anthropic (Claude)
|
|
69
|
+
hermes config set provider anthropic
|
|
70
|
+
hermes config set anthropic-key sk-ant-...
|
|
71
|
+
|
|
72
|
+
# OpenAI (GPT-4o)
|
|
73
|
+
hermes config set provider openai
|
|
74
|
+
hermes config set openai-key sk-...
|
|
86
75
|
|
|
87
|
-
#
|
|
88
|
-
|
|
76
|
+
# Google Gemini
|
|
77
|
+
hermes config set provider gemini
|
|
78
|
+
hermes config set gemini-key AIza...
|
|
89
79
|
```
|
|
90
80
|
|
|
91
|
-
|
|
81
|
+
Verify it worked:
|
|
92
82
|
|
|
93
83
|
```bash
|
|
94
|
-
hermes
|
|
95
|
-
hermes --help
|
|
84
|
+
hermes config list
|
|
96
85
|
```
|
|
97
86
|
|
|
98
87
|
---
|
|
99
88
|
|
|
100
89
|
## Quick Start
|
|
101
90
|
|
|
102
|
-
### 1. Initialize Your Project
|
|
103
|
-
|
|
104
91
|
```bash
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
Sets up project context, branch naming patterns, and preferences. Config is shareable across your team.
|
|
92
|
+
# 1. Install and configure
|
|
93
|
+
npm install -g hermes-git
|
|
94
|
+
hermes config setup
|
|
109
95
|
|
|
110
|
-
|
|
96
|
+
# 2. Initialize your project (optional, enables team config sharing)
|
|
97
|
+
cd your-project
|
|
98
|
+
hermes init
|
|
111
99
|
|
|
112
|
-
|
|
100
|
+
# 3. Start working
|
|
113
101
|
hermes start "user authentication"
|
|
114
|
-
# Creates: feature/user-authentication
|
|
115
|
-
# Switches from correct base branch
|
|
116
|
-
# Tracks time saved
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
### 3. Check Your Efficiency
|
|
120
|
-
|
|
121
|
-
```bash
|
|
122
|
-
hermes stats
|
|
123
|
-
|
|
124
|
-
╔══════════════════════════════════════════════════════╗
|
|
125
|
-
║ Hermes Efficiency Report - Last 30 Days ║
|
|
126
|
-
╚══════════════════════════════════════════════════════╝
|
|
127
|
-
|
|
128
|
-
⏱️ Time Saved: 12.4 hours
|
|
129
|
-
🚀 Commands Run: 847 → 123 (85% reduction)
|
|
130
|
-
📈 Efficiency Gain: +34% compared to raw Git
|
|
131
102
|
```
|
|
132
103
|
|
|
133
104
|
---
|
|
134
105
|
|
|
135
106
|
## Commands
|
|
136
107
|
|
|
137
|
-
###
|
|
108
|
+
### `hermes config`
|
|
138
109
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
**Initialize Hermes for your project.**
|
|
110
|
+
Manage API keys and provider settings.
|
|
142
111
|
|
|
143
112
|
```bash
|
|
144
|
-
hermes
|
|
145
|
-
hermes
|
|
113
|
+
hermes config setup # Interactive wizard
|
|
114
|
+
hermes config list # Show current config (keys masked)
|
|
115
|
+
hermes config set provider openai
|
|
116
|
+
hermes config set openai-key sk-...
|
|
117
|
+
hermes config get provider
|
|
118
|
+
hermes config unset gemini-key
|
|
146
119
|
```
|
|
147
120
|
|
|
148
|
-
|
|
149
|
-
- `.hermes/config.json` - Project configuration (commit this!)
|
|
150
|
-
- Branch naming patterns
|
|
151
|
-
- Workflow shortcuts
|
|
152
|
-
- Team preferences
|
|
153
|
-
|
|
154
|
-
**Why this matters:** Consistency across your entire team, automatic convention enforcement.
|
|
121
|
+
Config is stored in `~/.config/hermes/config.json`. You can also use environment variables or a `.env` file — see [Configuration](#configuration).
|
|
155
122
|
|
|
156
123
|
---
|
|
157
124
|
|
|
158
|
-
### `hermes
|
|
125
|
+
### `hermes plan "<intent>"`
|
|
159
126
|
|
|
160
|
-
|
|
127
|
+
Analyze repo state and propose a safe Git plan. **Makes no changes.**
|
|
161
128
|
|
|
162
129
|
```bash
|
|
163
|
-
hermes
|
|
164
|
-
hermes
|
|
165
|
-
hermes stats --all-time
|
|
130
|
+
hermes plan "bring main into my branch without losing my work"
|
|
131
|
+
hermes plan "clean up before submitting a PR"
|
|
166
132
|
```
|
|
167
133
|
|
|
168
|
-
**Shows:**
|
|
169
|
-
- Time saved vs raw Git
|
|
170
|
-
- Command reduction percentage
|
|
171
|
-
- Success rate
|
|
172
|
-
- Most-used commands
|
|
173
|
-
- Productivity streak
|
|
174
|
-
|
|
175
|
-
**Why this matters:** Quantify your efficiency improvements, see where Hermes helps most.
|
|
176
|
-
|
|
177
134
|
---
|
|
178
135
|
|
|
179
|
-
### `hermes
|
|
136
|
+
### `hermes start "<task>"`
|
|
180
137
|
|
|
181
|
-
|
|
138
|
+
Start a new piece of work safely.
|
|
182
139
|
|
|
183
140
|
```bash
|
|
184
|
-
hermes
|
|
185
|
-
|
|
186
|
-
|
|
141
|
+
hermes start "payment refactor"
|
|
142
|
+
# → Picks correct base branch
|
|
143
|
+
# → Creates and switches to feature/payment-refactor
|
|
187
144
|
```
|
|
188
145
|
|
|
189
|
-
**Why this matters:** Turn 10+ commands into 1. Save 5-10 minutes per workflow.
|
|
190
|
-
|
|
191
146
|
---
|
|
192
147
|
|
|
193
|
-
### `hermes
|
|
148
|
+
### `hermes sync [--from <branch>]`
|
|
194
149
|
|
|
195
|
-
|
|
150
|
+
Bring your branch up to date.
|
|
196
151
|
|
|
197
152
|
```bash
|
|
198
|
-
hermes
|
|
153
|
+
hermes sync
|
|
154
|
+
hermes sync --from develop
|
|
199
155
|
```
|
|
200
156
|
|
|
201
|
-
|
|
202
|
-
- Current repository state (clean, conflicted, mid-rebase, etc.)
|
|
203
|
-
- Recommended strategy (merge vs rebase) with reasoning
|
|
204
|
-
- Potential risks and safety considerations
|
|
205
|
-
- Step-by-step next actions
|
|
206
|
-
|
|
207
|
-
**No changes are made.** This is analysis only.
|
|
157
|
+
Hermes evaluates whether rebase or merge is safer given your branch state and explains before executing.
|
|
208
158
|
|
|
209
159
|
---
|
|
210
160
|
|
|
211
|
-
### `hermes
|
|
161
|
+
### `hermes wip [-m "<message>"]`
|
|
212
162
|
|
|
213
|
-
|
|
163
|
+
Save work in progress.
|
|
214
164
|
|
|
215
165
|
```bash
|
|
216
|
-
hermes
|
|
166
|
+
hermes wip
|
|
167
|
+
hermes wip -m "checkpoint before sync"
|
|
217
168
|
```
|
|
218
169
|
|
|
219
|
-
|
|
220
|
-
- Choose the correct base branch
|
|
221
|
-
- Generate a conventional branch name
|
|
222
|
-
- Create and switch to the new branch
|
|
223
|
-
- Set upstream tracking if needed
|
|
224
|
-
- Explain what it did and why
|
|
170
|
+
Decides commit vs stash based on what's safest in your current state.
|
|
225
171
|
|
|
226
172
|
---
|
|
227
173
|
|
|
228
|
-
### `hermes
|
|
174
|
+
### `hermes guard`
|
|
229
175
|
|
|
230
|
-
|
|
176
|
+
Scan staged files for secrets and sensitive content before committing.
|
|
231
177
|
|
|
232
178
|
```bash
|
|
233
|
-
hermes
|
|
179
|
+
hermes guard
|
|
234
180
|
```
|
|
235
181
|
|
|
236
|
-
|
|
237
|
-
- Create a WIP commit, or
|
|
238
|
-
- Stash changes with a meaningful label
|
|
182
|
+
Hermes scans every staged file for:
|
|
239
183
|
|
|
240
|
-
|
|
184
|
+
- **Sensitive filenames** — `.env`, `id_rsa`, `*.pem`, `credentials.json`, `google-services.json`, etc.
|
|
185
|
+
- **API keys** — Anthropic, OpenAI, Google, AWS, GitHub, Stripe, SendGrid, Twilio
|
|
186
|
+
- **Private key headers** — `-----BEGIN PRIVATE KEY-----` and variants
|
|
187
|
+
- **Database URLs** with embedded credentials — `postgres://user:pass@host`
|
|
188
|
+
- **Hardcoded passwords/tokens** — common assignment patterns
|
|
241
189
|
|
|
242
|
-
|
|
190
|
+
Findings are categorized as `BLOCKED` (definite secret) or `WARN` (suspicious). The AI explains each finding and what to do about it. Then you choose: abort, unstage the flagged files, or proceed anyway.
|
|
243
191
|
|
|
244
|
-
|
|
192
|
+
```
|
|
193
|
+
BLOCKED src/config.ts
|
|
194
|
+
● Anthropic API key line 12
|
|
195
|
+
apiKey: "sk-a...****",
|
|
196
|
+
Rotate at: https://console.anthropic.com/settings/keys
|
|
197
|
+
● Database URL with credentials line 15
|
|
198
|
+
dbUrl: "post...****prod.db.internal/app"
|
|
199
|
+
|
|
200
|
+
What this means:
|
|
201
|
+
The Anthropic API key on line 12 would give anyone with repository
|
|
202
|
+
access full billing access to your Anthropic account. Rotate it
|
|
203
|
+
immediately and use process.env.ANTHROPIC_API_KEY instead.
|
|
204
|
+
...
|
|
205
|
+
|
|
206
|
+
? Blocked secrets found. What do you want to do?
|
|
207
|
+
❯ Abort — I will fix these before committing
|
|
208
|
+
Unstage the flagged files and continue
|
|
209
|
+
Proceed anyway (I know what I'm doing)
|
|
210
|
+
```
|
|
245
211
|
|
|
246
|
-
**
|
|
212
|
+
**Install as a git pre-commit hook** so it runs automatically on every commit:
|
|
247
213
|
|
|
248
214
|
```bash
|
|
249
|
-
hermes
|
|
250
|
-
hermes
|
|
215
|
+
hermes guard install-hook # installs to .git/hooks/pre-commit
|
|
216
|
+
hermes guard uninstall-hook # removes it
|
|
251
217
|
```
|
|
252
218
|
|
|
253
|
-
|
|
254
|
-
- Whether the branch is shared (has remote tracking)
|
|
255
|
-
- Whether rebase is safe
|
|
256
|
-
- Whether merge is preferable
|
|
257
|
-
|
|
258
|
-
If a risky operation is detected, Hermes explains before proceeding.
|
|
219
|
+
In hook mode (`--hook`), the scan is non-interactive: it prints findings to stderr and exits 1 on any blocker.
|
|
259
220
|
|
|
260
221
|
---
|
|
261
222
|
|
|
262
223
|
### `hermes conflict explain`
|
|
263
224
|
|
|
264
|
-
|
|
225
|
+
Understand why a conflict exists.
|
|
265
226
|
|
|
266
227
|
```bash
|
|
267
228
|
hermes conflict explain
|
|
268
229
|
```
|
|
269
230
|
|
|
270
|
-
|
|
271
|
-
- List all conflicted files
|
|
272
|
-
- Summarize each side's intent (ours vs theirs)
|
|
273
|
-
- Identify common causes (refactor, rename, move)
|
|
274
|
-
- Suggest a resolution strategy
|
|
275
|
-
|
|
276
|
-
This is explanation, not guesswork. Make informed decisions.
|
|
231
|
+
For each conflicted file: what each side was doing, why they conflict, and how to approach resolution.
|
|
277
232
|
|
|
278
233
|
---
|
|
279
234
|
|
|
280
235
|
### `hermes conflict apply`
|
|
281
236
|
|
|
282
|
-
|
|
237
|
+
Resolve conflicts file by file with AI assistance.
|
|
283
238
|
|
|
284
239
|
```bash
|
|
285
240
|
hermes conflict apply
|
|
286
241
|
```
|
|
287
242
|
|
|
288
|
-
|
|
289
|
-
- Proposes a merged version
|
|
290
|
-
- Shows a diff preview
|
|
291
|
-
- Lets you choose: accept, edit manually, or skip
|
|
292
|
-
|
|
293
|
-
**Hermes never auto-commits without your consent.**
|
|
243
|
+
For each file: shows a proposed resolution, lets you accept, edit manually, or skip. Never auto-commits.
|
|
294
244
|
|
|
295
245
|
---
|
|
296
246
|
|
|
297
|
-
### `hermes
|
|
247
|
+
### `hermes workflow <name>`
|
|
298
248
|
|
|
299
|
-
|
|
249
|
+
One-command workflows for common patterns.
|
|
300
250
|
|
|
301
251
|
```bash
|
|
302
|
-
hermes
|
|
252
|
+
hermes workflow pr-ready # fetch → rebase → push --force-with-lease
|
|
253
|
+
hermes workflow daily-sync # fetch all → show status → suggest next action
|
|
254
|
+
hermes workflow quick-commit # generate commit message from staged diff
|
|
255
|
+
hermes workflow list # show available workflows
|
|
303
256
|
```
|
|
304
257
|
|
|
305
|
-
**Hermes will:**
|
|
306
|
-
- Create a branch
|
|
307
|
-
- Create a worktree in a predictable location
|
|
308
|
-
- Track active worktrees
|
|
309
|
-
- Help prevent committing in the wrong place
|
|
310
|
-
|
|
311
258
|
---
|
|
312
259
|
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
### Example Workflows
|
|
260
|
+
### `hermes worktree new "<task>"`
|
|
316
261
|
|
|
317
|
-
|
|
262
|
+
Create a Git worktree safely.
|
|
318
263
|
|
|
319
264
|
```bash
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
hermes init
|
|
323
|
-
|
|
324
|
-
# Answer a few questions:
|
|
325
|
-
# - Project name?
|
|
326
|
-
# - Main branch? (main)
|
|
327
|
-
# - Feature branch pattern? (feature/{description})
|
|
328
|
-
# - Enable auto-backup? (yes)
|
|
329
|
-
|
|
330
|
-
# Config saved and ready for your team!
|
|
265
|
+
hermes worktree new "fix memory leak"
|
|
266
|
+
# → Creates branch, worktree at ../repo-fix-memory-leak
|
|
331
267
|
```
|
|
332
268
|
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
```bash
|
|
336
|
-
# Morning: check status
|
|
337
|
-
hermes workflow daily-sync
|
|
338
|
-
|
|
339
|
-
# Start new feature
|
|
340
|
-
hermes start "oauth2-login"
|
|
341
|
-
# → Creates: feature/oauth2-login
|
|
342
|
-
# → Tracks time: saved ~60s vs manual Git
|
|
343
|
-
|
|
344
|
-
# Work on code...
|
|
345
|
-
|
|
346
|
-
# Save progress
|
|
347
|
-
hermes wip -m "checkpoint"
|
|
348
|
-
# → Decides: commit vs stash based on state
|
|
349
|
-
# → Auto-backup if configured
|
|
350
|
-
|
|
351
|
-
# Sync with main
|
|
352
|
-
hermes sync
|
|
353
|
-
# → Evaluates: rebase vs merge
|
|
354
|
-
# → Explains why before executing
|
|
355
|
-
|
|
356
|
-
# Handle conflicts
|
|
357
|
-
hermes conflict explain
|
|
358
|
-
hermes conflict apply
|
|
359
|
-
|
|
360
|
-
# Ready for PR
|
|
361
|
-
hermes workflow pr-ready
|
|
362
|
-
# → Fetch, rebase, push --force-with-lease
|
|
269
|
+
---
|
|
363
270
|
|
|
364
|
-
|
|
365
|
-
hermes stats
|
|
366
|
-
# 🎉 Time saved today: 24 minutes!
|
|
367
|
-
```
|
|
271
|
+
### `hermes init [--quick]`
|
|
368
272
|
|
|
369
|
-
|
|
273
|
+
Initialize project-level config (`.hermes/config.json`). Commit this to share branch patterns and workflows with your team.
|
|
370
274
|
|
|
371
|
-
**Scenario 1: Safe branch sync**
|
|
372
275
|
```bash
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
🔍 Analyzing repository state...
|
|
376
|
-
|
|
377
|
-
📋 Recommended Plan:
|
|
378
|
-
Your branch is 5 commits behind main. Rebase is safe because:
|
|
379
|
-
- No remote tracking (local-only branch)
|
|
380
|
-
- Working directory is clean
|
|
381
|
-
- No ongoing operations
|
|
382
|
-
|
|
383
|
-
Recommended: git fetch && git rebase origin/main
|
|
276
|
+
hermes init # Interactive
|
|
277
|
+
hermes init --quick # Use defaults
|
|
384
278
|
```
|
|
385
279
|
|
|
386
|
-
|
|
387
|
-
```bash
|
|
388
|
-
$ hermes conflict explain
|
|
389
|
-
|
|
390
|
-
🔍 Analyzing conflicts...
|
|
280
|
+
---
|
|
391
281
|
|
|
392
|
-
|
|
393
|
-
• src/auth/login.ts
|
|
282
|
+
### `hermes stats [-d <days>]`
|
|
394
283
|
|
|
395
|
-
|
|
396
|
-
main refactored the authentication flow to use async/await,
|
|
397
|
-
while your branch updated error handling with try-catch.
|
|
284
|
+
Show command usage and success rate.
|
|
398
285
|
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
286
|
+
```bash
|
|
287
|
+
hermes stats
|
|
288
|
+
hermes stats -d 7
|
|
289
|
+
hermes stats --all-time
|
|
402
290
|
```
|
|
403
291
|
|
|
404
292
|
---
|
|
405
293
|
|
|
406
|
-
##
|
|
294
|
+
## Configuration
|
|
407
295
|
|
|
408
|
-
Hermes
|
|
409
|
-
|
|
410
|
-
- 🧠 Interpret natural language intent
|
|
411
|
-
- 📊 Analyze repository state
|
|
412
|
-
- 🔧 Generate safe Git command sequences
|
|
413
|
-
- 💬 Explain decisions in human-readable terms
|
|
414
|
-
|
|
415
|
-
**Copilot CLI is not a wrapper here—it's the intelligence behind Hermes' decisions.**
|
|
416
|
-
|
|
417
|
-
The integration uses the standalone Copilot CLI (not the deprecated `gh copilot` extension) in non-interactive mode, ensuring fast, scriptable, and explainable Git operations.
|
|
418
|
-
|
|
419
|
-
---
|
|
296
|
+
Hermes resolves config in this priority order:
|
|
420
297
|
|
|
421
|
-
|
|
298
|
+
| Source | Example |
|
|
299
|
+
|--------|---------|
|
|
300
|
+
| Environment variable | `export ANTHROPIC_API_KEY=sk-ant-...` |
|
|
301
|
+
| `.env` file in current dir | `ANTHROPIC_API_KEY=sk-ant-...` |
|
|
302
|
+
| `~/.config/hermes/config.json` | set via `hermes config set` |
|
|
422
303
|
|
|
423
|
-
|
|
304
|
+
**Supported env vars:**
|
|
424
305
|
|
|
425
|
-
|
|
426
|
-
|
|
306
|
+
| Variable | Description |
|
|
307
|
+
|----------|-------------|
|
|
308
|
+
| `HERMES_PROVIDER` | Pin provider: `anthropic`, `openai`, or `gemini` |
|
|
309
|
+
| `ANTHROPIC_API_KEY` | Anthropic API key |
|
|
310
|
+
| `OPENAI_API_KEY` | OpenAI API key |
|
|
311
|
+
| `GEMINI_API_KEY` / `GOOGLE_API_KEY` | Google Gemini API key |
|
|
427
312
|
|
|
428
|
-
|
|
429
|
-
Every action is explained before execution. You maintain control.
|
|
313
|
+
If `HERMES_PROVIDER` is not set, Hermes auto-detects by using whichever key it finds first (Anthropic → OpenAI → Gemini).
|
|
430
314
|
|
|
431
|
-
|
|
432
|
-
Hermes prefers the safest path, even if it takes one more step.
|
|
315
|
+
**Supported providers and models:**
|
|
433
316
|
|
|
434
|
-
|
|
317
|
+
| Provider | Model | Get a key |
|
|
318
|
+
|----------|-------|-----------|
|
|
319
|
+
| Anthropic | claude-sonnet-4-6 | [console.anthropic.com](https://console.anthropic.com/) |
|
|
320
|
+
| OpenAI | gpt-4o | [platform.openai.com/api-keys](https://platform.openai.com/api-keys) |
|
|
321
|
+
| Google | gemini-2.0-flash | [aistudio.google.com/app/apikey](https://aistudio.google.com/app/apikey) |
|
|
435
322
|
|
|
436
323
|
---
|
|
437
324
|
|
|
438
|
-
##
|
|
325
|
+
## How it works
|
|
439
326
|
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
327
|
+
1. **Reads your repo state** — branch, commits, dirty files, conflicts, remote tracking
|
|
328
|
+
2. **Sends context + intent to an AI** — using your configured provider
|
|
329
|
+
3. **Validates the response** — all returned commands must start with `git`, destructive flags are blocked
|
|
330
|
+
4. **Executes with display** — shows every command before running it
|
|
331
|
+
5. **You always stay in control** — interactive prompts for anything irreversible
|
|
443
332
|
|
|
444
333
|
---
|
|
445
334
|
|
|
446
|
-
##
|
|
447
|
-
|
|
448
|
-
### Hermes vs Raw Git
|
|
335
|
+
## Philosophy
|
|
449
336
|
|
|
450
|
-
|
|
451
|
-
|------|---------|--------|
|
|
452
|
-
| **Sync branch** | Remember rebase vs merge rules, check if shared | `hermes sync` - evaluates and explains |
|
|
453
|
-
| **Start feature** | Think of branch name, remember base branch | `hermes start "feature name"` - handles conventions |
|
|
454
|
-
| **Save WIP** | Decide commit vs stash, write message | `hermes wip` - chooses safest option |
|
|
455
|
-
| **Resolve conflict** | Parse diff markers, guess intent | `hermes conflict explain` - AI explains both sides |
|
|
337
|
+
**Never hide Git.** Every command Hermes runs is shown. You can drop to raw Git at any point.
|
|
456
338
|
|
|
457
|
-
|
|
339
|
+
**Never surprise.** Risky operations include an explanation before execution.
|
|
458
340
|
|
|
459
|
-
|
|
460
|
-
- No context switching from your terminal workflow
|
|
461
|
-
- Every operation is a learning opportunity
|
|
462
|
-
- Works over SSH, in Docker, anywhere Git works
|
|
463
|
-
- Integrates with your existing Git knowledge
|
|
341
|
+
**Bring your own AI.** No proprietary backend. Works with any provider you already pay for.
|
|
464
342
|
|
|
465
343
|
---
|
|
466
344
|
|
|
467
345
|
## Troubleshooting
|
|
468
346
|
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
```bash
|
|
472
|
-
❌ GitHub Copilot CLI is not installed
|
|
473
|
-
```
|
|
474
|
-
|
|
475
|
-
**Problem:** Hermes requires the standalone Copilot CLI (not the deprecated `gh copilot` extension).
|
|
476
|
-
|
|
477
|
-
**Solution:**
|
|
478
|
-
|
|
479
|
-
```bash
|
|
480
|
-
# Install via npm (recommended)
|
|
481
|
-
npm install -g @github/copilot
|
|
482
|
-
|
|
483
|
-
# Or via Homebrew (macOS/Linux)
|
|
484
|
-
brew install github/gh/copilot-cli
|
|
485
|
-
|
|
486
|
-
# Verify installation
|
|
487
|
-
copilot --version
|
|
488
|
-
```
|
|
489
|
-
|
|
490
|
-
**Note:** The old `gh copilot` extension was deprecated on October 25, 2025. If you have it installed, you'll see a warning—install the new standalone CLI instead.
|
|
491
|
-
|
|
492
|
-
---
|
|
493
|
-
|
|
494
|
-
### Authentication Required
|
|
347
|
+
**No AI provider configured**
|
|
495
348
|
|
|
496
349
|
```bash
|
|
497
|
-
|
|
350
|
+
hermes config setup
|
|
498
351
|
```
|
|
499
352
|
|
|
500
|
-
**
|
|
353
|
+
**Wrong provider selected**
|
|
501
354
|
|
|
502
|
-
**Solution (choose one):**
|
|
503
|
-
|
|
504
|
-
**Option 1: OAuth (Recommended)**
|
|
505
355
|
```bash
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
# In the Copilot prompt, type:
|
|
510
|
-
/login
|
|
511
|
-
|
|
512
|
-
# Follow the browser OAuth flow
|
|
356
|
+
hermes config set provider anthropic
|
|
357
|
+
hermes config list # verify
|
|
513
358
|
```
|
|
514
359
|
|
|
515
|
-
**
|
|
516
|
-
```bash
|
|
517
|
-
# Create a token at: https://github.com/settings/tokens
|
|
518
|
-
# Enable "Copilot Requests" permission under "Permissions"
|
|
519
|
-
|
|
520
|
-
# Set the token in your environment
|
|
521
|
-
export GH_TOKEN="your_token_here"
|
|
360
|
+
**Key saved but not working**
|
|
522
361
|
|
|
523
|
-
# Add to your shell profile (~/.bashrc, ~/.zshrc) to persist:
|
|
524
|
-
echo 'export GH_TOKEN="your_token_here"' >> ~/.bashrc
|
|
525
|
-
```
|
|
526
|
-
|
|
527
|
-
**Option 3: GitHub CLI Integration**
|
|
528
362
|
```bash
|
|
529
|
-
#
|
|
530
|
-
|
|
363
|
+
# Check what Hermes sees
|
|
364
|
+
hermes config list
|
|
531
365
|
|
|
532
|
-
#
|
|
366
|
+
# Environment variables override saved config
|
|
367
|
+
# Check for conflicting vars:
|
|
368
|
+
echo $ANTHROPIC_API_KEY
|
|
533
369
|
```
|
|
534
370
|
|
|
535
|
-
**
|
|
536
|
-
- Active GitHub Copilot subscription ([subscribe here](https://github.com/features/copilot/plans))
|
|
537
|
-
- If using organization Copilot, "Copilot CLI" must be enabled in org settings
|
|
538
|
-
|
|
539
|
-
---
|
|
540
|
-
|
|
541
|
-
### Subscription Issues
|
|
371
|
+
**General debugging**
|
|
542
372
|
|
|
543
373
|
```bash
|
|
544
|
-
❌ GitHub Copilot subscription required
|
|
545
|
-
```
|
|
546
|
-
|
|
547
|
-
**Solution:**
|
|
548
|
-
- Verify you have an active Copilot subscription at [github.com/settings/copilot](https://github.com/settings/copilot)
|
|
549
|
-
- If using organization Copilot, check with your admin that "Copilot CLI" is enabled
|
|
550
|
-
- Individual plans start at $10/month, or free for students/OSS maintainers
|
|
551
|
-
|
|
552
|
-
---
|
|
553
|
-
|
|
554
|
-
### Slow Responses
|
|
555
|
-
|
|
556
|
-
If AI responses are slow, try:
|
|
557
|
-
- Use a faster model: `--model claude-sonnet-4.5` (default, fastest)
|
|
558
|
-
- Check internet connection
|
|
559
|
-
- Verify Copilot subscription is active
|
|
560
|
-
- Try running `copilot` directly to test connection
|
|
561
|
-
|
|
562
|
-
---
|
|
563
|
-
|
|
564
|
-
### Command Not Working
|
|
565
|
-
|
|
566
|
-
```bash
|
|
567
|
-
# Check Hermes version
|
|
568
374
|
hermes --version
|
|
569
|
-
|
|
570
|
-
# Verify Copilot CLI is installed and authenticated
|
|
571
|
-
copilot --version
|
|
572
|
-
copilot -p "test" --allow-all-tools -s
|
|
573
|
-
|
|
574
|
-
# Check git is working
|
|
375
|
+
hermes config list
|
|
575
376
|
git status
|
|
576
|
-
|
|
577
|
-
# Test in a clean repo
|
|
578
|
-
cd /tmp && git init test && cd test
|
|
579
|
-
git config user.name "Test" && git config user.email "test@example.com"
|
|
580
|
-
hermes plan "test"
|
|
581
377
|
```
|
|
582
378
|
|
|
583
379
|
---
|
|
584
380
|
|
|
585
|
-
### Getting Help
|
|
586
|
-
|
|
587
|
-
If you're still having issues:
|
|
588
|
-
1. Check the [GitHub Copilot CLI documentation](https://docs.github.com/en/copilot/how-tos/use-copilot-agents/use-copilot-cli)
|
|
589
|
-
2. Verify Copilot CLI works independently: `copilot -p "hello" -s`
|
|
590
|
-
3. Open an issue at [github.com/simandebvu/hermes-cli/issues](https://github.com/simandebvu/hermes-cli/issues) with:
|
|
591
|
-
- Output of `hermes --version`
|
|
592
|
-
- Output of `copilot --version`
|
|
593
|
-
- The exact error message you're seeing
|
|
594
|
-
|
|
595
|
-
---
|
|
596
|
-
|
|
597
381
|
## Contributing
|
|
598
382
|
|
|
599
|
-
Contributions are welcome! Please see [DEVELOPMENT.md](DEVELOPMENT.md) for:
|
|
600
|
-
|
|
601
|
-
- Project structure
|
|
602
|
-
- Development setup
|
|
603
|
-
- Adding new commands
|
|
604
|
-
- Testing guidelines
|
|
605
|
-
- Code style
|
|
606
|
-
|
|
607
|
-
### Quick Start for Contributors
|
|
608
|
-
|
|
609
383
|
```bash
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
cd hermes
|
|
384
|
+
git clone https://github.com/simandebvu/hermes-cli.git
|
|
385
|
+
cd hermes-cli
|
|
613
386
|
bun install
|
|
614
|
-
|
|
615
|
-
# Run in dev mode
|
|
616
387
|
bun run dev --help
|
|
617
|
-
|
|
618
|
-
# Build
|
|
619
388
|
bun run build
|
|
620
|
-
|
|
621
|
-
# Test
|
|
622
389
|
bun run typecheck
|
|
623
390
|
```
|
|
624
391
|
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
## FAQ
|
|
628
|
-
|
|
629
|
-
**Q: Does Hermes send my code to AI services?**
|
|
630
|
-
A: Only repository state metadata (branch names, file lists, status) is sent. File contents are not transmitted unless explicitly needed for conflict resolution. See [SECURITY.md](docs/SECURITY.md) for details.
|
|
631
|
-
|
|
632
|
-
**Q: Does Hermes require a GitHub Copilot subscription?**
|
|
633
|
-
A: Yes. Hermes uses the GitHub Copilot CLI, which requires an active Copilot subscription.
|
|
634
|
-
|
|
635
|
-
**Q: Can I use Hermes without internet?**
|
|
636
|
-
A: No. Hermes requires internet connectivity to communicate with GitHub Copilot's AI models.
|
|
637
|
-
|
|
638
|
-
**Q: Will Hermes work with my existing Git workflow?**
|
|
639
|
-
A: Yes! Hermes is designed to complement your workflow, not replace it. Use it when you need guidance, fall back to raw Git anytime.
|
|
640
|
-
|
|
641
|
-
**Q: What if Hermes suggests something wrong?**
|
|
642
|
-
A: Hermes never executes commands without showing them first. You always have the final say. If a suggestion seems wrong, don't proceed and use raw Git instead.
|
|
643
|
-
|
|
644
|
-
---
|
|
645
|
-
|
|
646
|
-
## Efficiency Metrics
|
|
647
|
-
|
|
648
|
-
Real-world time savings reported by users:
|
|
649
|
-
|
|
650
|
-
| Task | Raw Git | With Hermes | Time Saved |
|
|
651
|
-
|------|---------|-------------|------------|
|
|
652
|
-
| **Start feature** | 2-3 min | 30 sec | ~2 min |
|
|
653
|
-
| **Sync branch** | 3-5 min | 45 sec | ~3 min |
|
|
654
|
-
| **Resolve conflict** | 10-15 min | 5 min | ~8 min |
|
|
655
|
-
| **Daily workflows** | 15-20 min | 5 min | ~12 min |
|
|
656
|
-
|
|
657
|
-
**Average:** **10-15 hours saved per developer per month**
|
|
658
|
-
|
|
659
|
-
---
|
|
660
|
-
|
|
661
|
-
## Roadmap
|
|
662
|
-
|
|
663
|
-
### Current (v0.2) ✨
|
|
664
|
-
- ✅ 10 commands including efficiency features
|
|
665
|
-
- ✅ GitHub Copilot CLI integration
|
|
666
|
-
- ✅ Project context awareness (`hermes init`)
|
|
667
|
-
- ✅ Analytics dashboard (`hermes stats`)
|
|
668
|
-
- ✅ Workflow shortcuts (`hermes workflow`)
|
|
669
|
-
- ✅ Team-shareable configuration
|
|
670
|
-
- ✅ Time-saved tracking
|
|
671
|
-
|
|
672
|
-
### Next (v0.3)
|
|
673
|
-
- [ ] `hermes undo` - Revert last operation safely
|
|
674
|
-
- [ ] Auto-backup system before risky operations
|
|
675
|
-
- [ ] Ticket integration (Linear, Jira)
|
|
676
|
-
- [ ] `--dry-run` flag for all commands
|
|
677
|
-
|
|
678
|
-
See [PRODUCT_VISION.md](docs/PRODUCT_VISION.md) for full roadmap.
|
|
679
|
-
|
|
680
|
-
### Future
|
|
681
|
-
- [ ] `hermes review` - PR review assistance
|
|
682
|
-
- [ ] `hermes explain "<git-command>"` - Explain any Git command
|
|
683
|
-
- [ ] Configuration file support (`~/.hermesrc`)
|
|
684
|
-
- [ ] Plugin system for custom commands
|
|
685
|
-
- [ ] Interactive mode with `hermes shell`
|
|
392
|
+
Issues and PRs welcome at [github.com/simandebvu/hermes-cli](https://github.com/simandebvu/hermes-cli).
|
|
686
393
|
|
|
687
394
|
---
|
|
688
395
|
|
|
689
396
|
## Why "Hermes"?
|
|
690
397
|
|
|
691
|
-
In Greek mythology,
|
|
692
|
-
|
|
693
|
-
- **Branches are worlds.**
|
|
694
|
-
- **Merges are crossings.**
|
|
695
|
-
- **Hermes ensures you cross safely.**
|
|
398
|
+
In Greek mythology, Hermes guides travelers and carries messages between worlds. Branches are worlds. Merges are crossings. Hermes makes sure you get there safely.
|
|
696
399
|
|
|
697
400
|
---
|
|
698
401
|
|
|
699
402
|
## License
|
|
700
403
|
|
|
701
|
-
[MIT
|
|
702
|
-
|
|
703
|
-
---
|
|
704
|
-
|
|
705
|
-
## Acknowledgments
|
|
706
|
-
|
|
707
|
-
- Powered by [GitHub Copilot CLI](https://github.com/github/copilot-cli)
|
|
708
|
-
- Built with [Commander.js](https://github.com/tj/commander.js), [Chalk](https://github.com/chalk/chalk), and [Inquirer](https://github.com/SBoudrias/Inquirer.js)
|
|
709
|
-
- Inspired by the need to make Git safer and more accessible
|
|
404
|
+
[MIT](LICENSE)
|
|
710
405
|
|
|
711
406
|
---
|
|
712
407
|
|
|
713
408
|
<div align="center">
|
|
714
409
|
|
|
715
|
-
**
|
|
410
|
+
**Built with [Commander.js](https://github.com/tj/commander.js), [Chalk](https://github.com/chalk/chalk), [Inquirer](https://github.com/SBoudrias/Inquirer.js)**
|
|
716
411
|
|
|
717
|
-
[Report
|
|
412
|
+
[Report a bug](https://github.com/simandebvu/hermes-cli/issues) • [Request a feature](https://github.com/simandebvu/hermes-cli/issues)
|
|
718
413
|
|
|
719
414
|
</div>
|