@trybullet/cli 1.4.9 → 1.4.11

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.
Files changed (2) hide show
  1. package/README.md +61 -2
  2. package/package.json +6 -6
package/README.md CHANGED
@@ -28,6 +28,23 @@ everything live. Connect a cloud provider or explicitly download the optional on
28
28
  - **Tools:** read / write / edit / delete, `search_code`, `find_files`,
29
29
  `run_command`, background processes, web search + fetch, and a real browser
30
30
  (below). File tools reach any absolute path; commands run from the workspace.
31
+ - **Remote SSH workspaces.** Open `user@host:/path/to/project` — from the
32
+ sidebar (**Connect over SSH…**) or `bullet -C user@host:/path` — and Bullet
33
+ works on that machine. Transport is your own `ssh` binary, so `~/.ssh/config`,
34
+ IdentityFile, ssh-agent, ProxyJump and `Host` aliases (Daytona, Tailscale,
35
+ etc.) all just work; one multiplexed ControlMaster connection carries every
36
+ command. The remote folder is mirrored locally (dependency trees excluded),
37
+ file tools edit the mirror — diffs, snapshots and rewind included — while
38
+ every `run_command`/`start_process` executes on the host: edits rsync across
39
+ before each command, and whatever the command changed (lockfiles, generated
40
+ code, git commits) syncs back after it. When a remote dev server prints a
41
+ localhost URL, its port is forwarded over the same connection so Preview and
42
+ the agent's browser reach it. Hosts without rsync fall back to tar-over-ssh.
43
+ Keys, ssh-agent, password and key-passphrase prompts, first-use host
44
+ confirmation, and keyboard-interactive/MFA are supported; secrets go directly
45
+ to OpenSSH and are never saved. A one-off key file (a cloud provider's `-i`
46
+ key) can be set in the SSH input or with `--ssh-key <file>`; it is remembered
47
+ per host. Use `ssh://user@host:2222/path` for non-standard ports.
31
48
  - **Code search that lands.** `search_code` is extended-regex, so `(a|b)`, `\d`
32
49
  and `+` mean what the model thinks they mean — grep's default dialect treats
33
50
  them as literal characters, which silently answered "no matches" for code that
@@ -99,7 +116,9 @@ the provider auth are byte-for-byte the same code the app runs.
99
116
  npm link # puts `bullet` on your PATH
100
117
  bullet account signup # create a Bullet account (first run also offers this)
101
118
  bullet account guest # start without an email; upgrade later without losing history
102
- bullet auth # Claude / ChatGPT subscription, or an API key
119
+ bullet providers # connect or inspect providers and local servers
120
+ bullet auth openrouter # connect a specific provider directly
121
+ bullet auth status # show every connection
103
122
  bullet # interactive session in this folder
104
123
  bullet "fix the failing tests" # run one task, then keep talking
105
124
  bullet -p "what does app.js do" # print and exit — pipeable
@@ -108,7 +127,47 @@ git diff | bullet -p "review this"
108
127
 
109
128
  Inside a session: `enter` sends, `ctrl+j` newlines, `esc` stops a running turn,
110
129
  `tab` completes `/commands` and `@files`, `↑` walks history. `/help` lists the
111
- rest — `/model`, `/cost`, `/diff`, `/undo`, `/resume`, `/agents`.
130
+ rest — `/providers`, `/model`, `/thinking`, `/cost`, `/diff`, `/undo`, `/resume`, `/agents`.
131
+ `/login` signs in to your Bullet account; `/providers` connects and switches model providers.
132
+
133
+ ### Providers and thinking
134
+
135
+ `bullet providers` (or `bullet auth`) presents the full provider surface: Claude and ChatGPT/Codex
136
+ subscriptions; Anthropic, OpenAI, xAI, Gemini (Google AI Studio), Groq, and
137
+ OpenRouter API keys; Ollama and LM Studio local servers; and a custom
138
+ OpenAI-compatible endpoint. Each connection keeps its own encrypted key,
139
+ endpoint, and selected model, so adding one never replaces another.
140
+
141
+ Provider presets are used when you press Enter at the base-URL prompt:
142
+
143
+ ```bash
144
+ bullet auth gemini # Google AI Studio
145
+ bullet auth groq
146
+ bullet auth openrouter
147
+ bullet auth ollama # http://localhost:11434/v1
148
+ bullet auth lmstudio # http://localhost:1234/v1
149
+ bullet auth custom # enter an HTTPS endpoint
150
+ bullet auth status
151
+ ```
152
+
153
+ Endpoints without a scheme are saved as HTTPS. HTTP is accepted only for
154
+ loopback local servers. Local servers do not require a key. Use a provider and
155
+ thinking level per run or per session:
156
+
157
+ ```bash
158
+ bullet --provider openrouter --model openai/gpt-5.2 --thinking high "review this"
159
+ bullet --provider ollama --model qwen3-coder "fix the tests"
160
+ # in a session — unconfigured providers connect before becoming active
161
+ /providers gemini
162
+ /model gemini-2.5-pro
163
+ /thinking high # auto | low | medium | high | xhigh | max
164
+ ```
165
+
166
+ `--effort` remains an alias for `--thinking`. The setting is persisted in the
167
+ session and forwarded only where the selected model supports it: OpenAI
168
+ reasoning models, Claude, supported xAI/Gemini/Groq models, and OpenRouter
169
+ models that advertise reasoning metadata. Unsupported local and compatible
170
+ models receive no reasoning parameter, so the setting does not cause API errors.
112
171
 
113
172
  Skills come across from Claude Code and Codex without the desktop app:
114
173
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trybullet/cli",
3
- "version": "1.4.9",
3
+ "version": "1.4.11",
4
4
  "description": "The fastest coding agent — terminal edition. Same router, tools and agent loop as the Bullet desktop app, in your shell.",
5
5
  "license": "UNLICENSED",
6
6
  "homepage": "https://codewithbullet.com",
@@ -24,11 +24,11 @@
24
24
  "bin/bullet.js"
25
25
  ],
26
26
  "optionalDependencies": {
27
- "@trybullet/cli-darwin-arm64": "1.4.9",
28
- "@trybullet/cli-darwin-x64": "1.4.9",
29
- "@trybullet/cli-linux-x64": "1.4.9",
30
- "@trybullet/cli-linux-arm64": "1.4.9",
31
- "@trybullet/cli-win32-x64": "1.4.9"
27
+ "@trybullet/cli-darwin-arm64": "1.4.11",
28
+ "@trybullet/cli-darwin-x64": "1.4.11",
29
+ "@trybullet/cli-linux-x64": "1.4.11",
30
+ "@trybullet/cli-linux-arm64": "1.4.11",
31
+ "@trybullet/cli-win32-x64": "1.4.11"
32
32
  },
33
33
  "engines": {
34
34
  "node": ">=18"