@landstrip/landstrip 0.18.26 → 0.18.28

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 +21 -94
  2. package/package.json +7 -7
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- <!-- SPDX-License-Identifier: GPL-3.0-or-later -->
1
+ <!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
2
2
  <!-- Copyright (C) Jarkko Sakkinen 2026 -->
3
3
 
4
4
  # landstrip
@@ -17,38 +17,21 @@ npx landstrip run -p policy.json -- cargo test
17
17
  The npm package installs a Node.js wrapper and a native binary for the current
18
18
  platform.
19
19
 
20
- ## Command line
20
+ ## Quick start
21
21
 
22
- ```text
23
- landstrip run [OPTIONS] -- <PROGRAM> [ARGS...]
24
- landstrip policy validate [OPTIONS]
25
- landstrip policy resolve [OPTIONS]
22
+ ```sh
23
+ landstrip run -p policy.json -- cargo test
24
+ landstrip policy validate -p policy.json
25
+ landstrip policy resolve -p policy.json
26
26
  landstrip doctor
27
- landstrip windows install [OPTIONS]
28
- landstrip windows status
29
- landstrip windows uninstall
30
27
  ```
31
28
 
32
- The `windows` commands exist only in Windows builds.
33
-
34
- Pass policies with `-p, --policy <FILE>`. The option may be repeated; objects
35
- merge recursively, later scalar values replace earlier ones, and arrays combine.
36
- JSON is the default. Use `--policy-format yaml` for YAML and always specify the
37
- format with `-p -`.
38
-
39
- `run` also merges policy attached to the program executable. `policy validate`
40
- checks parsing, resolution, and platform support. `policy resolve` prints the
41
- normalized policy; add `--tool <PROGRAM>` to include executable policy.
42
- `doctor` checks that the platform sandbox is usable.
43
-
44
- Inspection and management commands print one JSON document. `run` returns the
45
- program's exit status. Usage errors return 2; other Landstrip failures return 1.
29
+ Windows builds also provide `windows install`, `windows status`, and
30
+ `windows uninstall`. Full command reference: `landstrip --help` and the
31
+ [manual page](man/man1/landstrip.1).
46
32
 
47
33
  ### Agent extensions
48
34
 
49
- Companion extensions integrate Landstrip with Pi and OpenCode. The Pi extension
50
- also provides primary agents and process-backed subagents.
51
-
52
35
  ```sh
53
36
  pi install npm:pi-landstrip
54
37
  opencode plugin install opencode-landstrip
@@ -57,7 +40,7 @@ opencode plugin install opencode-landstrip
57
40
  See [pi-landstrip](packages/pi-landstrip/README.md) and
58
41
  [opencode-landstrip](packages/opencode-landstrip/README.md).
59
42
 
60
- ## Policy
43
+ ## Policy sketch
61
44
 
62
45
  ```json
63
46
  {
@@ -76,70 +59,14 @@ See [pi-landstrip](packages/pi-landstrip/README.md) and
76
59
  }
77
60
  ```
78
61
 
79
- Paths may be absolute, relative to the starting directory, or prefixed with
80
- `~`. Path lists also accept `*`, `**`, `?`, and character-class globs.
81
-
82
- Writes are denied by default. `allowWrite` grants writable roots; `denyWrite`
83
- always takes precedence. Reads are unrestricted until `denyRead` is non-empty;
84
- `allowRead` then adds exceptions, with the most specific read rule winning.
85
-
86
- Concrete `denyWrite` paths work on every platform. Glob denies are evaluated at
87
- access time on Linux and macOS, including for newly created files. Windows does
88
- not enforce glob `denyWrite` entries.
89
-
90
- Direct TCP and new Unix sockets are denied by default. Proxy ports allow
91
- loopback connections only to those ports; Landstrip does not start a proxy or
92
- filter domains. `allowLocalBinding` permits local TCP binding and loopback
93
- connections. `allowUnixSockets` grants pathname sockets, and
94
- `allowAllUnixSockets` allows all Unix sockets. Set `allowNetwork` to `true` to
95
- disable network enforcement while keeping filesystem restrictions.
96
-
97
- On Unix, supplementary executable policy is read from the
98
- `user.landstrip.policy` extended attribute. On Windows it is read from the
99
- `landstrip.policy` NTFS alternate data stream. Executable policy is merged
100
- after `--policy` files.
101
-
102
- ## Platforms
103
-
104
- | Platform | Filesystem | Network |
105
- | --- | --- | --- |
106
- | Linux | Landlock and seccomp | TCP and Unix socket rules |
107
- | macOS | Seatbelt | TCP and Unix socket rules |
108
- | Windows | AppContainer or restricted user | AppContainer capabilities or account-scoped WFP |
109
-
110
- Windows requires an explicit read allowlist. AppContainer is used without
111
- installation; core Landstrip defaults to LPAC. `windows.appContainerMode` may
112
- select `standard`, which is weaker because it can see resources granted to
113
- `ALL APPLICATION PACKAGES`. In AppContainer, `windows.allowLoopback` exposes
114
- every local loopback service; without it, proxy ports are blocked.
115
-
116
- Use `landstrip windows install` when software such as Git Bash cannot start in
117
- AppContainer. It provisions restricted local users and activates that mode.
118
- `windows uninstall` removes it and returns to AppContainer. An unhealthy
119
- installation fails closed; inspect it with `windows status`.
120
-
121
- Windows does not support `allowLocalBinding` or Unix socket policy.
122
- Restricted-user mode permits proxy ports only from the range chosen at install
123
- time and does not support `windows.allowLoopback`.
124
-
125
- ## Traps
126
-
127
- Landstrip failures and broker-reported denials are JSON objects with a stable
128
- `kind` and `code`. Failures and completed denials go to standard error. The
129
- sandboxed program may also write to standard error.
130
-
131
- On Unix, `--trap-fd FD` sends structured events to an already-open descriptor
132
- numbered 3 or higher. On Linux, a socket trap descriptor can carry a
133
- `state: "query"` filesystem or network event that pauses an operation for the
134
- integrating host to answer. Query events go only to that socket. Kernel-only
135
- and static-profile denials do not always produce a per-access event.
136
-
137
- Trap kinds are `filesystem`, `network`, `launch`, `usage`, and `internal`.
138
- Filesystem and network records describe denied operations; the other kinds
139
- report failures in Landstrip itself.
140
-
141
- ## Licensing
142
-
143
- The JavaScript npm wrapper is licensed under `Apache-2.0`. The Rust source and
144
- native binaries are licensed under `LGPL-2.1-or-later`. Corresponding source for
145
- each native package is available from the matching repository tag.
62
+ Pass policies with `-p, --policy <FILE>` (repeatable). Semantics, platform
63
+ limits, traps, and exit status are in the manual page.
64
+
65
+ ## License
66
+
67
+ `landstrip` is free software under the GNU Lesser General Public License
68
+ version 2.1 or later (LGPL-2.1+). See [LICENSE-LGPL-2.1](LICENSE-LGPL-2.1).
69
+
70
+ The JavaScript npm wrapper is under the Apache License 2.0. See
71
+ [LICENSE-APACHE-2.0](LICENSE-APACHE-2.0). Corresponding source for each native
72
+ package is available from the matching repository tag.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@landstrip/landstrip",
3
- "version": "0.18.26",
3
+ "version": "0.18.28",
4
4
  "description": "Sandbox runner using Landlock, Seatbelt, and AppContainer",
5
5
  "license": "Apache-2.0 AND LGPL-2.1-or-later",
6
6
  "homepage": "https://github.com/landstrip/landstrip#readme",
@@ -30,12 +30,12 @@
30
30
  "LICENSE-LGPL-2.1"
31
31
  ],
32
32
  "optionalDependencies": {
33
- "@landstrip/landstrip-darwin-arm64": "0.18.26",
34
- "@landstrip/landstrip-darwin-x64": "0.18.26",
35
- "@landstrip/landstrip-linux-x64": "0.18.26",
36
- "@landstrip/landstrip-linux-arm64": "0.18.26",
37
- "@landstrip/landstrip-win32-x64": "0.18.26",
38
- "@landstrip/landstrip-win32-arm64": "0.18.26"
33
+ "@landstrip/landstrip-darwin-arm64": "0.18.28",
34
+ "@landstrip/landstrip-darwin-x64": "0.18.28",
35
+ "@landstrip/landstrip-linux-x64": "0.18.28",
36
+ "@landstrip/landstrip-linux-arm64": "0.18.28",
37
+ "@landstrip/landstrip-win32-x64": "0.18.28",
38
+ "@landstrip/landstrip-win32-arm64": "0.18.28"
39
39
  },
40
40
  "publishConfig": {
41
41
  "access": "public"