gurtcli 0.14.2 → 0.14.3
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 +174 -26
- package/bin/LICENSE +1 -1
- package/bin/README.md +38 -7
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -7,9 +7,29 @@ npm install -g gurtcli
|
|
|
7
7
|
gurtcli
|
|
8
8
|
```
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
Done. That's the install and setup.
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
## Why
|
|
13
|
+
|
|
14
|
+
Most coding AI tools are bloated. Slow to start. Drowning in config files. Too many buttons.
|
|
15
|
+
|
|
16
|
+
Gurt is the opposite:
|
|
17
|
+
|
|
18
|
+
- **One install command.** `npm install -g gurtcli`. That's it.
|
|
19
|
+
- **One entry point.** `gurtcli` opens a chat. No subcommands. No menus.
|
|
20
|
+
- **Zero config.** Get an API key. First run saves it to your OS keychain.
|
|
21
|
+
- **Fast startup.** Written in Go. Compiles to a single binary. No runtime to load.
|
|
22
|
+
- **Small surface.** Five tools. Read, write, edit, delete, run. Anything more is noise.
|
|
23
|
+
|
|
24
|
+
## How it works
|
|
25
|
+
|
|
26
|
+
1. You type what you want.
|
|
27
|
+
2. Gurt sends it to an LLM.
|
|
28
|
+
3. The LLM decides what to do — read a file, edit code, run a command.
|
|
29
|
+
4. Gurt does it. Shows you the result.
|
|
30
|
+
5. Repeat until you're done.
|
|
31
|
+
|
|
32
|
+
No multi-step approval chains. No subagent trees. No plugin marketplace. Just a chat loop that can touch your filesystem.
|
|
13
33
|
|
|
14
34
|
## Quick start
|
|
15
35
|
|
|
@@ -18,44 +38,172 @@ npm install -g gurtcli
|
|
|
18
38
|
gurtcli
|
|
19
39
|
```
|
|
20
40
|
|
|
21
|
-
|
|
41
|
+
First run walks you through provider selection, API key entry, and model picker. After that you're in the chat.
|
|
22
42
|
|
|
23
|
-
|
|
43
|
+
Type `/exit` or press `ctrl+c` to quit.
|
|
24
44
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
45
|
+
### Flags (all optional)
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
--model <name> skip model picker
|
|
49
|
+
--provider <name> skip provider picker (openai, anthropic, gemini)
|
|
50
|
+
--yolo skip all permission prompts
|
|
51
|
+
--dangerously-skip-permissions skip all permission prompts
|
|
52
|
+
--reconfigure force provider and model setup
|
|
53
|
+
--force-local use embedded model details instead of fetching from GitHub
|
|
54
|
+
--version print version and exit
|
|
55
|
+
```
|
|
33
56
|
|
|
34
57
|
## Slash commands
|
|
35
58
|
|
|
36
59
|
| Command | What it does |
|
|
37
60
|
|---|---|
|
|
38
61
|
| `/help` | Show available commands |
|
|
39
|
-
| `/model` | Change model |
|
|
62
|
+
| `/model` | Change model for current provider |
|
|
40
63
|
| `/provider` | Change provider |
|
|
41
|
-
| `/auth` | Change API key |
|
|
64
|
+
| `/auth` | Change API key for current provider |
|
|
42
65
|
| `/session` | Switch to a saved session |
|
|
43
66
|
| `/new` | Start a fresh session |
|
|
44
|
-
| `/reasoning` | Toggle reasoning visibility |
|
|
45
|
-
| `/
|
|
67
|
+
| `/show-reasoning` | Toggle reasoning visibility |
|
|
68
|
+
| `/reasoning` | Set thinking type or reasoning effort |
|
|
46
69
|
| `/effort` | Set effort level (low/medium/high/xhigh/max) |
|
|
47
|
-
| `/
|
|
70
|
+
| `/allow` | Manage always-allowed tools and commands |
|
|
71
|
+
| `/update` | Update to the latest version |
|
|
72
|
+
| `/exit` | Quit the application |
|
|
48
73
|
|
|
49
|
-
|
|
74
|
+
Type `/` in chat to see autocomplete suggestions for all commands.
|
|
50
75
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
76
|
+
## Sessions
|
|
77
|
+
|
|
78
|
+
Every chat session is automatically saved to `.gurtcli/sessions/` in your workspace. Sessions persist your message history, provider, model, and reasoning configuration across restarts.
|
|
79
|
+
|
|
80
|
+
- **Resume a session** — launch `gurtcli` in the same directory and it picks up where you left off.
|
|
81
|
+
- **Switch sessions** — `/session` shows a list of saved sessions.
|
|
82
|
+
- **New session** — `/new` saves the current session and starts fresh.
|
|
83
|
+
|
|
84
|
+
Session data is stored as JSON files and is portable across machines.
|
|
85
|
+
|
|
86
|
+
## Provider & model setup
|
|
87
|
+
|
|
88
|
+
Supports **OpenAI**, **Anthropic**, **Google Gemini**, and any **OpenAI-compatible endpoint**.
|
|
89
|
+
|
|
90
|
+
First run shows a provider picker. Choose one and enter your API key. The key is saved to your OS keychain — no env vars or config file secrets.
|
|
91
|
+
|
|
92
|
+
After picking a provider, models are fetched from the API and displayed in a filterable list. Type to narrow down, press enter to select.
|
|
93
|
+
|
|
94
|
+
Use `--provider` and `--model` flags to skip setup entirely:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
gurtcli --provider anthropic --model claude-sonnet-5-20260630
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Custom endpoints
|
|
101
|
+
|
|
102
|
+
Select "Custom" in the provider picker to use any OpenAI-compatible endpoint (Groq, OpenRouter, Ollama, etc.). You can use it one-time or save it as a named endpoint for reuse.
|
|
103
|
+
|
|
104
|
+
Saved endpoints appear in the provider list. Press `d` to delete a saved endpoint.
|
|
105
|
+
|
|
106
|
+
## Reasoning configuration
|
|
107
|
+
|
|
108
|
+
When your model supports it, gurt lets you configure reasoning behavior after model selection.
|
|
109
|
+
|
|
110
|
+
**Anthropic models** — two settings:
|
|
111
|
+
- **Thinking type** — `adaptive`, `enabled`, or `disabled`
|
|
112
|
+
- **Effort level** — `low`, `medium`, `high`, `xhigh`, or `max`
|
|
113
|
+
|
|
114
|
+
**OpenAI models** — one setting:
|
|
115
|
+
- **Reasoning effort** — `none`, `low`, `medium`, `high`, `xhigh`, or `max`
|
|
116
|
+
|
|
117
|
+
Navigate with `↑`/`↓`, change values with `←`/`→`, confirm with `enter`.
|
|
118
|
+
|
|
119
|
+
Change these mid-session with `/reasoning <type>` and `/effort <level>`.
|
|
120
|
+
|
|
121
|
+
Toggle reasoning visibility inline with `/show-reasoning` or click the `[▼]` / `[▶]` toggle with your mouse.
|
|
122
|
+
|
|
123
|
+
## Permissions
|
|
124
|
+
|
|
125
|
+
Destructive operations (write, edit, delete, run) prompt for confirmation:
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
❯ y
|
|
129
|
+
(y)es / (n)o / (p)refix / allow for (a)ll
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
- `y` — allow once
|
|
133
|
+
- `n` — deny once
|
|
134
|
+
- `p` — allow this command prefix (e.g. "npm") for the rest of the session and save it to config
|
|
135
|
+
- `a` — allow for the rest of this session
|
|
136
|
+
|
|
137
|
+
Use `--yolo` or `--dangerously-skip-permissions` to skip all prompts.
|
|
138
|
+
|
|
139
|
+
### Always-allowed tools and commands
|
|
140
|
+
|
|
141
|
+
By default, these tools are always allowed without prompting:
|
|
142
|
+
- `read_file`
|
|
143
|
+
- `write_file`
|
|
144
|
+
- `edit_file`
|
|
145
|
+
|
|
146
|
+
And these command prefixes are always allowed:
|
|
147
|
+
- `cat`, `ls`, `grep`, `find`, `head`, `tail`, `echo`, `pwd`, etc.
|
|
148
|
+
|
|
149
|
+
Manage them with `/allow`.
|
|
150
|
+
|
|
151
|
+
## Automatic Updates
|
|
152
|
+
|
|
153
|
+
Gurt automatically checks for updates in the background when you start a chat session. If an update is available, you'll see a notification.
|
|
154
|
+
|
|
155
|
+
To update manually:
|
|
156
|
+
```
|
|
157
|
+
/update
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
## AGENTS.md
|
|
161
|
+
|
|
162
|
+
If your project has an `AGENTS.md` file in its root directory, its contents are appended to the system prompt on every LLM call. Use this to provide project-specific instructions, conventions, and context that the LLM should follow.
|
|
163
|
+
|
|
164
|
+
## API keys
|
|
165
|
+
|
|
166
|
+
Gurt stores your API key in the OS keychain. No env vars needed. You're prompted once on first run and never again.
|
|
167
|
+
|
|
168
|
+
macOS uses Keychain. Linux uses Secret Service (libsecret). Windows uses Credential Manager.
|
|
169
|
+
|
|
170
|
+
**No keychain available?** (headless server, CI) — Gurt asks for the key each session. For CI, set `GURT_API_KEY` as an env var.
|
|
171
|
+
|
|
172
|
+
Your model choice is saved to `~/.config/gurtcli/config.json` after first run.
|
|
173
|
+
|
|
174
|
+
## Tools
|
|
175
|
+
|
|
176
|
+
| Tool | Does |
|
|
177
|
+
|------|------|
|
|
178
|
+
| `read_file` | Read a file with optional offset and limit |
|
|
179
|
+
| `write_file` | Create or overwrite a file (creates parent dirs) |
|
|
180
|
+
| `edit_file` | Replace exact text match in a file |
|
|
181
|
+
| `delete_file` | Remove a file |
|
|
182
|
+
| `run_bash` | Execute a shell command with timeout |
|
|
183
|
+
|
|
184
|
+
## Why Go
|
|
185
|
+
|
|
186
|
+
- Compiles to a single binary. No Python/Node runtime needed.
|
|
187
|
+
- Startup in milliseconds, not seconds.
|
|
188
|
+
- Cross-platform with one build flag.
|
|
189
|
+
- No dependency hell. `go build` produces one file you can scp anywhere.
|
|
190
|
+
|
|
191
|
+
## Why npm as the install path
|
|
192
|
+
|
|
193
|
+
Because `npm install -g` is the least friction for developers. The npm package is a thin wrapper that downloads the right Go binary for your OS. You never touch Go.
|
|
194
|
+
|
|
195
|
+
## Philosophy
|
|
196
|
+
|
|
197
|
+
This tool does one thing: takes a natural language request and turns it into filesystem operations. It doesn't need a plugin system. It doesn't need MCP. It doesn't need skills. It reads your prompt, calls an LLM, and runs tools. That's the whole loop.
|
|
198
|
+
|
|
199
|
+
Adding features is easy. The hard part is stopping.
|
|
200
|
+
|
|
201
|
+
## Telemetry
|
|
202
|
+
|
|
203
|
+
Gurt collects anonymous usage data on startup to count active installs. No personal data is collected — no names, emails, IPs, file paths, or system info beyond OS and architecture. The data is scoped to a randomly generated UUID stored at `~/.config/gurtcli/telemetry-id` that is never linked to your identity.
|
|
55
204
|
|
|
56
|
-
|
|
205
|
+
Telemetry is **enabled by default** but can be toggled at any time with the `/telemetry` command. Your preference is saved to the config file.
|
|
57
206
|
|
|
58
|
-
|
|
207
|
+
## License
|
|
59
208
|
|
|
60
|
-
|
|
61
|
-
[GitHub](https://github.com/sillygru/gurtcli) · [Issues](https://github.com/sillygru/gurtcli/issues)
|
|
209
|
+
MIT
|
package/bin/LICENSE
CHANGED
package/bin/README.md
CHANGED
|
@@ -46,10 +46,11 @@ Type `/exit` or press `ctrl+c` to quit.
|
|
|
46
46
|
|
|
47
47
|
```
|
|
48
48
|
--model <name> skip model picker
|
|
49
|
-
--provider <name> skip provider picker (openai, anthropic)
|
|
49
|
+
--provider <name> skip provider picker (openai, anthropic, gemini)
|
|
50
50
|
--yolo skip all permission prompts
|
|
51
51
|
--dangerously-skip-permissions skip all permission prompts
|
|
52
52
|
--reconfigure force provider and model setup
|
|
53
|
+
--force-local use embedded model details instead of fetching from GitHub
|
|
53
54
|
--version print version and exit
|
|
54
55
|
```
|
|
55
56
|
|
|
@@ -63,9 +64,11 @@ Type `/exit` or press `ctrl+c` to quit.
|
|
|
63
64
|
| `/auth` | Change API key for current provider |
|
|
64
65
|
| `/session` | Switch to a saved session |
|
|
65
66
|
| `/new` | Start a fresh session |
|
|
66
|
-
| `/reasoning` | Toggle reasoning visibility |
|
|
67
|
-
| `/
|
|
67
|
+
| `/show-reasoning` | Toggle reasoning visibility |
|
|
68
|
+
| `/reasoning` | Set thinking type or reasoning effort |
|
|
68
69
|
| `/effort` | Set effort level (low/medium/high/xhigh/max) |
|
|
70
|
+
| `/allow` | Manage always-allowed tools and commands |
|
|
71
|
+
| `/update` | Update to the latest version |
|
|
69
72
|
| `/exit` | Quit the application |
|
|
70
73
|
|
|
71
74
|
Type `/` in chat to see autocomplete suggestions for all commands.
|
|
@@ -82,7 +85,7 @@ Session data is stored as JSON files and is portable across machines.
|
|
|
82
85
|
|
|
83
86
|
## Provider & model setup
|
|
84
87
|
|
|
85
|
-
Supports **OpenAI**, **Anthropic**, and any **OpenAI-compatible endpoint**.
|
|
88
|
+
Supports **OpenAI**, **Anthropic**, **Google Gemini**, and any **OpenAI-compatible endpoint**.
|
|
86
89
|
|
|
87
90
|
First run shows a provider picker. Choose one and enter your API key. The key is saved to your OS keychain — no env vars or config file secrets.
|
|
88
91
|
|
|
@@ -113,9 +116,9 @@ When your model supports it, gurt lets you configure reasoning behavior after mo
|
|
|
113
116
|
|
|
114
117
|
Navigate with `↑`/`↓`, change values with `←`/`→`, confirm with `enter`.
|
|
115
118
|
|
|
116
|
-
Change these mid-session with `/
|
|
119
|
+
Change these mid-session with `/reasoning <type>` and `/effort <level>`.
|
|
117
120
|
|
|
118
|
-
Toggle reasoning visibility inline with `/reasoning` or click the `[▼]` / `[▶]` toggle with your mouse.
|
|
121
|
+
Toggle reasoning visibility inline with `/show-reasoning` or click the `[▼]` / `[▶]` toggle with your mouse.
|
|
119
122
|
|
|
120
123
|
## Permissions
|
|
121
124
|
|
|
@@ -123,15 +126,37 @@ Destructive operations (write, edit, delete, run) prompt for confirmation:
|
|
|
123
126
|
|
|
124
127
|
```
|
|
125
128
|
❯ y
|
|
126
|
-
(y)es / (n)o / allow for (a)ll
|
|
129
|
+
(y)es / (n)o / (p)refix / allow for (a)ll
|
|
127
130
|
```
|
|
128
131
|
|
|
129
132
|
- `y` — allow once
|
|
130
133
|
- `n` — deny once
|
|
134
|
+
- `p` — allow this command prefix (e.g. "npm") for the rest of the session and save it to config
|
|
131
135
|
- `a` — allow for the rest of this session
|
|
132
136
|
|
|
133
137
|
Use `--yolo` or `--dangerously-skip-permissions` to skip all prompts.
|
|
134
138
|
|
|
139
|
+
### Always-allowed tools and commands
|
|
140
|
+
|
|
141
|
+
By default, these tools are always allowed without prompting:
|
|
142
|
+
- `read_file`
|
|
143
|
+
- `write_file`
|
|
144
|
+
- `edit_file`
|
|
145
|
+
|
|
146
|
+
And these command prefixes are always allowed:
|
|
147
|
+
- `cat`, `ls`, `grep`, `find`, `head`, `tail`, `echo`, `pwd`, etc.
|
|
148
|
+
|
|
149
|
+
Manage them with `/allow`.
|
|
150
|
+
|
|
151
|
+
## Automatic Updates
|
|
152
|
+
|
|
153
|
+
Gurt automatically checks for updates in the background when you start a chat session. If an update is available, you'll see a notification.
|
|
154
|
+
|
|
155
|
+
To update manually:
|
|
156
|
+
```
|
|
157
|
+
/update
|
|
158
|
+
```
|
|
159
|
+
|
|
135
160
|
## AGENTS.md
|
|
136
161
|
|
|
137
162
|
If your project has an `AGENTS.md` file in its root directory, its contents are appended to the system prompt on every LLM call. Use this to provide project-specific instructions, conventions, and context that the LLM should follow.
|
|
@@ -173,6 +198,12 @@ This tool does one thing: takes a natural language request and turns it into fil
|
|
|
173
198
|
|
|
174
199
|
Adding features is easy. The hard part is stopping.
|
|
175
200
|
|
|
201
|
+
## Telemetry
|
|
202
|
+
|
|
203
|
+
Gurt collects anonymous usage data on startup to count active installs. No personal data is collected — no names, emails, IPs, file paths, or system info beyond OS and architecture. The data is scoped to a randomly generated UUID stored at `~/.config/gurtcli/telemetry-id` that is never linked to your identity.
|
|
204
|
+
|
|
205
|
+
Telemetry is **enabled by default** but can be toggled at any time with the `/telemetry` command. Your preference is saved to the config file.
|
|
206
|
+
|
|
176
207
|
## License
|
|
177
208
|
|
|
178
209
|
MIT
|