Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,15 @@ surf install <extension-id> --browser all # All supported browsers

Supported: `chrome`, `chromium`, `brave`, `edge`, `arc`

**Package Manager Installs (Nix, Homebrew, etc.)**
If surf is installed via a package manager that stores binaries in non-standard locations, set these environment variables before running `surf install`:
```bash
export SURF_NODE_PATH=/path/to/node
export SURF_HOST_PATH=/path/to/native/host.cjs
export SURF_EXTENSION_PATH=/path/to/extension/dist
```
See [Environment Variables](#environment-variables) for details.

### Uninstall

```bash
Expand Down Expand Up @@ -511,6 +520,26 @@ surf workflow.validate ./my-workflow.json
--network-path <path> # Custom path for network logs (default: /tmp/surf, or SURF_NETWORK_PATH env)
```

## Environment Variables

```bash
SURF_NETWORK_PATH # Path for network capture logs (default: /tmp/surf)
SURF_NODE_PATH # Path to node binary (for native host wrapper)
SURF_HOST_PATH # Path to native/host.cjs (for native host wrapper)
SURF_EXTENSION_PATH # Path to extension dist/ directory
```

**Use cases:**
- `SURF_NODE_PATH` / `SURF_HOST_PATH`: Package manager installs (e.g., Nix) that store binaries in non-standard locations
- `SURF_EXTENSION_PATH`: Package managers that create stable symlinks instead of changing paths on reinstall

**Example (Nix):**
```bash
export SURF_NODE_PATH=~/.local/share/surf-cli/node
export SURF_HOST_PATH=~/.local/share/surf-cli/native/host.cjs
export SURF_EXTENSION_PATH=~/.local/share/surf-cli/extension
```

## Socket API

For programmatic integration, send JSON to `/tmp/surf.sock`:
Expand Down
3 changes: 1 addition & 2 deletions native/cli.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -1752,8 +1752,7 @@ if (args[0] === "server") {
}

if (args[0] === "extension-path" || args[0] === "path") {
const path = require("path");
const distPath = path.resolve(__dirname, "../dist");
const distPath = process.env.SURF_EXTENSION_PATH || path.resolve(__dirname, "../dist");
console.log(distPath);
process.exit(0);
}
Expand Down
6 changes: 6 additions & 0 deletions scripts/install-native-host.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,9 @@ const NODE_PATHS = {
};

function findNode() {
if (process.env.SURF_NODE_PATH && fs.existsSync(process.env.SURF_NODE_PATH)) {
return process.env.SURF_NODE_PATH;
}
const platform = process.platform;
const paths = NODE_PATHS[platform] || [];
for (const p of paths) {
Expand Down Expand Up @@ -95,6 +98,9 @@ function getWrapperDir() {
}

function getHostPath() {
if (process.env.SURF_HOST_PATH && fs.existsSync(process.env.SURF_HOST_PATH)) {
return process.env.SURF_HOST_PATH;
}
const npmRoot = findNpmGlobalRoot();
if (npmRoot) {
const globalPath = path.join(npmRoot, "surf-cli/native/host.cjs");
Expand Down