openclaw-packager 0.1.0

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 John
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,110 @@
1
+ # openclaw-packager
2
+
3
+ Export and import OpenClaw bot configurations. Enables migration between machines, disaster recovery, and sharing setups (with secrets stripped).
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install -g openclaw-packager
9
+ ```
10
+
11
+ Or run locally:
12
+ ```bash
13
+ cd openclaw-packager
14
+ npm install
15
+ npm run build
16
+ npm link # Makes 'openclaw-packager' available globally
17
+ ```
18
+
19
+ ## Commands
20
+
21
+ ### Export
22
+
23
+ Export your OpenClaw configuration to a zip file:
24
+
25
+ ```bash
26
+ openclaw-packager export # Default export (secrets stripped)
27
+ openclaw-packager export -o backup.zip # Specify output file
28
+ openclaw-packager export --dry-run # Preview what would be exported
29
+ openclaw-packager export --no-workspace # Exclude workspace files
30
+ openclaw-packager export --no-memory # Exclude memory files
31
+ openclaw-packager export --agent main worker # Export only specific agents
32
+ openclaw-packager export --auth # Include auth profiles/credentials
33
+ openclaw-packager export --include-secrets # Include actual secret values (dangerous!)
34
+ openclaw-packager export --include-projects # Include workspace/projects/ (large, excluded by default)
35
+ openclaw-packager export --stdout > backup.zip # Pipe to stdout (for SSH)
36
+ ```
37
+
38
+ **SSH piping example:**
39
+ ```bash
40
+ ssh pi "openclaw-packager export --stdout" > pi-backup.zip
41
+ ```
42
+
43
+ ### Import
44
+
45
+ Import a backup into an OpenClaw installation:
46
+
47
+ ```bash
48
+ openclaw-packager import backup.zip # Import with merge (preserve existing)
49
+ openclaw-packager import backup.zip --dry-run # Preview what would change
50
+ openclaw-packager import backup.zip --force # Overwrite all existing files
51
+ openclaw-packager import backup.zip --target ~/.openclaw-dev # Specify target directory
52
+ openclaw-packager import backup.zip --skip-workspace # Skip workspace files
53
+ openclaw-packager import backup.zip --skip-cron # Skip cron jobs
54
+ ```
55
+
56
+ ### Inspect
57
+
58
+ View contents of a backup without importing:
59
+
60
+ ```bash
61
+ openclaw-packager inspect backup.zip
62
+ ```
63
+
64
+ ## What's Included
65
+
66
+ By default, exports include:
67
+ - ✅ **Config** - `openclaw.json`
68
+ - ✅ **Cron jobs** - `cron/jobs.json`
69
+ - ✅ **Workspace** - skills, scripts, automation, AGENTS.md, SOUL.md, etc.
70
+ - ✅ **Memory** - MEMORY.md and memory/ folder
71
+ - ✅ **Agents** - Agent definitions (models.json per agent)
72
+
73
+ By default, exports **exclude**:
74
+ - ❌ **Auth** - `auth-profiles.json` and `credentials/` (use `--auth` to include)
75
+ - ❌ **Secrets** - Tokens, API keys, passwords (use `--include-secrets` to include)
76
+ - ❌ **Identity** - Device keypairs (machine-specific, never exported)
77
+ - ❌ **Sessions** - Chat history (too large)
78
+ - ❌ **Logs, browser data, media** - Runtime artifacts
79
+
80
+ ## Secret Handling
81
+
82
+ By default, all secrets are **stripped** and replaced with placeholders:
83
+ ```json
84
+ {
85
+ "token": "__OPENCLAW_SECRET__:token",
86
+ "apiKey": "__OPENCLAW_SECRET__:apiKey"
87
+ }
88
+ ```
89
+
90
+ A `SECRETS_TEMPLATE.json` is included in the export listing all secrets that need to be filled in on the target machine.
91
+
92
+ Use `--include-secrets` only if you're transferring to a trusted machine and need the actual values.
93
+
94
+ ## Merge vs Force Import
95
+
96
+ - **Merge (default)**: Adds new files, skips existing ones. Safe for updating.
97
+ - **Force (`--force`)**: Overwrites all files. Use for full restoration.
98
+
99
+ For cron jobs:
100
+ - Merge: Only adds jobs with IDs that don't exist in the target
101
+ - Force: Replaces all jobs
102
+
103
+ ## Requirements
104
+
105
+ - Node.js 18+
106
+ - OpenClaw installed at `~/.openclaw` (or `$OPENCLAW_STATE_DIR`)
107
+
108
+ ## License
109
+
110
+ MIT
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Export command for openclaw-packager
3
+ */
4
+ export interface ExportOptions {
5
+ output?: string;
6
+ workspace?: boolean;
7
+ cron?: boolean;
8
+ config?: boolean;
9
+ agents?: boolean;
10
+ agent?: string[];
11
+ memory?: boolean;
12
+ auth?: boolean;
13
+ includeSecrets?: boolean;
14
+ includeProjects?: boolean;
15
+ stdout?: boolean;
16
+ dryRun?: boolean;
17
+ }
18
+ /**
19
+ * Run the export command
20
+ */
21
+ export declare function runExport(options: ExportOptions): Promise<void>;
package/dist/export.js ADDED
@@ -0,0 +1,378 @@
1
+ "use strict";
2
+ /**
3
+ * Export command for openclaw-packager
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.runExport = runExport;
43
+ const fs = __importStar(require("fs"));
44
+ const path = __importStar(require("path"));
45
+ const archiver_1 = __importDefault(require("archiver"));
46
+ const chalk_1 = __importDefault(require("chalk"));
47
+ const paths_1 = require("./paths");
48
+ const manifest_1 = require("./manifest");
49
+ const secrets_1 = require("./secrets");
50
+ const utils_1 = require("./utils");
51
+ /**
52
+ * Run the export command
53
+ */
54
+ async function runExport(options) {
55
+ const logger = new utils_1.Logger(options.stdout);
56
+ // Detect OpenClaw directory
57
+ const openclawDir = (0, paths_1.detectOpenClawDir)();
58
+ if (!openclawDir) {
59
+ logger.error(chalk_1.default.red('✗ Could not find OpenClaw directory'));
60
+ logger.error(' Checked: $OPENCLAW_STATE_DIR, ~/.openclaw, ~/.openclaw-dev');
61
+ logger.error(' Make sure OpenClaw is installed.');
62
+ process.exit(1);
63
+ }
64
+ const paths = (0, paths_1.getOpenClawPaths)(openclawDir);
65
+ logger.heading('OpenClaw Backup Export');
66
+ logger.log(`Source: ${chalk_1.default.cyan(paths.root)}`);
67
+ // Default options: include everything except auth
68
+ const includes = {
69
+ workspace: options.workspace !== false,
70
+ cron: options.cron !== false,
71
+ config: options.config !== false,
72
+ agents: options.agents !== false,
73
+ memory: options.memory !== false,
74
+ auth: options.auth === true,
75
+ };
76
+ const includeSecrets = options.includeSecrets === true;
77
+ const includeProjects = options.includeProjects === true;
78
+ const agentFilter = options.agent || null; // null = all agents
79
+ // Prepare output
80
+ const outputPath = options.output || `./openclaw-export-${(0, utils_1.getTimestamp)()}.zip`;
81
+ if (options.dryRun) {
82
+ await runDryRun(paths, includes, includeSecrets, includeProjects, agentFilter, logger);
83
+ return;
84
+ }
85
+ // Create the archive
86
+ const stats = await createArchive(paths, includes, includeSecrets, includeProjects, agentFilter, outputPath, options.stdout || false, logger);
87
+ // Summary
88
+ if (!options.stdout) {
89
+ logger.heading('Export Complete');
90
+ logger.success(`Created: ${chalk_1.default.green(outputPath)}`);
91
+ logger.log(` Files: ${stats.totalFiles}`);
92
+ logger.log(` Size: ${(0, manifest_1.formatSize)(stats.totalSize)}`);
93
+ if (!includeSecrets && stats.secretsStripped > 0) {
94
+ logger.warn(`Secrets stripped: ${stats.secretsStripped} values replaced with placeholders`);
95
+ logger.log(` Use ${chalk_1.default.cyan('--include-secrets')} to include actual values`);
96
+ }
97
+ }
98
+ }
99
+ /**
100
+ * Run in dry-run mode (preview only)
101
+ */
102
+ async function runDryRun(paths, includes, includeSecrets, includeProjects, agentFilter, logger) {
103
+ logger.heading('Dry Run - Preview');
104
+ logger.log(chalk_1.default.dim('(No files will be created)\n'));
105
+ let totalFiles = 0;
106
+ let totalSize = 0;
107
+ // Config
108
+ if (includes.config && fs.existsSync(paths.config)) {
109
+ const stats = fs.statSync(paths.config);
110
+ logger.log(`${chalk_1.default.green('✓')} Config: openclaw.json (${(0, manifest_1.formatSize)(stats.size)})`);
111
+ totalFiles++;
112
+ totalSize += stats.size;
113
+ }
114
+ // Cron
115
+ if (includes.cron) {
116
+ const cronFile = path.join(paths.cron, 'jobs.json');
117
+ if (fs.existsSync(cronFile)) {
118
+ const stats = fs.statSync(cronFile);
119
+ const jobs = (0, utils_1.readJson)(cronFile);
120
+ const jobCount = jobs?.jobs?.length || 0;
121
+ logger.log(`${chalk_1.default.green('✓')} Cron: ${jobCount} jobs (${(0, manifest_1.formatSize)(stats.size)})`);
122
+ totalFiles++;
123
+ totalSize += stats.size;
124
+ }
125
+ }
126
+ // Agents
127
+ if (includes.agents) {
128
+ let agents = (0, paths_1.listAgents)(paths.agents);
129
+ if (agentFilter) {
130
+ agents = agents.filter(a => agentFilter.includes(a));
131
+ }
132
+ logger.log(`${chalk_1.default.green('✓')} Agents: ${agents.join(', ') || 'none'}`);
133
+ for (const agent of agents) {
134
+ const agentDir = path.join(paths.agents, agent, 'agent');
135
+ if (fs.existsSync(agentDir)) {
136
+ for await (const file of (0, utils_1.walkDir)(agentDir)) {
137
+ if (!(0, paths_1.shouldExclude)(file.relativePath)) {
138
+ // Skip auth unless included
139
+ if (!includes.auth && file.relativePath.includes('auth-profiles')) {
140
+ continue;
141
+ }
142
+ totalFiles++;
143
+ totalSize += file.stats.size;
144
+ }
145
+ }
146
+ }
147
+ }
148
+ }
149
+ // Workspace
150
+ if (includes.workspace && fs.existsSync(paths.workspace)) {
151
+ let workspaceFiles = 0;
152
+ let workspaceSize = 0;
153
+ let skillCount = 0;
154
+ for await (const file of (0, utils_1.walkDir)(paths.workspace)) {
155
+ if ((0, paths_1.shouldExcludeWorkspace)(file.relativePath, includeProjects))
156
+ continue;
157
+ // Skip memory if not included
158
+ if (!includes.memory) {
159
+ if (file.relativePath === 'MEMORY.md' || file.relativePath.startsWith('memory/')) {
160
+ continue;
161
+ }
162
+ }
163
+ workspaceFiles++;
164
+ workspaceSize += file.stats.size;
165
+ // Count skills
166
+ if (file.relativePath.startsWith('skills/') && file.relativePath.endsWith('SKILL.md')) {
167
+ skillCount++;
168
+ }
169
+ }
170
+ logger.log(`${chalk_1.default.green('✓')} Workspace: ${workspaceFiles} files (${(0, manifest_1.formatSize)(workspaceSize)})`);
171
+ if (skillCount > 0) {
172
+ logger.log(` Skills: ${skillCount}`);
173
+ }
174
+ if (!includeProjects) {
175
+ logger.log(` ${chalk_1.default.dim('Projects excluded (use --include-projects to include)')}`);
176
+ }
177
+ totalFiles += workspaceFiles;
178
+ totalSize += workspaceSize;
179
+ }
180
+ // Memory
181
+ if (includes.memory) {
182
+ logger.log(`${chalk_1.default.green('✓')} Memory: MEMORY.md + memory/ folder`);
183
+ }
184
+ // Auth
185
+ if (includes.auth) {
186
+ logger.log(`${chalk_1.default.green('✓')} Auth: auth-profiles.json + credentials/`);
187
+ }
188
+ else {
189
+ logger.log(`${chalk_1.default.dim('○')} Auth: ${chalk_1.default.dim('excluded (use --auth to include)')}`);
190
+ }
191
+ // Secrets
192
+ if (includeSecrets) {
193
+ logger.warn('Secrets: INCLUDED (real tokens/keys will be in export)');
194
+ }
195
+ else {
196
+ logger.log(`${chalk_1.default.green('✓')} Secrets: stripped (placeholders used)`);
197
+ }
198
+ logger.heading('Summary');
199
+ logger.log(` Total files: ~${totalFiles}`);
200
+ logger.log(` Total size: ~${(0, manifest_1.formatSize)(totalSize)}`);
201
+ logger.log(`\n Run without ${chalk_1.default.cyan('--dry-run')} to create the export.`);
202
+ }
203
+ /**
204
+ * Create the actual archive
205
+ */
206
+ async function createArchive(paths, includes, includeSecrets, includeProjects, agentFilter, outputPath, toStdout, logger) {
207
+ const stats = {
208
+ totalFiles: 0,
209
+ totalSize: 0,
210
+ cronJobs: 0,
211
+ skills: 0,
212
+ agentCount: 0,
213
+ secretsStripped: 0,
214
+ };
215
+ const secretsTemplate = (0, secrets_1.createSecretsTemplate)();
216
+ const agents = [];
217
+ // Create archive
218
+ const archive = (0, archiver_1.default)('zip', { zlib: { level: 9 } });
219
+ // Output handling
220
+ let output;
221
+ if (toStdout) {
222
+ output = process.stdout;
223
+ }
224
+ else {
225
+ output = fs.createWriteStream(outputPath);
226
+ }
227
+ archive.pipe(output);
228
+ // Helper to add file with optional secret stripping
229
+ const addFile = (filePath, archivePath) => {
230
+ let content;
231
+ let fileStats;
232
+ try {
233
+ content = fs.readFileSync(filePath);
234
+ fileStats = fs.statSync(filePath);
235
+ }
236
+ catch (err) {
237
+ // Skip files we can't read (permission errors, etc)
238
+ return false;
239
+ }
240
+ // Strip secrets from JSON files if needed
241
+ if (!includeSecrets && filePath.endsWith('.json')) {
242
+ // Strip secrets from JSON files (both secret files and regular files)
243
+ const result = (0, secrets_1.stripSecrets)(content.toString('utf-8'), archivePath);
244
+ if (result.secretsStripped > 0) {
245
+ content = Buffer.from(result.content);
246
+ stats.secretsStripped += result.secretsStripped;
247
+ }
248
+ }
249
+ archive.append(content, { name: archivePath });
250
+ stats.totalFiles++;
251
+ stats.totalSize += fileStats.size;
252
+ return true;
253
+ };
254
+ // Config
255
+ if (includes.config && fs.existsSync(paths.config)) {
256
+ logger.info('Adding config...');
257
+ addFile(paths.config, 'config/openclaw.json');
258
+ }
259
+ // Cron
260
+ if (includes.cron) {
261
+ const cronFile = path.join(paths.cron, 'jobs.json');
262
+ if (fs.existsSync(cronFile)) {
263
+ logger.info('Adding cron jobs...');
264
+ const jobs = (0, utils_1.readJson)(cronFile);
265
+ stats.cronJobs = jobs?.jobs?.length || 0;
266
+ addFile(cronFile, 'cron/jobs.json');
267
+ }
268
+ }
269
+ // Agents
270
+ if (includes.agents) {
271
+ let agentList = (0, paths_1.listAgents)(paths.agents);
272
+ if (agentFilter) {
273
+ agentList = agentList.filter(a => agentFilter.includes(a));
274
+ }
275
+ logger.info(`Adding ${agentList.length} agents...`);
276
+ stats.agentCount = agentList.length;
277
+ for (const agent of agentList) {
278
+ agents.push(agent);
279
+ const agentDir = path.join(paths.agents, agent, 'agent');
280
+ if (fs.existsSync(agentDir)) {
281
+ for await (const file of (0, utils_1.walkDir)(agentDir)) {
282
+ if ((0, paths_1.shouldExclude)(file.relativePath))
283
+ continue;
284
+ // Handle auth files
285
+ if (file.relativePath.includes('auth-profiles')) {
286
+ if (includes.auth) {
287
+ const archivePath = `agents/${agent}/${file.relativePath}`;
288
+ addFile(file.path, archivePath);
289
+ (0, secrets_1.addAgentAuth)(secretsTemplate, agent, 'auth-profiles');
290
+ }
291
+ continue;
292
+ }
293
+ const archivePath = `agents/${agent}/${file.relativePath}`;
294
+ addFile(file.path, archivePath);
295
+ }
296
+ }
297
+ }
298
+ }
299
+ // Credentials
300
+ if (includes.auth && fs.existsSync(paths.credentials)) {
301
+ logger.info('Adding credentials...');
302
+ for await (const file of (0, utils_1.walkDir)(paths.credentials)) {
303
+ if ((0, paths_1.shouldExclude)(file.relativePath))
304
+ continue;
305
+ const archivePath = `credentials/${file.relativePath}`;
306
+ addFile(file.path, archivePath);
307
+ (0, secrets_1.addCredentialFile)(secretsTemplate, file.relativePath);
308
+ }
309
+ }
310
+ // Workspace
311
+ if (includes.workspace && fs.existsSync(paths.workspace)) {
312
+ logger.info('Adding workspace...');
313
+ for await (const file of (0, utils_1.walkDir)(paths.workspace)) {
314
+ if ((0, paths_1.shouldExcludeWorkspace)(file.relativePath, includeProjects))
315
+ continue;
316
+ // Skip memory if not included
317
+ if (!includes.memory) {
318
+ if (file.relativePath === 'MEMORY.md' || file.relativePath.startsWith('memory/') || file.relativePath.startsWith('memory\\')) {
319
+ continue;
320
+ }
321
+ }
322
+ // Count skills
323
+ if (file.relativePath.startsWith('skills/') && file.relativePath.endsWith('SKILL.md')) {
324
+ stats.skills++;
325
+ }
326
+ const archivePath = `workspace/${file.relativePath}`;
327
+ addFile(file.path, archivePath);
328
+ }
329
+ }
330
+ // Create manifest
331
+ const manifest = (0, manifest_1.createManifest)({
332
+ includes: {
333
+ workspace: includes.workspace,
334
+ cron: includes.cron,
335
+ config: includes.config,
336
+ agents,
337
+ memory: includes.memory,
338
+ auth: includes.auth,
339
+ },
340
+ secretsIncluded: includeSecrets,
341
+ secretsStripped: stats.secretsStripped,
342
+ stats: {
343
+ totalFiles: stats.totalFiles,
344
+ totalSize: (0, manifest_1.formatSize)(stats.totalSize),
345
+ cronJobs: stats.cronJobs,
346
+ skills: stats.skills,
347
+ agents: stats.agentCount,
348
+ },
349
+ });
350
+ // Try to get OpenClaw version
351
+ try {
352
+ const pkg = (0, utils_1.readJson)(path.join(paths.root, '..', 'openclaw', 'package.json'));
353
+ if (pkg?.version) {
354
+ manifest.openclawVersion = pkg.version;
355
+ }
356
+ }
357
+ catch {
358
+ // Ignore
359
+ }
360
+ archive.append(JSON.stringify(manifest, null, 2), { name: 'manifest.json' });
361
+ // Add secrets template if secrets were stripped
362
+ if (!includeSecrets && stats.secretsStripped > 0) {
363
+ archive.append(JSON.stringify(secretsTemplate, null, 2), {
364
+ name: 'SECRETS_TEMPLATE.json'
365
+ });
366
+ }
367
+ // Finalize
368
+ await archive.finalize();
369
+ // Wait for output to finish
370
+ if (!toStdout) {
371
+ await new Promise((resolve, reject) => {
372
+ output.on('close', resolve);
373
+ output.on('error', reject);
374
+ });
375
+ }
376
+ return stats;
377
+ }
378
+ //# sourceMappingURL=export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../src/export.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Import command for openclaw-packager
3
+ */
4
+ export interface ImportOptions {
5
+ dryRun?: boolean;
6
+ merge?: boolean;
7
+ force?: boolean;
8
+ target?: string;
9
+ skipWorkspace?: boolean;
10
+ skipCron?: boolean;
11
+ skipConfig?: boolean;
12
+ }
13
+ /**
14
+ * Run the import command
15
+ */
16
+ export declare function runImport(file: string, options: ImportOptions): Promise<void>;