@jkawwa/paperclipai-plugin-exe-dev 0.3.1-jk.1

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 +58 -0
  2. package/package.json +50 -0
package/README.md ADDED
@@ -0,0 +1,58 @@
1
+ # `@paperclipai/plugin-exe-dev`
2
+
3
+ Published exe.dev sandbox provider plugin for Paperclip.
4
+
5
+ This package lives in the Paperclip monorepo, but it is intentionally excluded from the root `pnpm` workspace and shaped to publish and install like a standalone npm package. That lets operators install it from the Plugins page by package name without introducing root lockfile churn.
6
+
7
+ ## Install
8
+
9
+ From a Paperclip instance, install:
10
+
11
+ ```text
12
+ @paperclipai/plugin-exe-dev
13
+ ```
14
+
15
+ ## Configuration
16
+
17
+ Configure exe.dev from `Company Settings -> Environments`, not from the plugin's instance settings page.
18
+
19
+ - Put the exe.dev API token on the sandbox environment itself.
20
+ - When you save an environment, Paperclip stores pasted API keys and pasted SSH private keys as company secrets.
21
+ - `EXE_API_KEY` remains an optional host-level fallback when an environment omits the API token.
22
+ - The current implementation provisions VMs through exe.dev's HTTPS API and runs commands through direct SSH to the created VM.
23
+
24
+ To use the provider successfully, the environment/host needs all of the following:
25
+
26
+ - An exe.dev API token that allows the lifecycle commands the provider uses: `new`, `ls`, and `rm`. `whoami` and `help` are recommended for manual debugging. `restart` is only needed if you extend the provider to restart retained VMs.
27
+ - SSH access from the Paperclip host to the resulting `*.exe.xyz` VMs.
28
+ - An SSH private key that exe.dev already recognizes. You can either:
29
+ - paste the private key into the environment config via `sshPrivateKey`
30
+ - point `sshIdentityFile` at an absolute host path
31
+ - or leave both blank and rely on the host's default SSH agent/keychain
32
+ - The matching public key must already be registered with exe.dev before the provider can execute commands inside the VM.
33
+
34
+ Operational notes:
35
+
36
+ - If exe.dev replies `Please complete registration by running: ssh exe.dev`, the host key has not finished exe.dev onboarding yet.
37
+ - Reusable leases keep the VM alive between runs. exe.dev does not expose a documented "stop and later resume" command in the public CLI docs, so `reuseLease: true` means "retain the VM" rather than "suspend it."
38
+ - The provisioning path uses `https://exe.dev/exec`, which exe.dev documents as a command-style HTTPS API with a 30-second request timeout. Typical `new` calls are expected to fit inside that limit; command execution itself does not use `/exec`.
39
+ - Probes still create and delete a real exe.dev VM through `/exec`, and so do the `new`/`rm` calls inside the normal acquire/release lifecycle. Treat all of those as real provisioning cost, not just probes.
40
+ - exe.dev runs `--setup-script` as the unprivileged `exedev` user, not as root. That user has passwordless `sudo`, so any system-level steps in a custom `setupScript` must invoke `sudo` explicitly (for example `sudo apt-get install -y …`). When you omit `setupScript`, the plugin supplies a default that installs Node 20 via the official nodesource script — Paperclip's sandbox callback bridge is a Node program, so the VM needs `node` on `PATH` before the bridge can launch.
41
+
42
+ ## Local development
43
+
44
+ ```bash
45
+ cd packages/plugins/sandbox-providers/exe-dev
46
+ pnpm install --ignore-workspace --no-lockfile
47
+ pnpm build
48
+ pnpm test
49
+ pnpm typecheck
50
+ ```
51
+
52
+ These commands assume the repo root has already been installed once so the local `@paperclipai/plugin-sdk` workspace package is available to the compiler during development.
53
+
54
+ ## Package layout
55
+
56
+ - `src/manifest.ts` declares the sandbox-provider driver metadata
57
+ - `src/plugin.ts` implements the environment lifecycle hooks
58
+ - `paperclipPlugin.manifest` and `paperclipPlugin.worker` point the host at the built plugin entrypoints in `dist/`
package/package.json ADDED
@@ -0,0 +1,50 @@
1
+ {
2
+ "name": "@jkawwa/paperclipai-plugin-exe-dev",
3
+ "version": "0.3.1-jk.1",
4
+ "description": "exe.dev sandbox provider plugin for Paperclip environments",
5
+ "license": "MIT",
6
+ "homepage": "https://github.com/paperclipai/paperclip",
7
+ "bugs": {
8
+ "url": "https://github.com/paperclipai/paperclip/issues"
9
+ },
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "https://github.com/paperclipai/paperclip",
13
+ "directory": "packages/plugins/sandbox-providers/exe-dev"
14
+ },
15
+ "type": "module",
16
+ "exports": {
17
+ ".": {
18
+ "types": "./dist/index.d.ts",
19
+ "import": "./dist/index.js"
20
+ }
21
+ },
22
+ "publishConfig": {
23
+ "access": "public"
24
+ },
25
+ "files": [
26
+ "dist"
27
+ ],
28
+ "paperclipPlugin": {
29
+ "manifest": "./dist/manifest.js",
30
+ "worker": "./dist/worker.js"
31
+ },
32
+ "keywords": [
33
+ "paperclip",
34
+ "plugin",
35
+ "sandbox",
36
+ "exe.dev"
37
+ ],
38
+ "scripts": {
39
+ "build": "rm -rf dist && tsc",
40
+ "clean": "rm -rf dist",
41
+ "test": "vitest run --config vitest.config.ts"
42
+ },
43
+ "devDependencies": {
44
+ "@types/node": "^24.6.0",
45
+ "typescript": "^5.7.3",
46
+ "vitest": "^3.2.4"
47
+ },
48
+ "main": "./dist/index.js",
49
+ "types": "./dist/index.d.ts"
50
+ }