@greppleai/grip 0.0.1 → 0.1.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/CHANGELOG.md +93 -0
- package/README.md +13 -7
- package/dist/bun/cli.d.ts.map +1 -1
- package/dist/bun/cli.js +4 -2
- package/dist/bun/cli.js.map +1 -1
- package/dist/bun/embedded-assets.d.ts +3 -0
- package/dist/bun/embedded-assets.d.ts.map +1 -0
- package/dist/bun/embedded-assets.js +52 -0
- package/dist/bun/embedded-assets.js.map +1 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +1 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +3 -3
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +17 -2
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/remote-workspace-protocol/contract.d.ts +13 -4
- package/dist/core/remote-workspace-protocol/contract.d.ts.map +1 -1
- package/dist/core/remote-workspace-protocol/contract.js +17 -1
- package/dist/core/remote-workspace-protocol/contract.js.map +1 -1
- package/dist/core/remote-workspace-protocol/guest-shared-client.d.ts +16 -0
- package/dist/core/remote-workspace-protocol/guest-shared-client.d.ts.map +1 -0
- package/dist/core/remote-workspace-protocol/guest-shared-client.js +54 -0
- package/dist/core/remote-workspace-protocol/guest-shared-client.js.map +1 -0
- package/dist/core/remote-workspace-protocol/guest-shared-outbound-scheduler.d.ts +23 -0
- package/dist/core/remote-workspace-protocol/guest-shared-outbound-scheduler.d.ts.map +1 -0
- package/dist/core/remote-workspace-protocol/guest-shared-outbound-scheduler.js +112 -0
- package/dist/core/remote-workspace-protocol/guest-shared-outbound-scheduler.js.map +1 -0
- package/dist/core/remote-workspace-protocol/guest-shared-uplink.d.ts +30 -0
- package/dist/core/remote-workspace-protocol/guest-shared-uplink.d.ts.map +1 -0
- package/dist/core/remote-workspace-protocol/guest-shared-uplink.js +243 -0
- package/dist/core/remote-workspace-protocol/guest-shared-uplink.js.map +1 -0
- package/dist/core/remote-workspace-protocol/lima-owner-directory.d.ts +3 -0
- package/dist/core/remote-workspace-protocol/lima-owner-directory.d.ts.map +1 -0
- package/dist/core/remote-workspace-protocol/lima-owner-directory.js +31 -0
- package/dist/core/remote-workspace-protocol/lima-owner-directory.js.map +1 -0
- package/dist/core/remote-workspace-protocol/lima-owner-lock.d.ts +9 -0
- package/dist/core/remote-workspace-protocol/lima-owner-lock.d.ts.map +1 -0
- package/dist/core/remote-workspace-protocol/lima-owner-lock.js +89 -0
- package/dist/core/remote-workspace-protocol/lima-owner-lock.js.map +1 -0
- package/dist/core/remote-workspace-protocol/session.d.ts +2 -0
- package/dist/core/remote-workspace-protocol/session.d.ts.map +1 -1
- package/dist/core/remote-workspace-protocol/session.js +3 -0
- package/dist/core/remote-workspace-protocol/session.js.map +1 -1
- package/dist/core/remote-workspace-protocol/shared-transport.d.ts +71 -0
- package/dist/core/remote-workspace-protocol/shared-transport.d.ts.map +1 -0
- package/dist/core/remote-workspace-protocol/shared-transport.js +68 -0
- package/dist/core/remote-workspace-protocol/shared-transport.js.map +1 -0
- package/dist/core/sandbox/command.d.ts +2 -4
- package/dist/core/sandbox/command.d.ts.map +1 -1
- package/dist/core/sandbox/command.js +24 -46
- package/dist/core/sandbox/command.js.map +1 -1
- package/dist/core/sandbox/config.d.ts +91 -0
- package/dist/core/sandbox/config.d.ts.map +1 -0
- package/dist/core/sandbox/config.js +88 -0
- package/dist/core/sandbox/config.js.map +1 -0
- package/dist/core/sandbox/lima-guest-binary.d.ts +11 -0
- package/dist/core/sandbox/lima-guest-binary.d.ts.map +1 -0
- package/dist/core/sandbox/lima-guest-binary.js +140 -0
- package/dist/core/sandbox/lima-guest-binary.js.map +1 -0
- package/dist/core/sandbox/lima.d.ts +22 -3
- package/dist/core/sandbox/lima.d.ts.map +1 -1
- package/dist/core/sandbox/lima.js +434 -42
- package/dist/core/sandbox/lima.js.map +1 -1
- package/dist/core/sandbox/shared-lima-roots.d.ts +11 -0
- package/dist/core/sandbox/shared-lima-roots.d.ts.map +1 -0
- package/dist/core/sandbox/shared-lima-roots.js +25 -0
- package/dist/core/sandbox/shared-lima-roots.js.map +1 -0
- package/dist/core/sandbox/update-shared-guest-binary.d.ts +8 -0
- package/dist/core/sandbox/update-shared-guest-binary.d.ts.map +1 -0
- package/dist/core/sandbox/update-shared-guest-binary.js +100 -0
- package/dist/core/sandbox/update-shared-guest-binary.js.map +1 -0
- package/dist/core/settings-manager.d.ts +1 -5
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +25 -14
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/file-mutation-queue.d.ts +2 -0
- package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
- package/dist/core/tools/file-mutation-queue.js +9 -0
- package/dist/core/tools/file-mutation-queue.js.map +1 -1
- package/dist/core/tools/operations.d.ts +13 -2
- package/dist/core/tools/operations.d.ts.map +1 -1
- package/dist/core/tools/operations.js +132 -36
- package/dist/core/tools/operations.js.map +1 -1
- package/dist/daemon/activity-budget.d.ts +10 -0
- package/dist/daemon/activity-budget.d.ts.map +1 -0
- package/dist/daemon/activity-budget.js +34 -0
- package/dist/daemon/activity-budget.js.map +1 -0
- package/dist/daemon/config.d.ts +2 -0
- package/dist/daemon/config.d.ts.map +1 -1
- package/dist/daemon/config.js +15 -0
- package/dist/daemon/config.js.map +1 -1
- package/dist/daemon/outbound-budget.d.ts +10 -0
- package/dist/daemon/outbound-budget.d.ts.map +1 -0
- package/dist/daemon/outbound-budget.js +30 -0
- package/dist/daemon/outbound-budget.js.map +1 -0
- package/dist/daemon/security.d.ts.map +1 -1
- package/dist/daemon/security.js +3 -1
- package/dist/daemon/security.js.map +1 -1
- package/dist/daemon/server.d.ts.map +1 -1
- package/dist/daemon/server.js +104 -24
- package/dist/daemon/server.js.map +1 -1
- package/dist/daemon/shared-connection.d.ts +33 -0
- package/dist/daemon/shared-connection.d.ts.map +1 -0
- package/dist/daemon/shared-connection.js +271 -0
- package/dist/daemon/shared-connection.js.map +1 -0
- package/dist/daemon/shared-revision.d.ts +5 -0
- package/dist/daemon/shared-revision.d.ts.map +1 -0
- package/dist/daemon/shared-revision.js +61 -0
- package/dist/daemon/shared-revision.js.map +1 -0
- package/dist/daemon/shared-roots.d.ts +9 -0
- package/dist/daemon/shared-roots.d.ts.map +1 -0
- package/dist/daemon/shared-roots.js +33 -0
- package/dist/daemon/shared-roots.js.map +1 -0
- package/dist/daemon/workspace-runtime.d.ts +1 -1
- package/dist/daemon/workspace-runtime.d.ts.map +1 -1
- package/dist/daemon/workspace-runtime.js +42 -10
- package/dist/daemon/workspace-runtime.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +5 -3
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/assistant-message.d.ts +1 -0
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/assistant-message.js +13 -3
- package/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.d.ts +4 -3
- package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.js +5 -4
- package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.d.ts +4 -3
- package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.js +5 -4
- package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-message.js +4 -3
- package/dist/modes/interactive/components/custom-message.js.map +1 -1
- package/dist/modes/interactive/components/hook-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/hook-execution.js +3 -2
- package/dist/modes/interactive/components/hook-execution.js.map +1 -1
- package/dist/modes/interactive/components/message-card.d.ts +9 -0
- package/dist/modes/interactive/components/message-card.d.ts.map +1 -0
- package/dist/modes/interactive/components/message-card.js +24 -0
- package/dist/modes/interactive/components/message-card.js.map +1 -0
- package/dist/modes/interactive/components/skill-invocation-message.d.ts +4 -3
- package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.js +5 -4
- package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +27 -21
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message.js +3 -2
- package/dist/modes/interactive/components/user-message.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +0 -3
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +55 -44
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/theme/theme.d.ts +3 -0
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +10 -0
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/utils/clipboard-native.d.ts.map +1 -1
- package/dist/utils/clipboard-native.js +1 -1
- package/dist/utils/clipboard-native.js.map +1 -1
- package/dist/utils/image-resize.d.ts.map +1 -1
- package/dist/utils/image-resize.js +5 -0
- package/dist/utils/image-resize.js.map +1 -1
- package/dist/utils/photon.d.ts.map +1 -1
- package/dist/utils/photon.js +1 -0
- package/dist/utils/photon.js.map +1 -1
- package/docs/daemon.md +6 -4
- package/docs/docs.json +1 -1
- package/docs/index.md +8 -12
- package/docs/packages.md +3 -3
- package/docs/quickstart.md +11 -19
- package/docs/sandbox.md +40 -117
- package/docs/settings.md +12 -11
- package/docs/termux.md +1 -18
- package/docs/usage.md +2 -2
- package/examples/README.md +0 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/with-deps/package.json +1 -1
- package/npm-shrinkwrap.json +12 -12
- package/package.json +5 -6
- package/dist/core/sandbox/docker.d.ts +0 -169
- package/dist/core/sandbox/docker.d.ts.map +0 -1
- package/dist/core/sandbox/docker.js +0 -633
- package/dist/core/sandbox/docker.js.map +0 -1
- package/examples/sandbox-docker/Dockerfile +0 -274
- package/examples/sandbox-docker/README.md +0 -88
package/docs/daemon.md
CHANGED
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
`grip --daemon` starts Grip as a remote workspace runtime. A normal local Grip process remains the orchestrator: it owns provider credentials, model calls, prompts, sessions, compaction, extensions, subagents, RPC, and UI. The daemon owns one configured workspace and executes canonical workspace tools, primitive project-resource operations, streamed file transfers, optional process execution, and optional colocated LSP.
|
|
4
4
|
|
|
5
|
-
Grip
|
|
5
|
+
Grip includes the daemon in the single-file executable; install a published, checksummed binary using [Quickstart](quickstart.md#install) or use a locally built executable. The daemon needs no npm installation on its host.
|
|
6
6
|
|
|
7
7
|
## Start a daemon
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
|
|
10
|
+
# Install the verified Grip binary first (see Quickstart).
|
|
11
11
|
GRIP_DAEMON_TOKEN='long-random-token' \
|
|
12
12
|
grip --daemon --daemon-cwd /workspace --daemon-host 127.0.0.1 --daemon-port 8787
|
|
13
13
|
```
|
|
@@ -31,12 +31,15 @@ Use `GRIP_REMOTE_TOKEN` on the client. Do not put tokens in query strings or URL
|
|
|
31
31
|
|
|
32
32
|
## Topology and trust boundary
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
In ordinary v1 mode, each daemon connection exposes a single workspace root; all clients of a daemon still share its OS-user trust domain. The daemon is an authenticated remote-code-execution service: anyone with the bearer token can use every advertised daemon capability. The separately negotiated v2 shared-Lima mode binds a workspace root per channel, but does **not** provide hostile-client isolation.
|
|
35
35
|
|
|
36
36
|
Application-layer confinement prevents protocol paths and symlinks from escaping the configured workspace and optional temporary root for file tools, resource reads, file transfers, temporary outputs, subprocess working directories, and LSP paths. `GRIP_DAEMON_TEMP_ROOT` is opt-in and should point only to disposable storage inside an OS sandbox; it is unset by default. This is not an operating-system sandbox. If process execution is enabled, commands can access anything the daemon OS user can access. Run the daemon as a dedicated unprivileged user, in a container, VM, or equivalent sandbox for hostile repositories.
|
|
37
37
|
|
|
38
38
|
The daemon refuses root and insecure non-loopback deployment by default. Non-loopback HTTP requires explicit override and should only be used behind a trusted TLS terminator. Prefer TLS for direct non-local use.
|
|
39
39
|
|
|
40
|
+
|
|
41
|
+
The shared Lima workflow uses a **separately negotiated v2** protocol, not a reinterpretation of the v1 single-root handshake. Each local TUI opens its own authenticated WebSocket and binds a workspace channel under the guest daemon's fixed parent mount. The daemon starts with `--daemon-shared-parent`; ordinary `--remote` still creates a v1 connection. Shared transfers are not advertised (ordinary v1 transfers remain available), and guest process execution is enabled for trusted clients only. See [sandbox.md](sandbox.md#direct-shared-lima-attachment) for attachment and stop policy.
|
|
42
|
+
|
|
40
43
|
## Configuration
|
|
41
44
|
|
|
42
45
|
Common options:
|
|
@@ -74,7 +77,6 @@ File uploads/downloads and artifact reads use bounded streamed transfer messages
|
|
|
74
77
|
|
|
75
78
|
A local daemon smoke-test image lives at `packages/coding-agent/examples/daemon-docker` and starts the packaged `grip --daemon` command inside the container.
|
|
76
79
|
|
|
77
|
-
The sandbox base image used by `/sandbox start` lives at `packages/coding-agent/examples/sandbox-docker`. It builds from local release artifacts, expects the host workspace to be mounted at `/workspace`, and receives `GRIP_DAEMON_TOKEN` from the sandbox launcher environment. See [Docker Sandbox](sandbox.md) for the hidden `/sandbox` command, configuration precedence, auto-switch behavior, and security limits.
|
|
78
80
|
|
|
79
81
|
```bash
|
|
80
82
|
docker build -f packages/coding-agent/examples/daemon-docker/Dockerfile -t grip-remote-daemon-test .
|
package/docs/docs.json
CHANGED
package/docs/index.md
CHANGED
|
@@ -4,23 +4,19 @@ Grip is a minimal terminal coding harness. It is designed to stay small at the c
|
|
|
4
4
|
|
|
5
5
|
## Quick start
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Install the single compiled executable from a published Grip release:
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
|
|
10
|
+
# macOS/Linux
|
|
11
|
+
curl -fsSL https://raw.githubusercontent.com/greppleai/grip/main/install.sh | sh
|
|
11
12
|
```
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
To uninstall Grip itself after an npm install, use:
|
|
18
|
-
|
|
19
|
-
```bash
|
|
20
|
-
npm uninstall -g @greppleai/grip
|
|
14
|
+
```powershell
|
|
15
|
+
# Windows PowerShell
|
|
16
|
+
irm https://raw.githubusercontent.com/greppleai/grip/main/install.ps1 | iex
|
|
21
17
|
```
|
|
22
18
|
|
|
23
|
-
|
|
19
|
+
These commands require the scripts and checksummed release binaries to have been published. They do **not** install the Grip CLI through npm. See [Quickstart](quickstart.md) for pinning versions, PATH, and uninstall instructions; the old Pi installer at `https://pi.dev/install.sh` is unrelated.
|
|
24
20
|
|
|
25
21
|
Then run it in a project directory:
|
|
26
22
|
|
|
@@ -41,7 +37,7 @@ For the full first-run flow, see [Quickstart](quickstart.md). Upgrading from the
|
|
|
41
37
|
- [Settings](settings.md) - global and project settings.
|
|
42
38
|
- [Language Server Protocol](lsp.md) - configure spawned servers, attached endpoints, host connections, and remote-backend path mappings.
|
|
43
39
|
- [Remote Daemon](daemon.md) - run `grip --daemon` as a confined remote workspace runtime.
|
|
44
|
-
- [
|
|
40
|
+
- [Lima Sandbox](sandbox.md) - hidden user-only `/sandbox` command for Lima VM workspace execution.
|
|
45
41
|
- [Keybindings](keybindings.md) - default shortcuts and custom keybindings.
|
|
46
42
|
- [Sessions](sessions.md) - session management, branching, and tree navigation.
|
|
47
43
|
- [Compaction](compaction.md) - context compaction and branch summarization.
|
package/docs/packages.md
CHANGED
|
@@ -28,10 +28,10 @@ grip install ./relative/path/to/package
|
|
|
28
28
|
|
|
29
29
|
grip remove npm:@foo/bar
|
|
30
30
|
grip list # show installed packages from settings
|
|
31
|
-
grip update # update
|
|
31
|
+
grip update # update packages; for a compiled CLI rerun the verified installer
|
|
32
32
|
grip update --extensions # update packages and reconcile pinned git refs only
|
|
33
|
-
grip update --self #
|
|
34
|
-
grip update --self --force #
|
|
33
|
+
grip update --self # npm-managed CLI only; compiled binary cannot replace itself
|
|
34
|
+
grip update --self --force # npm-managed CLI only
|
|
35
35
|
grip update npm:@foo/bar # update one package
|
|
36
36
|
grip update --extension npm:@foo/bar
|
|
37
37
|
```
|
package/docs/quickstart.md
CHANGED
|
@@ -4,33 +4,25 @@ This page gets you from install to a useful first Grip session.
|
|
|
4
4
|
|
|
5
5
|
## Install
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Install the single compiled binary from a published [Grip GitHub release](https://github.com/greppleai/grip/releases) (no npm required):
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
|
|
10
|
+
# macOS/Linux; inspect the script before running
|
|
11
|
+
curl -fsSL https://raw.githubusercontent.com/greppleai/grip/main/install.sh | sh
|
|
11
12
|
```
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
Use the package manager that installed Grip:
|
|
18
|
-
|
|
19
|
-
```bash
|
|
20
|
-
# npm install -g
|
|
21
|
-
npm uninstall -g @greppleai/grip
|
|
14
|
+
```powershell
|
|
15
|
+
# Windows PowerShell
|
|
16
|
+
irm https://raw.githubusercontent.com/greppleai/grip/main/install.ps1 | iex
|
|
17
|
+
```
|
|
22
18
|
|
|
23
|
-
|
|
24
|
-
pnpm remove -g @greppleai/grip
|
|
19
|
+
The installers download a platform-specific executable and verify its published SHA-256 before placing it in your user PATH. Linux binaries target glibc (not Alpine/musl); macOS and Windows native functionality still requires platform validation. Set `GRIP_VERSION=vX.Y.Z` to pin a release or `GRIP_INSTALL_DIR` to select a destination; rerun to update. Open a new shell and confirm that `command -v grip` (PowerShell: `Get-Command grip.exe`) resolves to the installed binary; an older npm executable earlier in PATH can shadow it, and is never removed automatically. The scripts and release assets must be published first. A compiled binary may extract embedded resources into a private temporary directory at runtime, without installing Node or Bun.
|
|
25
20
|
|
|
26
|
-
|
|
27
|
-
yarn global remove @greppleai/grip
|
|
21
|
+
Alternatively, install `@greppleai/grip` with `npm install -g @greppleai/grip` when you need a Node installation. Each release also publishes `@greppleai/grip-ai`, `@greppleai/grip-agent-core`, and `@greppleai/grip-tui` for extension and SDK development.
|
|
28
22
|
|
|
29
|
-
|
|
30
|
-
bun uninstall -g @greppleai/grip
|
|
31
|
-
```
|
|
23
|
+
### Uninstall
|
|
32
24
|
|
|
33
|
-
Uninstalling Grip leaves settings, credentials, sessions, and installed Grip packages in `~/.grip/agent/`. For migrating an older Pi installation, see [Migrating to Grip](migrating-to-grip.md). The old Pi
|
|
25
|
+
For the binary installer, delete `~/.local/bin/grip` on macOS/Linux, or `%LOCALAPPDATA%\Programs\Grip\bin\grip.exe` on Windows (or the path set with `GRIP_INSTALL_DIR`). Remove the optional PATH entry from your shell profile or Windows user PATH if you no longer need it. For an npm installation, run `npm uninstall -g @greppleai/grip` instead. Uninstalling Grip leaves settings, credentials, sessions, and installed Grip packages in `~/.grip/agent/`. For migrating an older Pi installation, see [Migrating to Grip](migrating-to-grip.md). The old Pi installer is not a Grip installation method.
|
|
34
26
|
|
|
35
27
|
Then start Grip in the project directory you want it to work on:
|
|
36
28
|
|
package/docs/sandbox.md
CHANGED
|
@@ -1,97 +1,52 @@
|
|
|
1
1
|
# Workspace Sandbox
|
|
2
2
|
|
|
3
|
-
`/sandbox` is the
|
|
3
|
+
`/sandbox` is the user-only interactive command for workspace tool backends. It can show or clear the active backend, attach an existing sandbox daemon, or manage a Lima VM. Connections are session-local: switching back to an earlier session reconnects its remembered sandbox while Grip remains running. Local Grip retains provider credentials, model calls, session history, extensions, RPC, and UI; subagent workspace tools inherit the active backend.
|
|
4
4
|
|
|
5
|
-
The command
|
|
5
|
+
The command appears in slash-command completion but not in model-visible catalogs, system prompts, tool definitions, templates, skills, or rules. This is not a permission boundary: a model with host shell access may still invoke Lima directly.
|
|
6
6
|
|
|
7
7
|
## Commands
|
|
8
8
|
|
|
9
|
-
Type these commands in interactive mode:
|
|
10
|
-
|
|
11
9
|
```text
|
|
12
10
|
/sandbox [status]
|
|
13
11
|
/sandbox clear
|
|
14
12
|
/sandbox --attach <ws://url>
|
|
15
|
-
/sandbox start [--
|
|
16
|
-
/sandbox list
|
|
17
|
-
/sandbox stop [
|
|
13
|
+
/sandbox start [--name <lima-instance>] [--template <lima-template>] [--update]
|
|
14
|
+
/sandbox list
|
|
15
|
+
/sandbox stop [vm]
|
|
18
16
|
```
|
|
19
17
|
|
|
20
|
-
- `/sandbox
|
|
21
|
-
- `/sandbox
|
|
22
|
-
- `/sandbox
|
|
23
|
-
- `/sandbox start
|
|
24
|
-
- `/sandbox list`
|
|
25
|
-
- `/sandbox stop` stops
|
|
26
|
-
|
|
27
|
-
Example:
|
|
18
|
+
- `/sandbox status` shows the active workspace tool backend. `/sandbox clear` disconnects it without stopping a VM.
|
|
19
|
+
- `/sandbox --attach` connects to an already-running daemon without managing its lifecycle. Set `GRIP_REMOTE_TOKEN` if required. The daemon workspace root must match `--remote-cwd` in deferred mode, or `sandbox.workspaceMountPath` otherwise.
|
|
20
|
+
- `/sandbox start` creates a per-session Lima VM with the current working directory mounted read/write at `/workspace`. `--template` overrides the VM template for a new instance. `--name` creates an absent VM, resumes a stopped per-session VM, or attaches to a running VM after guest-mode inspection. A running VM with a verified shared guest-state marker uses the direct shared-daemon protocol; a VM without it follows the per-session path.
|
|
21
|
+
- `/sandbox start --name <running-shared-VM> --update` updates a verified shared guest and reconnects this TUI. It stages and validates the replacement first, stops its supervised daemon (disconnecting every attached client), atomically replaces the executable, and restarts the same service. It cannot be combined with `--template`; legacy, stopped, or unverifiable VMs are refused without disconnecting anyone.
|
|
22
|
+
- `/sandbox list` shows Lima instances mounting the current workspace. A shared VM mounting a parent might not appear from a child workspace; attach by exact name instead.
|
|
23
|
+
- `/sandbox stop` stops only tracked per-session daemons and process-owned VMs. For a shared named VM or an attached daemon it detaches the current session only. A matching name or mount does not establish ownership; named per-session VMs remain running after daemon stop. Grip never stops another client's shared guest or VM.
|
|
28
24
|
|
|
29
25
|
```text
|
|
30
|
-
|
|
31
|
-
/sandbox --
|
|
32
|
-
/sandbox stop
|
|
33
|
-
|
|
34
|
-
/sandbox start --image grip-sandbox:local
|
|
26
|
+
/sandbox start
|
|
27
|
+
/sandbox start --template template:alpine
|
|
35
28
|
/sandbox list
|
|
36
|
-
|
|
37
|
-
/sandbox start --runtime lima
|
|
38
|
-
/sandbox start --runtime lima --template template:alpine
|
|
39
|
-
/sandbox list --runtime lima
|
|
40
29
|
/sandbox stop
|
|
41
|
-
|
|
42
30
|
/sandbox start --name my-dev
|
|
31
|
+
/sandbox start --name my-dev --update
|
|
43
32
|
/sandbox stop
|
|
44
33
|
```
|
|
45
34
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
## Workspace mount and daemon endpoint
|
|
49
|
-
|
|
50
|
-
Defaults:
|
|
51
|
-
|
|
52
|
-
| Setting | Default |
|
|
53
|
-
| --- | --- |
|
|
54
|
-
| Host workspace | current working directory |
|
|
55
|
-
| Container workspace | `/workspace` |
|
|
56
|
-
| Daemon command | `grip --daemon` |
|
|
57
|
-
| Docker network mode | `bridge` |
|
|
58
|
-
| Daemon preferred bind and endpoint | `127.0.0.1:8787` |
|
|
59
|
-
| Daemon token | generated per start |
|
|
60
|
-
| Lima binary | `limactl` |
|
|
61
|
-
| Lima template | `template:docker-rootful` |
|
|
62
|
-
|
|
63
|
-
The mounted workspace is read/write. Any process in the container can modify files in the mounted host directory. Paths reported by the daemon use the container workspace root (`/workspace`), while local Grip keeps session and UI state on the host. The container uses Docker bridge networking and publishes only the authenticated daemon port to the configured host bind address (`127.0.0.1` by default), so sandbox processes cannot directly access host loopback services. Grip uses the configured daemon port when available and otherwise selects an available host port, allowing separate sessions to keep concurrent sandbox containers. The default image also configures `/tmp` as an additional confined temporary root, so workspace tools can use disposable scratch files without exposing another host mount.
|
|
35
|
+
A successful start shows the VM name/id, host-to-guest workspace mount, redacted daemon endpoint, and backend status. Workspace tools and resources then route through the guest daemon. Sandbox bash calls receive the current `GRIP_SESSION_ID`, `GRIP_SESSION_FILE`, `GRIP_PROVIDER`, `GRIP_MODEL`, and `GRIP_REASONING_LEVEL` metadata for the active session; other host environment variables are not forwarded automatically.
|
|
64
36
|
|
|
65
|
-
|
|
37
|
+
## Configuration
|
|
66
38
|
|
|
67
|
-
|
|
39
|
+
The mounted workspace is writable. The daemon normally binds through a host loopback forward on port `8787`; newly created VMs select an available port if necessary. New per-session daemons use fresh bearer tokens. Running shared guests retain their existing token, retrieved by each local TUI via Lima access. Grip keeps tokens in memory and redacts them from displayed output. Tokens are not stored in session files, so sandbox backends are not restored after Grip exits.
|
|
68
40
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
The configured default image is `ghcr.io/greppleai/grip-sandbox:latest`, but its publication has not been verified. Until it is available, build a reviewed local image below or configure a verified compatible replacement; do not assume the default image can be pulled. The local example image uses integrated `grip --daemon` from `@greppleai/grip`. There is no separate Grip daemon package or binary.
|
|
72
|
-
|
|
73
|
-
When a sandbox daemon connects, Grip also loads `~/.grip/AGENTS.md` from the daemon user's home directory as user-scoped context. This is separate from the orchestrator's global instructions and lets custom Docker images or Lima users define instructions that apply only inside the sandbox. Create or update the file inside the sandbox, then run `/reload` to refresh context.
|
|
74
|
-
Configuration precedence for a start is:
|
|
75
|
-
|
|
76
|
-
1. command flags: `/sandbox start --runtime <runtime>`, `--image <image>`, `--name <lima-instance>`, and `--template <lima-template>`;
|
|
77
|
-
2. environment variables: `GRIP_SANDBOX_*`;
|
|
78
|
-
3. project settings in `.grip/settings.json`;
|
|
79
|
-
4. global settings in `~/.grip/agent/settings.json`;
|
|
80
|
-
5. defaults.
|
|
81
|
-
|
|
82
|
-
Sandbox settings:
|
|
41
|
+
Start precedence: command `--template`, then `GRIP_SANDBOX_*` environment variables, project `.grip/settings.json`, global `~/.grip/agent/settings.json`, then defaults. Available settings:
|
|
83
42
|
|
|
84
43
|
```json
|
|
85
44
|
{
|
|
86
45
|
"sandbox": {
|
|
87
|
-
"runtime": "docker",
|
|
88
|
-
"image": "grip-sandbox:local",
|
|
89
|
-
"dockerBinary": "docker",
|
|
90
46
|
"limaBinary": "limactl",
|
|
91
47
|
"limaTemplate": "template:docker-rootful",
|
|
92
48
|
"limaInstanceNamePrefix": "grip-sandbox",
|
|
93
49
|
"workspaceMountPath": "/workspace",
|
|
94
|
-
"containerNamePrefix": "grip-sandbox",
|
|
95
50
|
"daemonPort": 8787,
|
|
96
51
|
"daemonHostBind": "127.0.0.1",
|
|
97
52
|
"cleanup": "stop"
|
|
@@ -99,83 +54,51 @@ Sandbox settings:
|
|
|
99
54
|
}
|
|
100
55
|
```
|
|
101
56
|
|
|
102
|
-
Environment
|
|
103
|
-
|
|
104
|
-
| Variable | Setting |
|
|
57
|
+
| Environment variable | Setting |
|
|
105
58
|
| --- | --- |
|
|
106
|
-
| `GRIP_SANDBOX_RUNTIME` | `sandbox.runtime` (`docker` or `lima`) |
|
|
107
|
-
| `GRIP_SANDBOX_IMAGE` | `sandbox.image` |
|
|
108
|
-
| `GRIP_SANDBOX_DOCKER` | `sandbox.dockerBinary` |
|
|
109
59
|
| `GRIP_SANDBOX_LIMA` | `sandbox.limaBinary` |
|
|
110
60
|
| `GRIP_SANDBOX_LIMA_TEMPLATE` | `sandbox.limaTemplate` |
|
|
111
61
|
| `GRIP_SANDBOX_LIMA_INSTANCE_PREFIX` | `sandbox.limaInstanceNamePrefix` |
|
|
112
62
|
| `GRIP_SANDBOX_WORKSPACE_MOUNT` | `sandbox.workspaceMountPath` |
|
|
113
|
-
| `GRIP_SANDBOX_CONTAINER_PREFIX` | `sandbox.containerNamePrefix` |
|
|
114
63
|
| `GRIP_SANDBOX_DAEMON_PORT` | `sandbox.daemonPort` |
|
|
115
64
|
| `GRIP_SANDBOX_DAEMON_HOST_BIND` | `sandbox.daemonHostBind` |
|
|
116
65
|
| `GRIP_SANDBOX_CLEANUP` | `sandbox.cleanup` (`stop` or `remove`) |
|
|
66
|
+
| `GRIP_SANDBOX_GUEST_BINARY` | Explicit local Linux ELF guest executable for development |
|
|
117
67
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
Build the local base image from repository release artifacts:
|
|
68
|
+
The default Lima template name contains `docker-rootful`; it is a Lima VM template choice, not a Docker-container sandbox runtime. Change `sandbox.limaTemplate` or use `--template` to select a different Lima template.
|
|
121
69
|
|
|
122
|
-
|
|
123
|
-
npm run release:local -- --out /tmp/grip-local-release --force
|
|
124
|
-
docker build \
|
|
125
|
-
-f packages/coding-agent/examples/sandbox-docker/Dockerfile \
|
|
126
|
-
-t grip-sandbox:local \
|
|
127
|
-
/tmp/grip-local-release
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
Then use it for one start:
|
|
131
|
-
|
|
132
|
-
```text
|
|
133
|
-
/sandbox start --image grip-sandbox:local
|
|
134
|
-
```
|
|
70
|
+
### Guest Grip during development
|
|
135
71
|
|
|
136
|
-
|
|
72
|
+
A new managed VM installs an exact-version Linux Grip release using the checksummed repository installer, when those release assets are published. Existing named VMs must already provide Grip. To test local code, cross-compile a Linux binary matching the guest architecture and opt in:
|
|
137
73
|
|
|
138
74
|
```bash
|
|
139
|
-
|
|
75
|
+
NODE_OPTIONS=--import=tsx ./scripts/build-binaries.sh --skip-install --platform linux-x64
|
|
76
|
+
GRIP_SANDBOX_GUEST_BINARY="$PWD/packages/coding-agent/binaries/grip-linux-x64" ./grip-test.sh
|
|
77
|
+
# In Grip: /sandbox start --name my-dev --update
|
|
140
78
|
```
|
|
141
79
|
|
|
142
|
-
|
|
80
|
+
For ARM64 use `--platform linux-arm64` and `grip-linux-arm64`. The ELF is validated, copied via `limactl copy` only when safe, checked against its SHA-256 and version, and installed at `~/.local/bin/grip`. An identical installation is reused. Normal attachment never replaces the running shared guest's binary. Explicit `--update` uses `GRIP_SANDBOX_GUEST_BINARY` when set; a source/tsx development session requires it rather than silently installing a release. Otherwise the update downloads the checksummed Linux release matching the Grip version that issued the command. The shared systemd unit must already run `~/.local/bin/grip`; other service binary paths require manual reconciliation. Downloads and validation complete before client disconnection. An uncertain install or restart leaves the VM for inspection. The guest needs `sha256sum` and `/proc`.
|
|
143
81
|
|
|
144
|
-
##
|
|
82
|
+
## Direct shared Lima attachment
|
|
145
83
|
|
|
146
|
-
|
|
84
|
+
In each host workspace run `/sandbox start --name <running-shared-VM>`. The VM must already have a fixed writable parent mount, matching loopback forward, exact-version guest Grip, and a verified `~/.cache/grip/shared-lima` guest-state directory. Its systemd user manager must be running with linger enabled so Grip can start or reuse a supervised shared daemon. This command does not provision a new shared VM or convert a legacy one: a running VM without the shared marker takes the per-session path.
|
|
147
85
|
|
|
148
|
-
|
|
86
|
+
Each TUI obtains the guest credential through local Lima access and opens its own authenticated v2 WebSocket workspace channel. Parent-root clients can access their children; shared file writes and edits use revision preconditions, but shell writes can still race. Transfers are unavailable in shared mode. `/sandbox stop` and `/sandbox clear` detach only the current TUI; neither stops the shared daemon or VM. Coordinate all clients and independently verify ownership before any manual guest or VM shutdown.
|
|
149
87
|
|
|
150
|
-
|
|
88
|
+
Grip probes guest mode under the named owner lock before any legacy setup. A missing marker follows the per-session path; unreadable, symlinked, or ambiguous state refuses attachment. A stopped shared VM with a mismatched mount is not automatically resumed. Per-session start and stop check for shared guest state before rotating or killing a legacy daemon. Noncooperating programs may ignore these locks; a VM name alone proves nothing.
|
|
151
89
|
|
|
152
|
-
|
|
90
|
+
Shared startup requires guest `systemd-run --user`, `systemctl --user`, and `loginctl ... Linger=yes` already enabled by an operator. Grip launches one transient `grip-shared-lima-PORT.service` with `Restart=no`; it does not automatically restart failed units or retry uncertain operations. The unit reads its private 0600 token file without passing credentials in service arguments. Grip verifies its MainPID against a boot-ID/process-start-time-bound PID record before reuse. Missing manager, mismatched process identity, or uncertain guest state require manual reconciliation; guest shutdown remains explicit.
|
|
153
91
|
|
|
154
|
-
|
|
92
|
+
## Lifecycle and security
|
|
155
93
|
|
|
156
|
-
-
|
|
157
|
-
- Subagents inherit the active workspace backend. Sandboxed subagents reject host cwd overrides, do not load host project context or extensions, treat custom system prompts as literal text, and cannot continue an older run after the parent backend changes.
|
|
158
|
-
- Sandbox processes can read, write, delete, or chmod files in that mount as the guest user.
|
|
159
|
-
- Files created by the default image are owned by uid `1000` unless Docker/user policy changes it.
|
|
160
|
-
- `/tmp` is writable container-local scratch storage and is removed with the container; it is not mounted from the host by default.
|
|
161
|
-
- The daemon token authorizes high-privilege workspace tool access for the mounted workspace.
|
|
162
|
-
- Anyone with Docker access on the host may inspect containers, images, mounts, labels, ports, and environment depending on host policy.
|
|
163
|
-
- Override Docker images and Lima templates are trusted code. A malicious image or template can run arbitrary processes against the mounted workspace.
|
|
164
|
-
- Docker socket mounts, privileged mode, broad host volumes, or extra credentials can further break the intended boundary.
|
|
165
|
-
- Bridge networking prevents direct host-loopback access, but the container may still reach external networks and host services deliberately exposed beyond loopback.
|
|
166
|
-
- Reused Lima instances retain their existing filesystem, software, credentials, and network access; only reuse instances you trust.
|
|
167
|
-
- Hidden command behavior only keeps `/sandbox` out of LLM-visible Grip catalogs. It is not an OS, Docker, or VM permission boundary.
|
|
94
|
+
Automatically named, process-owned VMs follow `sandbox.cleanup` on graceful Grip shutdown, subject to stopped-VM uncertainty. Tracked per-session named Lima daemons stop without stopping their VMs. A failed readiness check leaves uncertain guest state for manual reconciliation. Shared guest daemons and VMs remain running. Session switches reconnect remembered channels while the process remains running.
|
|
168
95
|
|
|
169
|
-
|
|
96
|
+
Lima VMs are not complete security sandboxes. The workspace is mounted read/write and guest processes can modify it as the guest user. Subagents inherit the active workspace backend, reject host cwd overrides, and do not load host project context or extensions. The daemon token grants privileged workspace tool access. Reused VMs retain their own software, credentials, filesystem, and network access; use only trusted instances and Lima templates. Keep `sandbox.daemonHostBind` loopback-only unless you provide a separate trusted network/TLS boundary, and do not store secrets in the mounted workspace unless the guest should read them.
|
|
170
97
|
|
|
171
98
|
## Troubleshooting
|
|
172
99
|
|
|
173
|
-
-
|
|
174
|
-
-
|
|
175
|
-
-
|
|
176
|
-
-
|
|
177
|
-
-
|
|
178
|
-
- Start succeeds but daemon activation fails: the container or VM may still be running. Use the runtime-specific `/sandbox list` and `/sandbox stop <id-or-name>` commands to clean it up.
|
|
179
|
-
- `/sandbox list` is empty: Docker listing only includes Grip-labeled containers; Lima listing only includes instances with the current workspace mounted at `/workspace`. Check that you selected the intended runtime and workspace.
|
|
180
|
-
- `/sandbox stop` says no sandbox was found: pass the listed id or name, or switch to the workspace that owns the sandbox.
|
|
181
|
-
- Already stopped: stop is idempotent for matching containers and reports already-stopped containers cleanly.
|
|
100
|
+
- Lima missing: install Lima or configure `GRIP_SANDBOX_LIMA` / `sandbox.limaBinary`. New managed VMs require the published exact-version guest installer; reused VMs must provide a matching binary.
|
|
101
|
+
- Port conflict: a newly created VM selects an available port; a running shared VM requires its configured forward to match exactly.
|
|
102
|
+
- Activation failure: inspect VM and daemon state before retrying; do not stop an unverified VM or other shared clients.
|
|
103
|
+
- Empty `/sandbox list`: only instances mounting the current workspace appear. An ancestor-mounted shared VM may not appear from a child directory; attach by name.
|
|
104
|
+
- `/sandbox stop` not found: use the listed id or name, or switch to the owning workspace. Stopped or uncertain VMs require manual reconciliation before removal.
|
package/docs/settings.md
CHANGED
|
@@ -189,30 +189,31 @@ Keep `retry.provider.maxRetries` at `0` unless provider-level retries are explic
|
|
|
189
189
|
|
|
190
190
|
Global and project `tools` settings merge per tool name, so a project can override `tools.websearch.baseUrl` while keeping a global `tools.websearch.apiKey`. Environment variables remain supported for `websearch`; explicit settings take precedence. Firecrawl uses `POST /v2/search` with web results only.
|
|
191
191
|
|
|
192
|
-
###
|
|
192
|
+
### Lima Sandbox
|
|
193
193
|
|
|
194
194
|
| Setting | Type | Default | Description |
|
|
195
195
|
|---------|------|---------|-------------|
|
|
196
|
-
| `sandbox.
|
|
197
|
-
| `sandbox.
|
|
198
|
-
| `sandbox.
|
|
199
|
-
| `sandbox.
|
|
200
|
-
| `sandbox.daemonPort` | number | `8787` | Preferred loopback-
|
|
201
|
-
| `sandbox.daemonHostBind` | string | `"127.0.0.1"` | Host
|
|
202
|
-
| `sandbox.cleanup` | string | `"stop"` | Stop behavior: `"stop"` or `"remove"` |
|
|
196
|
+
| `sandbox.limaBinary` | string | `"limactl"` | Lima executable |
|
|
197
|
+
| `sandbox.limaTemplate` | string | `"template:docker-rootful"` | Template used to create a managed VM |
|
|
198
|
+
| `sandbox.limaInstanceNamePrefix` | string | `"grip-sandbox"` | Generated VM name prefix |
|
|
199
|
+
| `sandbox.workspaceMountPath` | string | `"/workspace"` | Guest path for the mounted current workspace |
|
|
200
|
+
| `sandbox.daemonPort` | number | `8787` | Preferred loopback-forwarded daemon port; an available port is selected when occupied for new VMs |
|
|
201
|
+
| `sandbox.daemonHostBind` | string | `"127.0.0.1"` | Host bind for the daemon forward |
|
|
202
|
+
| `sandbox.cleanup` | string | `"stop"` | Stop behavior: `"stop"` or `"remove"` for owned VMs |
|
|
203
203
|
|
|
204
204
|
```json
|
|
205
205
|
{
|
|
206
206
|
"sandbox": {
|
|
207
|
-
"
|
|
207
|
+
"limaBinary": "limactl",
|
|
208
208
|
"cleanup": "remove"
|
|
209
209
|
}
|
|
210
210
|
}
|
|
211
211
|
```
|
|
212
212
|
|
|
213
|
-
Precedence for sandbox starts is
|
|
213
|
+
Precedence for sandbox starts is `--template`, `GRIP_SANDBOX_*` environment variables, project settings, global settings, then defaults. See [Lima Sandbox](sandbox.md) for command syntax, environment variables, and security notes.
|
|
214
214
|
|
|
215
|
-
|
|
215
|
+
|
|
216
|
+
For a running shared Lima VM, `/sandbox start --name` uses `sandbox.workspaceMountPath`, `sandbox.daemonHostBind`, `sandbox.daemonPort` and `sandbox.limaBinary` to verify its fixed writable parent mount and loopback forward before attaching. `sandbox.cleanup` does not authorize stopping or deleting the shared VM. Auth, config and sessions remain on the host; same-user agents share the default host directory unless each selects a distinct `GRIP_CODING_AGENT_DIR`. Shared writes and edits use revision preconditions, but shell writes can still race. Shared transfers are unavailable; guest process execution requires trusted clients. See [sandbox.md](sandbox.md#direct-shared-lima-attachment).
|
|
216
217
|
|
|
217
218
|
| Setting | Type | Default | Description |
|
|
218
219
|
|---------|------|---------|-------------|
|
package/docs/termux.md
CHANGED
|
@@ -9,24 +9,7 @@ Grip runs on Android via [Termux](https://termux.dev/), a terminal emulator and
|
|
|
9
9
|
|
|
10
10
|
## Installation
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
```bash
|
|
15
|
-
# Update packages
|
|
16
|
-
pkg update && pkg upgrade
|
|
17
|
-
|
|
18
|
-
# Install dependencies
|
|
19
|
-
pkg install nodejs termux-api git
|
|
20
|
-
|
|
21
|
-
# Install Grip
|
|
22
|
-
npm install -g --ignore-scripts @greppleai/grip
|
|
23
|
-
|
|
24
|
-
# Create config directory
|
|
25
|
-
mkdir -p ~/.grip/agent
|
|
26
|
-
|
|
27
|
-
# Run Grip
|
|
28
|
-
grip
|
|
29
|
-
```
|
|
12
|
+
The single-file release installers support **macOS, Linux, and Windows**, not Android/Termux. Do not run the Linux installer here: its native modules and system ABI are not Android builds. There is currently no supported Grip binary or npm release for Termux. A source checkout and Termux-specific build would need separate validation before documenting an installation procedure.
|
|
30
13
|
|
|
31
14
|
## Clipboard Support
|
|
32
15
|
|
package/docs/usage.md
CHANGED
|
@@ -139,13 +139,13 @@ grip remove <source> [-l] # Remove package
|
|
|
139
139
|
grip uninstall <source> [-l] # Alias for remove
|
|
140
140
|
grip update [source|self|grip] # Update Grip and packages; reconcile pinned git refs
|
|
141
141
|
grip update --extensions # Update packages only; reconcile pinned git refs
|
|
142
|
-
grip update --self #
|
|
142
|
+
grip update --self # npm-managed installs only; for binary installs rerun the verified installer
|
|
143
143
|
grip update --extension <src> # Update one package
|
|
144
144
|
grip list # List installed packages
|
|
145
145
|
grip config # Enable/disable package resources
|
|
146
146
|
```
|
|
147
147
|
|
|
148
|
-
These commands manage Grip packages, not
|
|
148
|
+
These commands manage Grip packages; the compiled binary itself updates by rerunning the [verified installer](quickstart.md#install), not `grip update --self`. To uninstall Grip itself, see [Quickstart](quickstart.md#uninstall).
|
|
149
149
|
|
|
150
150
|
See [Grip Packages](packages.md) for package sources and security notes.
|
|
151
151
|
|
package/examples/README.md
CHANGED
|
@@ -18,8 +18,6 @@ Example extensions demonstrating:
|
|
|
18
18
|
- External integrations (SSH, file watchers, system theme sync)
|
|
19
19
|
- Custom providers (Anthropic with custom streaming, GitLab Duo)
|
|
20
20
|
|
|
21
|
-
### [sandbox-docker/](sandbox-docker/)
|
|
22
|
-
Base Docker image for `/sandbox start`. Builds from local release artifacts and runs the packaged `grip --daemon` command with `/workspace` as the mounted workspace.
|
|
23
21
|
|
|
24
22
|
### [remote-session-server/](remote-session-server/)
|
|
25
23
|
Hono-based remote session storage server. It uses static bearer auth and stores sessions as JSONL files for debugging the remote session protocol end-to-end.
|