@otto-assistant/otto 0.1.0 → 0.1.2

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 (73) hide show
  1. package/README.md +142 -0
  2. package/dist/cli.js +406 -12
  3. package/dist/cli.js.map +1 -1
  4. package/dist/config.test.js +9 -9
  5. package/dist/config.test.js.map +1 -1
  6. package/dist/detect.test.js +4 -3
  7. package/dist/detect.test.js.map +1 -1
  8. package/dist/docker.d.ts +7 -0
  9. package/dist/docker.d.ts.map +1 -0
  10. package/dist/docker.js +17 -0
  11. package/dist/docker.js.map +1 -0
  12. package/dist/docker.test.d.ts +2 -0
  13. package/dist/docker.test.d.ts.map +1 -0
  14. package/dist/docker.test.js +12 -0
  15. package/dist/docker.test.js.map +1 -0
  16. package/dist/health.d.ts +4 -0
  17. package/dist/health.d.ts.map +1 -1
  18. package/dist/health.js +40 -1
  19. package/dist/health.js.map +1 -1
  20. package/dist/health.test.js +21 -2
  21. package/dist/health.test.js.map +1 -1
  22. package/dist/index.d.ts +11 -3
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +6 -2
  25. package/dist/index.js.map +1 -1
  26. package/dist/installer.test.js +2 -2
  27. package/dist/installer.test.js.map +1 -1
  28. package/dist/lifecycle.d.ts +6 -0
  29. package/dist/lifecycle.d.ts.map +1 -1
  30. package/dist/lifecycle.js +26 -11
  31. package/dist/lifecycle.js.map +1 -1
  32. package/dist/lifecycle.test.js +5 -4
  33. package/dist/lifecycle.test.js.map +1 -1
  34. package/dist/manifest.js +4 -4
  35. package/dist/manifest.js.map +1 -1
  36. package/dist/skills-baseline.d.ts +7 -0
  37. package/dist/skills-baseline.d.ts.map +1 -0
  38. package/dist/skills-baseline.js +9 -0
  39. package/dist/skills-baseline.js.map +1 -0
  40. package/dist/skills.d.ts +110 -0
  41. package/dist/skills.d.ts.map +1 -0
  42. package/dist/skills.js +429 -0
  43. package/dist/skills.js.map +1 -0
  44. package/dist/skills.test.d.ts +2 -0
  45. package/dist/skills.test.d.ts.map +1 -0
  46. package/dist/skills.test.js +416 -0
  47. package/dist/skills.test.js.map +1 -0
  48. package/dist/tenant.d.ts +13 -0
  49. package/dist/tenant.d.ts.map +1 -0
  50. package/dist/tenant.js +105 -0
  51. package/dist/tenant.js.map +1 -0
  52. package/dist/tenant.test.d.ts +2 -0
  53. package/dist/tenant.test.d.ts.map +1 -0
  54. package/dist/tenant.test.js +37 -0
  55. package/dist/tenant.test.js.map +1 -0
  56. package/package.json +15 -5
  57. package/src/cli.ts +457 -12
  58. package/src/config.test.ts +9 -9
  59. package/src/detect.test.ts +4 -3
  60. package/src/docker.test.ts +12 -0
  61. package/src/docker.ts +23 -0
  62. package/src/health.test.ts +23 -1
  63. package/src/health.ts +45 -1
  64. package/src/index.ts +37 -3
  65. package/src/installer.test.ts +2 -2
  66. package/src/lifecycle.test.ts +6 -5
  67. package/src/lifecycle.ts +29 -10
  68. package/src/manifest.ts +4 -4
  69. package/src/skills-baseline.ts +14 -0
  70. package/src/skills.test.ts +503 -0
  71. package/src/skills.ts +512 -0
  72. package/src/tenant.test.ts +49 -0
  73. package/src/tenant.ts +120 -0
package/README.md ADDED
@@ -0,0 +1,142 @@
1
+ # Otto
2
+
3
+ **Otto** is a production-focused wrapper that turns `opencode-ai` + `bridge` + `mempalace` into one fast, repeatable runtime for AI coding in Discord and terminal flows.
4
+
5
+ It is built for teams and solo builders who want:
6
+
7
+ - **Speed**: prebuilt Docker images and one-command onboarding.
8
+ - **Intelligence**: persistent memory via `mempalace`.
9
+ - **Reliability**: pinned stable channel + edge channel with CI publishing.
10
+ - **Low friction**: run locally or in Docker with the same behavior.
11
+
12
+ ## Why Otto
13
+
14
+ Most agent stacks break because setup is spread across tools, configs, and machine-specific assumptions.
15
+ Otto standardizes this into a single operator experience:
16
+
17
+ - installs and upgrades required global CLIs,
18
+ - merges required plugins into `opencode` config,
19
+ - enforces safe runtime defaults,
20
+ - supports tenant-oriented Docker operation,
21
+ - ships stable and edge Docker channels to GHCR.
22
+
23
+ ## What Otto includes
24
+
25
+ Otto orchestrates three upstream components without patching their source code:
26
+
27
+ - `opencode-ai` — coding agent runtime
28
+ - `@otto-assistant/bridge` — Discord bridge process
29
+ - `mempalace` — persistent memory plugin for long-lived context
30
+
31
+ ## Release channels
32
+
33
+ Docker images are published to GHCR under:
34
+
35
+ - `ghcr.io/otto-assistant/otto:edge` (latest from `master`)
36
+ - `ghcr.io/otto-assistant/otto:stable` (latest stable tag)
37
+ - `ghcr.io/otto-assistant/otto:latest` (stable release alias)
38
+ - `ghcr.io/otto-assistant/otto:vX.Y.Z` (versioned stable tags)
39
+
40
+ ## Quick start (Docker)
41
+
42
+ ### 1) Pull image
43
+
44
+ ```bash
45
+ docker pull ghcr.io/otto-assistant/otto:edge
46
+ ```
47
+
48
+ For stable use:
49
+
50
+ ```bash
51
+ docker pull ghcr.io/otto-assistant/otto:stable
52
+ ```
53
+
54
+ ### 2) Run container
55
+
56
+ ```bash
57
+ docker run --rm -it \
58
+ -v "$HOME/.config/opencode:/root/.config/opencode" \
59
+ -v "$HOME/.kimaki:/root/.kimaki" \
60
+ -v "$PWD:/workspace" \
61
+ ghcr.io/otto-assistant/otto:edge
62
+ ```
63
+
64
+ By default, image entrypoint starts `bridge`.
65
+
66
+ ## Quick start (CLI from source)
67
+
68
+ ### Requirements
69
+
70
+ - Node.js 22+
71
+ - pnpm
72
+
73
+ ### Build and install
74
+
75
+ ```bash
76
+ pnpm install
77
+ pnpm build
78
+ npm install -g .
79
+ ```
80
+
81
+ ### Verify
82
+
83
+ ```bash
84
+ otto status
85
+ otto doctor
86
+ ```
87
+
88
+ ## Simple onboarding flow
89
+
90
+ 1. Install Otto (Docker or global CLI).
91
+ 2. Run `otto install` once.
92
+ 3. Confirm health with `otto doctor`.
93
+ 4. Start your bridge/runtime.
94
+ 5. Begin coding sessions with persistent memory enabled.
95
+
96
+ ## Core commands
97
+
98
+ ```bash
99
+ otto install
100
+ otto upgrade stable
101
+ otto upgrade latest
102
+ otto status
103
+ otto doctor
104
+ ```
105
+
106
+ ## Stable upgrade policy
107
+
108
+ - **Edge**: follows `master` continuously.
109
+ - **Stable**: published on git tags `vX.Y.Z`.
110
+ - Use `otto upgrade stable` for predictable pinned versions.
111
+ - Use `otto upgrade latest` for newest upstream packages.
112
+
113
+ ## Production notes
114
+
115
+ - Keep `~/.config/opencode` and `~/.kimaki` persistent.
116
+ - If runtime dependencies or config changed, restart bridge.
117
+ - Use unique compose project names per tenant/environment.
118
+
119
+ ## Developer workflow
120
+
121
+ ```bash
122
+ pnpm build
123
+ pnpm test
124
+ ```
125
+
126
+ Then push to `master` for edge Docker publish, or push `vX.Y.Z` tag for stable publish.
127
+
128
+ ## Security and operational model
129
+
130
+ - no forceful mutation of upstream source packages,
131
+ - explicit version pinning for stable path,
132
+ - deterministic Docker builds for CI/CD,
133
+ - memory-enabled sessions through plugin orchestration.
134
+
135
+ ## Project links
136
+
137
+ - Repository: https://github.com/otto-assistant/otto
138
+ - Docker image: https://github.com/otto-assistant/otto/pkgs/container/otto
139
+
140
+ ---
141
+
142
+ Otto is optimized for one goal: **ship faster with AI agents, without losing control of runtime quality and memory continuity.**
package/dist/cli.js CHANGED
@@ -3,9 +3,15 @@ import { MANIFEST } from "./manifest.js";
3
3
  import { getInstalledVersion } from "./detect.js";
4
4
  import { readOpenCodeConfigState, writeOpenCodeConfig, ensureAgentMemoryConfig, ensureSubagentThreadSkill, mergePlugins, readOttoConfig, writeOttoConfig, buildSubagentThreadPolicy, mergeAgentPrompts, } from "./config.js";
5
5
  import { installMissingPackages, upgradePackage, planStableUpgrades } from "./installer.js";
6
+ import fs from "node:fs";
7
+ import path from "node:path";
6
8
  import { hasKimakiBinary, restartKimaki } from "./lifecycle.js";
7
- import { checkPackagePresence, checkConfigHealth, checkDirectoryHealth } from "./health.js";
9
+ import { checkPackagePresence, checkConfigHealth, checkDirectoryHealth, checkTenantHealth } from "./health.js";
8
10
  import { syncUpstreams } from "./sync.js";
11
+ import { runCompose } from "./docker.js";
12
+ import { ensureTenantScaffold, resolveTenantMode } from "./tenant.js";
13
+ import { searchSkills, getAllIndexedSkills, listInstalledSkills, installSkillFromIndex, installSkillsBaseline, removeSkill, ensureSkillsIndex, getConfiguredRepos, loadSkillsIndex, } from "./skills.js";
14
+ import { GENTLEMAN_SKILLS_BASELINE } from "./skills-baseline.js";
9
15
  const args = process.argv.slice(2);
10
16
  const command = args[0] ?? "";
11
17
  const subCommand = args[1] ?? "";
@@ -58,7 +64,22 @@ async function cmdInstall() {
58
64
  if (skillCreated) {
59
65
  console.log("Created otto-subagent-threads skill");
60
66
  }
61
- // 5. Restart kimaki if needed but NOT if running inside kimaki
67
+ // 5. Install Otto-core skills from skills repo (best-effort)
68
+ try {
69
+ ensureSkillsIndex();
70
+ const allSkills = getAllIndexedSkills();
71
+ const installedSkillNames = new Set(listInstalledSkills().map((s) => s.name));
72
+ const coreSkills = allSkills.filter((s) => s.source === "otto-assistant/skills" && !installedSkillNames.has(s.name));
73
+ for (const skill of coreSkills) {
74
+ const ok = installSkillFromIndex(skill.name);
75
+ if (ok)
76
+ console.log(`Installed skill: ${skill.name}`);
77
+ }
78
+ }
79
+ catch {
80
+ console.log("⚠ Could not fetch skills from GitHub (offline?). Skipping.");
81
+ }
82
+ // 6. Restart kimaki if needed — but NOT if running inside kimaki
62
83
  // (kimaki restart kills the current opencode session)
63
84
  const runningInsideKimaki = !!process.env.KIMAKI;
64
85
  if (configChanged || installed.length > 0) {
@@ -166,6 +187,18 @@ async function cmdStatus() {
166
187
  console.log(` ask before thread delete: ${configHealth.subagentThreadsAskBeforeDelete ? "yes" : "no"}`);
167
188
  console.log(` auto delete thread on complete: ${configHealth.subagentThreadsAutoDelete ? "yes" : "no"}`);
168
189
  console.log(` kimaki process: ${configHealth.kimakiRunning ? "running" : "not running"}`);
190
+ console.log("\nSkills:");
191
+ const skillsInstalled = listInstalledSkills();
192
+ console.log(` installed: ${skillsInstalled.length > 0 ? skillsInstalled.map((s) => s.name).join(", ") : "(none)"}`);
193
+ try {
194
+ const index = loadSkillsIndex();
195
+ const repoCount = Object.keys(index.repos).length;
196
+ const totalIndexed = getAllIndexedSkills().length;
197
+ console.log(` indexed: ${totalIndexed} skills from ${repoCount} repos`);
198
+ }
199
+ catch {
200
+ console.log(" indexed: (unavailable)");
201
+ }
169
202
  }
170
203
  async function cmdDoctor() {
171
204
  console.log("Otto doctor\n");
@@ -188,10 +221,10 @@ async function cmdDoctor() {
188
221
  hasErrors = true;
189
222
  }
190
223
  if (configHealth.memoryPluginEnabled) {
191
- console.log(" ✓ opencode-agent-memory plugin enabled");
224
+ console.log(" ✓ mempalace plugin enabled");
192
225
  }
193
226
  else {
194
- console.log(" ✗ opencode-agent-memory plugin NOT enabled — run `otto install`");
227
+ console.log(" ✗ mempalace plugin NOT enabled — run `otto install`");
195
228
  hasErrors = true;
196
229
  }
197
230
  if (configHealth.subagentPolicyInjected) {
@@ -215,8 +248,348 @@ async function cmdDoctor() {
215
248
  if (d.status === "error")
216
249
  hasErrors = true;
217
250
  }
251
+ console.log("\nChecking skills...");
252
+ const skillsInstalled = listInstalledSkills();
253
+ if (skillsInstalled.length > 0) {
254
+ console.log(` ✓ ${skillsInstalled.length} skill(s) installed`);
255
+ }
256
+ else {
257
+ console.log(" ⚠ No skills installed — run `otto skills add --all`");
258
+ }
259
+ try {
260
+ const totalIndexed = getAllIndexedSkills().length;
261
+ if (totalIndexed > 0) {
262
+ console.log(` ✓ Skills index available (${totalIndexed} skills)`);
263
+ }
264
+ else {
265
+ console.log(" ⚠ Skills index empty — run `otto skills update`");
266
+ }
267
+ }
268
+ catch {
269
+ console.log(" ⚠ Skills index unavailable");
270
+ }
218
271
  console.log(hasErrors ? "\n✗ Issues found. Run `otto install` to fix." : "\n✓ All checks passed!");
219
272
  }
273
+ // ---------------------------------------------------------------------------
274
+ // otto skills sub-commands
275
+ // ---------------------------------------------------------------------------
276
+ async function cmdSkills(subArgs) {
277
+ const skillCommand = subArgs[0] ?? "";
278
+ switch (skillCommand) {
279
+ case "list":
280
+ cmdSkillsList();
281
+ break;
282
+ case "search": {
283
+ const query = subArgs.slice(1).join(" ");
284
+ if (!query) {
285
+ console.log("Usage: otto skills search <query>");
286
+ process.exit(1);
287
+ }
288
+ cmdSkillsSearch(query);
289
+ break;
290
+ }
291
+ case "browse":
292
+ cmdSkillsBrowse();
293
+ break;
294
+ case "add": {
295
+ const arg = subArgs[1];
296
+ if (!arg || arg === "--all") {
297
+ await cmdSkillsAddAll();
298
+ }
299
+ else {
300
+ await cmdSkillsAddOne(arg);
301
+ }
302
+ break;
303
+ }
304
+ case "remove": {
305
+ const name = subArgs[1];
306
+ if (!name) {
307
+ console.log("Usage: otto skills remove <name>");
308
+ process.exit(1);
309
+ }
310
+ cmdSkillsRemove(name);
311
+ break;
312
+ }
313
+ case "update":
314
+ cmdSkillsUpdate();
315
+ break;
316
+ case "repos":
317
+ cmdSkillsRepos();
318
+ break;
319
+ default:
320
+ console.log(`Otto skills — discover and install agent skills from public repos
321
+
322
+ Usage:
323
+ otto skills search <query> Search skills by name/description
324
+ otto skills browse Browse all available skills
325
+ otto skills list List installed skills
326
+ otto skills add <name> Install a skill
327
+ otto skills add --all Install all skills from otto-assistant/skills
328
+ otto skills update Refresh skills index from GitHub
329
+ otto skills remove <name> Remove an installed skill
330
+ otto skills repos Show configured skill repositories
331
+ `);
332
+ break;
333
+ }
334
+ }
335
+ function cmdSkillsSearch(query) {
336
+ console.log(`Searching: "${query}"\n`);
337
+ const { refreshed } = ensureSkillsIndex();
338
+ if (refreshed > 0) {
339
+ console.log(`Updated index (${refreshed} repo(s) refreshed).\n`);
340
+ }
341
+ const results = searchSkills(query);
342
+ if (results.length === 0) {
343
+ console.log("No skills found.");
344
+ return;
345
+ }
346
+ for (const skill of results) {
347
+ console.log(` ${skill.name} — ${skill.description}`);
348
+ console.log(` source: ${skill.source}`);
349
+ }
350
+ console.log(`\n${results.length} skill(s) found. Install with: otto skills add <name>`);
351
+ }
352
+ function cmdSkillsBrowse() {
353
+ console.log("Otto skills — browsing all available\n");
354
+ const { refreshed } = ensureSkillsIndex();
355
+ if (refreshed > 0) {
356
+ console.log(`Updated index (${refreshed} repo(s) refreshed).\n`);
357
+ }
358
+ const allSkills = getAllIndexedSkills();
359
+ const installed = new Set(listInstalledSkills().map((s) => s.name));
360
+ // Group by source repo
361
+ const byRepo = {};
362
+ for (const skill of allSkills) {
363
+ if (!byRepo[skill.source])
364
+ byRepo[skill.source] = [];
365
+ byRepo[skill.source].push(skill);
366
+ }
367
+ for (const [repo, skills] of Object.entries(byRepo)) {
368
+ console.log(`${repo} (${skills.length} skills):`);
369
+ for (const skill of skills) {
370
+ const icon = installed.has(skill.name) ? "✓" : "•";
371
+ console.log(` ${icon} ${skill.name} — ${skill.description}`);
372
+ }
373
+ console.log();
374
+ }
375
+ const totalAvailable = allSkills.filter((s) => !installed.has(s.name)).length;
376
+ console.log(`${allSkills.length} total, ${totalAvailable} available to install.`);
377
+ }
378
+ function cmdSkillsList() {
379
+ console.log("Otto skills\n");
380
+ const installed = listInstalledSkills();
381
+ if (installed.length > 0) {
382
+ console.log("Installed:");
383
+ for (const s of installed) {
384
+ console.log(` ✓ ${s.name} — ${s.description}`);
385
+ }
386
+ }
387
+ else {
388
+ console.log("Installed: (none)");
389
+ }
390
+ console.log(`\nUse "otto skills browse" to see all available skills.`);
391
+ console.log(`Use "otto skills search <query>" to search.`);
392
+ }
393
+ async function cmdSkillsAddOne(name) {
394
+ console.log(`Installing skill: ${name}\n`);
395
+ ensureSkillsIndex();
396
+ const success = installSkillFromIndex(name);
397
+ if (!success) {
398
+ console.error(`Error: skill "${name}" not found. Run "otto skills search <query>" to find skills.`);
399
+ process.exit(1);
400
+ }
401
+ console.log(`Installed ${name} → ~/.config/opencode/skills/${name}/`);
402
+ console.log("Done!");
403
+ }
404
+ async function cmdSkillsAddAll() {
405
+ console.log("Installing all skills from otto-assistant/skills...\n");
406
+ ensureSkillsIndex();
407
+ const allSkills = getAllIndexedSkills();
408
+ const ottoSkills = allSkills.filter((s) => s.source === "otto-assistant/skills");
409
+ if (ottoSkills.length === 0) {
410
+ console.log("No skills found in otto-assistant/skills. Check your connection.");
411
+ return;
412
+ }
413
+ const installed = new Set(listInstalledSkills().map((s) => s.name));
414
+ let added = 0;
415
+ for (const skill of ottoSkills) {
416
+ if (installed.has(skill.name)) {
417
+ console.log(` ✓ ${skill.name} (already installed)`);
418
+ continue;
419
+ }
420
+ const success = installSkillFromIndex(skill.name);
421
+ if (success) {
422
+ console.log(` + ${skill.name}`);
423
+ added++;
424
+ }
425
+ else {
426
+ console.log(` ✗ ${skill.name} (failed)`);
427
+ }
428
+ }
429
+ if (added === 0) {
430
+ console.log("\nAll skills already installed.");
431
+ }
432
+ else {
433
+ console.log(`\nInstalled ${added} skill(s).`);
434
+ }
435
+ console.log("Done!");
436
+ }
437
+ function cmdSkillsUpdate() {
438
+ console.log("Refreshing skills index from GitHub...\n");
439
+ const { refreshed, total } = ensureSkillsIndex(0); // force refresh all
440
+ if (refreshed === 0 && total === 0) {
441
+ console.log("No repos configured.");
442
+ return;
443
+ }
444
+ console.log(`Refreshed ${refreshed}/${total} repo(s).`);
445
+ const allSkills = getAllIndexedSkills();
446
+ console.log(`Index now has ${allSkills.length} skills.`);
447
+ console.log("Done!");
448
+ }
449
+ function cmdSkillsRemove(name) {
450
+ console.log(`Removing skill: ${name}\n`);
451
+ const success = removeSkill(name);
452
+ if (!success) {
453
+ console.error(`Error: skill "${name}" is not installed.`);
454
+ process.exit(1);
455
+ }
456
+ console.log(`Removed ${name}.`);
457
+ console.log("Done!");
458
+ }
459
+ function cmdSkillsRepos() {
460
+ console.log("Configured skill repositories:\n");
461
+ const repos = getConfiguredRepos();
462
+ for (const repo of repos) {
463
+ console.log(` ${repo}`);
464
+ }
465
+ console.log(`\n${repos.length} repo(s) configured.`);
466
+ }
467
+ async function cmdTenant(subArgs) {
468
+ const tenantCommand = subArgs[0] ?? "";
469
+ const tenantPathArg = subArgs[1];
470
+ if (tenantCommand === "skills") {
471
+ const action = subArgs[1] ?? "";
472
+ const pathArg = subArgs[2];
473
+ if (action !== "bootstrap" || !pathArg) {
474
+ console.log("Usage: otto tenant skills bootstrap <path>");
475
+ process.exit(1);
476
+ }
477
+ const tenantPath = path.resolve(pathArg);
478
+ const skillsDir = path.join(tenantPath, "memory", "opencode", "skills");
479
+ ensureSkillsIndex();
480
+ const report = installSkillsBaseline(GENTLEMAN_SKILLS_BASELINE, skillsDir);
481
+ console.log(`Skills baseline bootstrap: ${tenantPath}`);
482
+ console.log(` Installed: ${report.installed.length > 0 ? report.installed.join(", ") : "(none)"}`);
483
+ console.log(` Already present: ${report.alreadyPresent.length > 0 ? report.alreadyPresent.join(", ") : "(none)"}`);
484
+ if (report.failed.length > 0) {
485
+ console.log(` Failed: ${report.failed.join(", ")}`);
486
+ process.exitCode = 2;
487
+ }
488
+ else {
489
+ console.log(" Failed: (none)");
490
+ }
491
+ return;
492
+ }
493
+ if (!tenantPathArg) {
494
+ console.log("Usage: otto tenant <init|up|down|status|logs> <path>");
495
+ process.exit(1);
496
+ }
497
+ const tenantPath = path.resolve(tenantPathArg);
498
+ switch (tenantCommand) {
499
+ case "init": {
500
+ const result = ensureTenantScaffold(tenantPath);
501
+ if (result.created.length === 0) {
502
+ console.log(`Tenant scaffold already exists: ${tenantPath}`);
503
+ }
504
+ else {
505
+ console.log(`Tenant scaffold ready: ${tenantPath}`);
506
+ console.log(`Created: ${result.created.join(", ")}`);
507
+ }
508
+ console.log(`
509
+ Next steps — get your tenant running in 3 steps:
510
+
511
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
512
+ Step 1: Create a Discord Bot
513
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
514
+
515
+ 1. Open https://discord.com/developers/applications
516
+ 2. Click "New Application" → give it a name → Create
517
+ 3. Go to "Bot" tab → Click "Reset Token" → Copy the token
518
+ 4. Under "Privileged Gateway Intents" enable:
519
+ ✅ Message Content Intent
520
+ ✅ Server Members Intent (optional)
521
+ 5. Go to "OAuth2" tab → "URL Generator"
522
+ Scopes: bot
523
+ Permissions: Send Messages, Read Message History, Add Reactions
524
+ 6. Open the generated URL → add bot to your Discord server
525
+
526
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
527
+ Step 2: Configure your tenant
528
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
529
+
530
+ Edit ${tenantPath}/.env with your bot token:
531
+
532
+ KIMAKI_BOT_TOKEN=your-bot-token-here
533
+
534
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
535
+ Step 3: Start your tenant
536
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
537
+
538
+ docker compose -f ${tenantPath}/compose.yml up -d
539
+
540
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
541
+
542
+ Useful commands:
543
+ otto tenant status ${tenantPathArg} — check health
544
+ otto tenant logs ${tenantPathArg} — view logs
545
+ otto tenant down ${tenantPathArg} — stop tenant
546
+ otto tenant skills bootstrap ${tenantPathArg} — install baseline skills
547
+ `);
548
+ return;
549
+ }
550
+ case "up": {
551
+ const mode = resolveTenantMode(process.env.OTTO_MODE);
552
+ if (mode === "admin") {
553
+ console.log("⚠ OTTO_MODE=admin enabled: tenant has elevated runtime profile.");
554
+ }
555
+ runCompose(tenantPath, ["up", "-d"]);
556
+ return;
557
+ }
558
+ case "down":
559
+ runCompose(tenantPath, ["down"]);
560
+ return;
561
+ case "logs": {
562
+ const follow = subArgs.includes("--follow") ? ["--follow"] : [];
563
+ runCompose(tenantPath, ["logs", ...follow]);
564
+ return;
565
+ }
566
+ case "status": {
567
+ const health = checkTenantHealth({ tenantPath });
568
+ console.log(`Tenant status: ${tenantPath}`);
569
+ for (const item of health) {
570
+ const icon = item.status === "ok" ? "✓" : item.status === "warn" ? "⚠" : "✗";
571
+ console.log(` ${icon} ${item.name}: ${item.message}`);
572
+ }
573
+ const composeExists = fs.existsSync(path.join(tenantPath, "compose.yml"));
574
+ const skipComposePs = process.env.OTTO_SKIP_COMPOSE_PS === "1";
575
+ if (composeExists && !skipComposePs) {
576
+ try {
577
+ runCompose(tenantPath, ["ps"]);
578
+ }
579
+ catch {
580
+ console.log(" ⚠ docker compose ps failed");
581
+ }
582
+ }
583
+ return;
584
+ }
585
+ default:
586
+ console.log("Usage: otto tenant <init|up|down|status|logs> <path> | otto tenant skills bootstrap <path>");
587
+ process.exit(1);
588
+ }
589
+ }
590
+ // ---------------------------------------------------------------------------
591
+ // Main router
592
+ // ---------------------------------------------------------------------------
220
593
  async function main() {
221
594
  switch (command) {
222
595
  case "install":
@@ -234,17 +607,38 @@ async function main() {
234
607
  case "sync":
235
608
  await syncUpstreams();
236
609
  break;
610
+ case "skills":
611
+ await cmdSkills(args.slice(1));
612
+ break;
613
+ case "tenant":
614
+ await cmdTenant(args.slice(1));
615
+ break;
237
616
  default:
238
- console.log(`Otto — terminal UI distribution for opencode + kimaki + opencode-agent-memory
617
+ console.log(`Otto — terminal UI distribution for opencode + kimaki + mempalace
239
618
 
240
619
  Usage:
241
- otto install Install missing packages + configure
242
- otto upgrade Upgrade to stable (manifest-pinned) versions
243
- otto upgrade stable Upgrade to manifest-pinned versions
244
- otto upgrade latest Upgrade to npm latest versions
245
- otto status Show installed versions + config health
246
- otto doctor Validate all integration points
247
- otto sync Trigger upstream sync for all forked repos
620
+ otto tenant init <path> Create compose-first tenant scaffold
621
+ otto tenant up <path> Start tenant with docker compose
622
+ otto tenant down <path> Stop tenant with docker compose
623
+ otto tenant status <path> Show tenant preflight + compose status
624
+ otto tenant logs <path> Show tenant logs (add --follow)
625
+ otto tenant skills bootstrap <path> Install baseline skills for tenant
626
+
627
+ otto install Legacy: install missing npm packages + configure
628
+ otto upgrade Legacy: upgrade to stable (manifest-pinned) versions
629
+ otto upgrade stable Legacy: upgrade to manifest-pinned versions
630
+ otto upgrade latest Legacy: upgrade to npm latest versions
631
+ otto status Show installed versions + config health
632
+ otto doctor Validate all integration points
633
+ otto sync Trigger upstream sync for all forked repos
634
+ otto skills search <q> Search skills across public repos
635
+ otto skills browse Browse all available skills
636
+ otto skills list List installed skills
637
+ otto skills add <name> Install a skill
638
+ otto skills add --all Install all skills from otto-assistant/skills
639
+ otto skills update Refresh skills index
640
+ otto skills remove <name> Remove an installed skill
641
+ otto skills repos Show configured skill repositories
248
642
  `);
249
643
  break;
250
644
  }
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}