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 CHANGED
@@ -7,9 +7,29 @@ npm install -g gurtcli
7
7
  gurtcli
8
8
  ```
9
9
 
10
- Written in Go. Distributed as a single binary. The npm package is a thin installer — `npm install -g gurtcli` downloads the right binary for your OS.
10
+ Done. That's the install and setup.
11
11
 
12
- **Zero config.** First run prompts for provider (OpenAI, Anthropic, or any OpenAI-compatible endpoint) and API key. Key is saved to your OS keychain. Model choice is persisted.
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
- Pick a provider, enter your API key, select a model. You're in the chat.
41
+ First run walks you through provider selection, API key entry, and model picker. After that you're in the chat.
22
42
 
23
- ## CLI flags
43
+ Type `/exit` or press `ctrl+c` to quit.
24
44
 
25
- | Flag | Purpose |
26
- |---|---|
27
- | `--model <name>` | Skip model picker |
28
- | `--provider <provider>` | Skip provider picker (openai, anthropic) |
29
- | `--yolo` | Skip all permission prompts |
30
- | `--dangerously-skip-permissions` | Same as --yolo |
31
- | `--reconfigure` | Force provider/model setup |
32
- | `--version` | Print version and exit |
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
- | `/thinking` | Set thinking type (adaptive/enabled/disabled) |
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
- | `/exit` | Quit |
70
+ | `/allow` | Manage always-allowed tools and commands |
71
+ | `/update` | Update to the latest version |
72
+ | `/exit` | Quit the application |
48
73
 
49
- ## How it works
74
+ Type `/` in chat to see autocomplete suggestions for all commands.
50
75
 
51
- 1. You describe what you want in natural language.
52
- 2. Gurt sends it to an LLM.
53
- 3. The LLM decides which tool to use read, write, edit, delete, or run a shell command.
54
- 4. Gurt executes it and shows the result.
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
- That's the whole loop. No plugins. No MCP. No subagents.
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
- Built with [Bubble Tea](https://github.com/charmbracelet/bubbletea).
61
- [GitHub](https://github.com/sillygru/gurtcli) · [Issues](https://github.com/sillygru/gurtcli/issues)
209
+ MIT
package/bin/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2026 gru
3
+ Copyright (c) 2026 sillygru
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
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
- | `/thinking` | Set thinking type (adaptive/enabled/disabled) |
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 `/thinking <type>` and `/effort <level>`.
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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gurtcli",
3
- "version": "0.14.2",
3
+ "version": "0.14.3",
4
4
  "description": "A coding agent in your terminal. Type what you want. It does the rest.",
5
5
  "bin": {
6
6
  "gurtcli": "cli.js"