@knowzai/cli 0.3.0 → 0.5.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.
Files changed (289) hide show
  1. package/README.md +68 -0
  2. package/assets/portable/releases.json +42 -0
  3. package/assets/selfhosted/.env.example +22 -1
  4. package/assets/selfhosted/docker-compose.mssql.yml +113 -0
  5. package/assets/selfhosted/docker-compose.yml +29 -15
  6. package/assets/selfhosted/lmstudio-azure-bridge.mjs +73 -0
  7. package/assets/selfhosted/releases.json +129 -6
  8. package/bin/run.js +2 -0
  9. package/dist/.tsbuildinfo +1 -1
  10. package/dist/base-command.d.ts +2 -0
  11. package/dist/base-command.d.ts.map +1 -1
  12. package/dist/base-command.js +11 -1
  13. package/dist/base-command.js.map +1 -1
  14. package/dist/commands/ask.d.ts.map +1 -1
  15. package/dist/commands/ask.js +2 -0
  16. package/dist/commands/ask.js.map +1 -1
  17. package/dist/commands/backup.d.ts +1 -0
  18. package/dist/commands/backup.d.ts.map +1 -1
  19. package/dist/commands/backup.js +29 -10
  20. package/dist/commands/backup.js.map +1 -1
  21. package/dist/commands/chat.d.ts +2 -1
  22. package/dist/commands/chat.d.ts.map +1 -1
  23. package/dist/commands/chat.js +10 -4
  24. package/dist/commands/chat.js.map +1 -1
  25. package/dist/commands/down.d.ts +14 -27
  26. package/dist/commands/down.d.ts.map +1 -1
  27. package/dist/commands/down.js +6 -31
  28. package/dist/commands/down.js.map +1 -1
  29. package/dist/commands/knowledge/amend.d.ts +2 -2
  30. package/dist/commands/knowledge/amend.d.ts.map +1 -1
  31. package/dist/commands/knowledge/amend.js +5 -0
  32. package/dist/commands/knowledge/amend.js.map +1 -1
  33. package/dist/commands/login.d.ts +4 -0
  34. package/dist/commands/login.d.ts.map +1 -1
  35. package/dist/commands/login.js +21 -2
  36. package/dist/commands/login.js.map +1 -1
  37. package/dist/commands/menu.js +1 -1
  38. package/dist/commands/menu.js.map +1 -1
  39. package/dist/commands/platform/destroy.d.ts +15 -5
  40. package/dist/commands/platform/destroy.d.ts.map +1 -1
  41. package/dist/commands/platform/destroy.js +6 -33
  42. package/dist/commands/platform/destroy.js.map +1 -1
  43. package/dist/commands/platform/doctor.d.ts +18 -3
  44. package/dist/commands/platform/doctor.d.ts.map +1 -1
  45. package/dist/commands/platform/doctor.js +4 -10
  46. package/dist/commands/platform/doctor.js.map +1 -1
  47. package/dist/commands/platform/down.d.ts +15 -15
  48. package/dist/commands/platform/down.d.ts.map +1 -1
  49. package/dist/commands/platform/down.js +4 -8
  50. package/dist/commands/platform/down.js.map +1 -1
  51. package/dist/commands/platform/logs.d.ts +15 -14
  52. package/dist/commands/platform/logs.d.ts.map +1 -1
  53. package/dist/commands/platform/logs.js +5 -16
  54. package/dist/commands/platform/logs.js.map +1 -1
  55. package/dist/commands/platform/reset.d.ts +16 -13
  56. package/dist/commands/platform/reset.d.ts.map +1 -1
  57. package/dist/commands/platform/reset.js +7 -36
  58. package/dist/commands/platform/reset.js.map +1 -1
  59. package/dist/commands/platform/setup.d.ts +1 -0
  60. package/dist/commands/platform/setup.d.ts.map +1 -1
  61. package/dist/commands/platform/setup.js +1 -1
  62. package/dist/commands/platform/setup.js.map +1 -1
  63. package/dist/commands/platform/status.d.ts +14 -16
  64. package/dist/commands/platform/status.d.ts.map +1 -1
  65. package/dist/commands/platform/status.js +4 -29
  66. package/dist/commands/platform/status.js.map +1 -1
  67. package/dist/commands/restore.d.ts +10 -1
  68. package/dist/commands/restore.d.ts.map +1 -1
  69. package/dist/commands/restore.js +56 -13
  70. package/dist/commands/restore.js.map +1 -1
  71. package/dist/commands/runtime/destroy.d.ts +29 -0
  72. package/dist/commands/runtime/destroy.d.ts.map +1 -0
  73. package/dist/commands/runtime/destroy.js +13 -0
  74. package/dist/commands/runtime/destroy.js.map +1 -0
  75. package/dist/commands/runtime/doctor.d.ts +27 -0
  76. package/dist/commands/runtime/doctor.d.ts.map +1 -0
  77. package/dist/commands/runtime/doctor.js +11 -0
  78. package/dist/commands/runtime/doctor.js.map +1 -0
  79. package/dist/commands/runtime/logs.d.ts +28 -0
  80. package/dist/commands/runtime/logs.d.ts.map +1 -0
  81. package/dist/commands/runtime/logs.js +12 -0
  82. package/dist/commands/runtime/logs.js.map +1 -0
  83. package/dist/commands/runtime/status.d.ts +27 -0
  84. package/dist/commands/runtime/status.d.ts.map +1 -0
  85. package/dist/commands/runtime/status.js +11 -0
  86. package/dist/commands/runtime/status.js.map +1 -0
  87. package/dist/commands/runtime/upgrade.d.ts +28 -0
  88. package/dist/commands/runtime/upgrade.d.ts.map +1 -0
  89. package/dist/commands/runtime/upgrade.js +12 -0
  90. package/dist/commands/runtime/upgrade.js.map +1 -0
  91. package/dist/commands/setup.d.ts +1 -0
  92. package/dist/commands/setup.d.ts.map +1 -1
  93. package/dist/commands/setup.js +1 -1
  94. package/dist/commands/transfer.js +1 -1
  95. package/dist/commands/transfer.js.map +1 -1
  96. package/dist/commands/up.d.ts +3 -11
  97. package/dist/commands/up.d.ts.map +1 -1
  98. package/dist/commands/up.js +48 -36
  99. package/dist/commands/up.js.map +1 -1
  100. package/dist/commands/whoami.js +1 -1
  101. package/dist/commands/whoami.js.map +1 -1
  102. package/dist/hooks/init/launch-menu.d.ts.map +1 -1
  103. package/dist/hooks/init/launch-menu.js +2 -0
  104. package/dist/hooks/init/launch-menu.js.map +1 -1
  105. package/dist/lib/anonymous-registry.d.ts +3 -0
  106. package/dist/lib/anonymous-registry.d.ts.map +1 -0
  107. package/dist/lib/anonymous-registry.js +25 -0
  108. package/dist/lib/anonymous-registry.js.map +1 -0
  109. package/dist/lib/async-process.d.ts +15 -0
  110. package/dist/lib/async-process.d.ts.map +1 -0
  111. package/dist/lib/async-process.js +145 -0
  112. package/dist/lib/async-process.js.map +1 -0
  113. package/dist/lib/backup-process.d.ts +4 -0
  114. package/dist/lib/backup-process.d.ts.map +1 -0
  115. package/dist/lib/backup-process.js +20 -0
  116. package/dist/lib/backup-process.js.map +1 -0
  117. package/dist/lib/brand.d.ts +25 -0
  118. package/dist/lib/brand.d.ts.map +1 -0
  119. package/dist/lib/brand.js +105 -0
  120. package/dist/lib/brand.js.map +1 -0
  121. package/dist/lib/chat.d.ts +1 -0
  122. package/dist/lib/chat.d.ts.map +1 -1
  123. package/dist/lib/chat.js +12 -3
  124. package/dist/lib/chat.js.map +1 -1
  125. package/dist/lib/compose-status.d.ts +14 -0
  126. package/dist/lib/compose-status.d.ts.map +1 -0
  127. package/dist/lib/compose-status.js +31 -0
  128. package/dist/lib/compose-status.js.map +1 -0
  129. package/dist/lib/container-engine.js +2 -2
  130. package/dist/lib/container-engine.js.map +1 -1
  131. package/dist/lib/local-engine-context.d.ts +16 -0
  132. package/dist/lib/local-engine-context.d.ts.map +1 -0
  133. package/dist/lib/local-engine-context.js +123 -0
  134. package/dist/lib/local-engine-context.js.map +1 -0
  135. package/dist/lib/login-guided.d.ts.map +1 -1
  136. package/dist/lib/login-guided.js +2 -1
  137. package/dist/lib/login-guided.js.map +1 -1
  138. package/dist/lib/login.d.ts +3 -0
  139. package/dist/lib/login.d.ts.map +1 -1
  140. package/dist/lib/login.js +25 -5
  141. package/dist/lib/login.js.map +1 -1
  142. package/dist/lib/oci-registry-probe.d.ts +43 -0
  143. package/dist/lib/oci-registry-probe.d.ts.map +1 -0
  144. package/dist/lib/oci-registry-probe.js +110 -0
  145. package/dist/lib/oci-registry-probe.js.map +1 -0
  146. package/dist/lib/peer-command.d.ts.map +1 -1
  147. package/dist/lib/peer-command.js +3 -1
  148. package/dist/lib/peer-command.js.map +1 -1
  149. package/dist/lib/platform-acquisition.d.ts +27 -0
  150. package/dist/lib/platform-acquisition.d.ts.map +1 -0
  151. package/dist/lib/platform-acquisition.js +21 -0
  152. package/dist/lib/platform-acquisition.js.map +1 -0
  153. package/dist/lib/platform-backup.d.ts +1 -0
  154. package/dist/lib/platform-backup.d.ts.map +1 -1
  155. package/dist/lib/platform-backup.js +375 -157
  156. package/dist/lib/platform-backup.js.map +1 -1
  157. package/dist/lib/platform-command-shared.d.ts +2 -0
  158. package/dist/lib/platform-command-shared.d.ts.map +1 -1
  159. package/dist/lib/platform-command-shared.js +13 -5
  160. package/dist/lib/platform-command-shared.js.map +1 -1
  161. package/dist/lib/platform-edition.d.ts +3 -6
  162. package/dist/lib/platform-edition.d.ts.map +1 -1
  163. package/dist/lib/platform-edition.js +9 -17
  164. package/dist/lib/platform-edition.js.map +1 -1
  165. package/dist/lib/platform-frontdoor-runtime.d.ts.map +1 -1
  166. package/dist/lib/platform-frontdoor-runtime.js +44 -19
  167. package/dist/lib/platform-frontdoor-runtime.js.map +1 -1
  168. package/dist/lib/platform-frontdoor.d.ts +32 -5
  169. package/dist/lib/platform-frontdoor.d.ts.map +1 -1
  170. package/dist/lib/platform-frontdoor.js +251 -171
  171. package/dist/lib/platform-frontdoor.js.map +1 -1
  172. package/dist/lib/platform-image-admission.d.ts +16 -0
  173. package/dist/lib/platform-image-admission.d.ts.map +1 -0
  174. package/dist/lib/platform-image-admission.js +73 -0
  175. package/dist/lib/platform-image-admission.js.map +1 -0
  176. package/dist/lib/platform-image-source.d.ts.map +1 -1
  177. package/dist/lib/platform-image-source.js +2 -0
  178. package/dist/lib/platform-image-source.js.map +1 -1
  179. package/dist/lib/platform-lifecycle.d.ts +4 -0
  180. package/dist/lib/platform-lifecycle.d.ts.map +1 -1
  181. package/dist/lib/platform-lifecycle.js +42 -8
  182. package/dist/lib/platform-lifecycle.js.map +1 -1
  183. package/dist/lib/platform-onboarding.d.ts +10 -0
  184. package/dist/lib/platform-onboarding.d.ts.map +1 -1
  185. package/dist/lib/platform-onboarding.js +21 -0
  186. package/dist/lib/platform-onboarding.js.map +1 -1
  187. package/dist/lib/platform-preflight.d.ts +6 -3
  188. package/dist/lib/platform-preflight.d.ts.map +1 -1
  189. package/dist/lib/platform-preflight.js +52 -19
  190. package/dist/lib/platform-preflight.js.map +1 -1
  191. package/dist/lib/platform-release-manifest.d.ts +6 -1
  192. package/dist/lib/platform-release-manifest.d.ts.map +1 -1
  193. package/dist/lib/platform-release-manifest.js +10 -0
  194. package/dist/lib/platform-release-manifest.js.map +1 -1
  195. package/dist/lib/platform-runtime.d.ts +5 -2
  196. package/dist/lib/platform-runtime.d.ts.map +1 -1
  197. package/dist/lib/platform-runtime.js +7 -40
  198. package/dist/lib/platform-runtime.js.map +1 -1
  199. package/dist/lib/portable-release-digests.d.ts +5 -0
  200. package/dist/lib/portable-release-digests.d.ts.map +1 -0
  201. package/dist/lib/portable-release-digests.js +53 -0
  202. package/dist/lib/portable-release-digests.js.map +1 -0
  203. package/dist/lib/release-pin-matrix.d.ts +29 -0
  204. package/dist/lib/release-pin-matrix.d.ts.map +1 -0
  205. package/dist/lib/release-pin-matrix.js +67 -0
  206. package/dist/lib/release-pin-matrix.js.map +1 -0
  207. package/dist/lib/runtime-backup-archive.d.ts +20 -0
  208. package/dist/lib/runtime-backup-archive.d.ts.map +1 -0
  209. package/dist/lib/runtime-backup-archive.js +269 -0
  210. package/dist/lib/runtime-backup-archive.js.map +1 -0
  211. package/dist/lib/runtime-command.d.ts +37 -0
  212. package/dist/lib/runtime-command.d.ts.map +1 -0
  213. package/dist/lib/runtime-command.js +50 -0
  214. package/dist/lib/runtime-command.js.map +1 -0
  215. package/dist/lib/runtime-discovery.d.ts +18 -0
  216. package/dist/lib/runtime-discovery.d.ts.map +1 -0
  217. package/dist/lib/runtime-discovery.js +56 -0
  218. package/dist/lib/runtime-discovery.js.map +1 -0
  219. package/dist/lib/runtime-lock.d.ts +3 -0
  220. package/dist/lib/runtime-lock.d.ts.map +1 -0
  221. package/dist/lib/runtime-lock.js +50 -0
  222. package/dist/lib/runtime-lock.js.map +1 -0
  223. package/dist/lib/runtime-operations.d.ts +98 -0
  224. package/dist/lib/runtime-operations.d.ts.map +1 -0
  225. package/dist/lib/runtime-operations.js +182 -0
  226. package/dist/lib/runtime-operations.js.map +1 -0
  227. package/dist/lib/runtime-provider.d.ts +17 -0
  228. package/dist/lib/runtime-provider.d.ts.map +1 -0
  229. package/dist/lib/runtime-provider.js +52 -0
  230. package/dist/lib/runtime-provider.js.map +1 -0
  231. package/dist/lib/runtime-status.d.ts +24 -0
  232. package/dist/lib/runtime-status.d.ts.map +1 -0
  233. package/dist/lib/runtime-status.js +128 -0
  234. package/dist/lib/runtime-status.js.map +1 -0
  235. package/dist/lib/selfhosted-backup.d.ts +37 -0
  236. package/dist/lib/selfhosted-backup.d.ts.map +1 -0
  237. package/dist/lib/selfhosted-backup.js +446 -0
  238. package/dist/lib/selfhosted-backup.js.map +1 -0
  239. package/dist/lib/selfhosted-keyring.d.ts +19 -0
  240. package/dist/lib/selfhosted-keyring.d.ts.map +1 -0
  241. package/dist/lib/selfhosted-keyring.js +193 -0
  242. package/dist/lib/selfhosted-keyring.js.map +1 -0
  243. package/dist/lib/selfhosted-lifecycle.d.ts +66 -10
  244. package/dist/lib/selfhosted-lifecycle.d.ts.map +1 -1
  245. package/dist/lib/selfhosted-lifecycle.js +344 -39
  246. package/dist/lib/selfhosted-lifecycle.js.map +1 -1
  247. package/dist/lib/selfhosted-login.d.ts +34 -0
  248. package/dist/lib/selfhosted-login.d.ts.map +1 -0
  249. package/dist/lib/selfhosted-login.js +116 -0
  250. package/dist/lib/selfhosted-login.js.map +1 -0
  251. package/dist/lib/selfhosted-readiness.d.ts +3 -0
  252. package/dist/lib/selfhosted-readiness.d.ts.map +1 -0
  253. package/dist/lib/selfhosted-readiness.js +24 -0
  254. package/dist/lib/selfhosted-readiness.js.map +1 -0
  255. package/dist/lib/setup-capabilities.d.ts +15 -0
  256. package/dist/lib/setup-capabilities.d.ts.map +1 -0
  257. package/dist/lib/setup-capabilities.js +21 -0
  258. package/dist/lib/setup-capabilities.js.map +1 -0
  259. package/dist/lib/setup-console.d.ts +11 -0
  260. package/dist/lib/setup-console.d.ts.map +1 -1
  261. package/dist/lib/setup-console.js +136 -74
  262. package/dist/lib/setup-console.js.map +1 -1
  263. package/dist/lib/setup-page.d.ts +12 -0
  264. package/dist/lib/setup-page.d.ts.map +1 -1
  265. package/dist/lib/setup-page.js +56 -27
  266. package/dist/lib/setup-page.js.map +1 -1
  267. package/dist/lib/setup-plan.d.ts +1 -0
  268. package/dist/lib/setup-plan.d.ts.map +1 -1
  269. package/dist/lib/setup-plan.js +5 -1
  270. package/dist/lib/setup-plan.js.map +1 -1
  271. package/dist/lib/setup-server.d.ts +11 -2
  272. package/dist/lib/setup-server.d.ts.map +1 -1
  273. package/dist/lib/setup-server.js +150 -26
  274. package/dist/lib/setup-server.js.map +1 -1
  275. package/dist/lib/ui.d.ts +3 -1
  276. package/dist/lib/ui.d.ts.map +1 -1
  277. package/dist/lib/ui.js +39 -7
  278. package/dist/lib/ui.js.map +1 -1
  279. package/dist/lib/up-result.d.ts +3 -0
  280. package/dist/lib/up-result.d.ts.map +1 -1
  281. package/dist/lib/up-result.js.map +1 -1
  282. package/dist/menu/run.js +1 -1
  283. package/dist/menu/run.js.map +1 -1
  284. package/dist/menu/should-launch.d.ts +0 -14
  285. package/dist/menu/should-launch.d.ts.map +1 -1
  286. package/dist/menu/should-launch.js +5 -1
  287. package/dist/menu/should-launch.js.map +1 -1
  288. package/oclif.manifest.json +5052 -2825
  289. package/package.json +12 -9
package/README.md ADDED
@@ -0,0 +1,68 @@
1
+ # Knowz CLI
2
+
3
+ Connect to Knowz endpoints, work with knowledge from your terminal, or start your
4
+ own lightweight, open-source Knowz installation with guided browser setup.
5
+
6
+ ## Install
7
+
8
+ This 0.5.0 candidate is distributed on the preview channel. Requires **Node.js 22
9
+ or newer**:
10
+
11
+ ```sh
12
+ npm install -g @knowzai/cli@0.5.0
13
+ knowz --version
14
+ ```
15
+
16
+ Native packages bundle Node and are available through the
17
+ [public CLI releases](https://github.com/knowz-io/knowz-cli/releases).
18
+ Check each release's operating-system support, checksum and signing status.
19
+
20
+ ## Start selfhosted
21
+
22
+ Start a local Docker engine with Compose, then run:
23
+
24
+ ```sh
25
+ knowz up
26
+ ```
27
+
28
+ The browser guides you through configuration and first sign-in. Selfhosted uses
29
+ public images and requires no Knowz license or GitHub login. Replace the temporary
30
+ administrator password and finish connecting the CLI when prompted. Without an AI
31
+ provider, you can still store and browse knowledge; AI answers require a configured
32
+ provider. Saved provider changes take effect after the indicated restart.
33
+
34
+ ```sh
35
+ knowz runtime status
36
+ knowz down
37
+ knowz up
38
+ knowz backup --encrypt --out ./knowz-backup.enc
39
+ ```
40
+
41
+ Stopping preserves your data. Store backups and their passphrases separately.
42
+ Use `knowz restore --help` for checked recovery into a stopped installation.
43
+
44
+ ## Connect to an endpoint
45
+
46
+ Use `knowz login` for the hosted platform. Named profiles keep endpoint credentials
47
+ separate. For an existing selfhosted endpoint:
48
+
49
+ ```sh
50
+ knowz login --self-hosted --api-url https://knowz.example.com --profile my-knowz
51
+ knowz vault list --profile my-knowz
52
+ knowz search "project notes" --profile my-knowz
53
+ ```
54
+
55
+ Run `knowz --help` and `knowz <command> --help` for knowledge creation, attachments,
56
+ chat, local indexing, encryption, synchronization and runtime management.
57
+
58
+ ## Editions and source
59
+
60
+ [Knowz Selfhosted](https://github.com/knowz-io/knowz-selfhosted-source) is the
61
+ Apache-2.0 open-source edition. The proprietary portable platform is a separate
62
+ contracted offering selected explicitly with `--edition portable`. New proprietary
63
+ downloads and updates require a valid installation grant; a SaaS subscription or
64
+ registry login alone is insufficient. Public selfhosted setup remains independent.
65
+
66
+ The [released CLI skills](https://github.com/knowz-io/knowz-cli/releases) include
67
+ matching command inventories for agents. Use the skill for your installed CLI
68
+ version.
@@ -1,5 +1,47 @@
1
1
  {
2
2
  "releases": [
3
+ {
4
+ "version": "0.44.1",
5
+ "flavors": [
6
+ "portable",
7
+ "portable-gcp"
8
+ ],
9
+ "releasedAt": "2026-09-04T05:26:59Z",
10
+ "minCliVersion": "0.3.0",
11
+ "notes": "Interview Studio v1, guest answer flow, honest knowledge dates. Supersedes v0.44.0 (web image build failed). Commercial grant required for portable pull. Exact seven-component manifest bodies and linux/amd64 availability verified on2026-09-07; anonymous GHCR artifact access denied.",
12
+ "digests": {
13
+ "api": "sha256:625603c64ddfe8ab411fd6ce314fbc1f4881e6ea7018c68dab6bdf5996c8d2cb",
14
+ "api-gcp": "sha256:190afad819f6978ca6301b84e316a038e7b1ba835e5197bfbd72ef5bf77b3041",
15
+ "worker": "sha256:8210c4ba98281202cbec9a0bce91bc8c13a1079c87be677ab3d60bd4539998c0",
16
+ "worker-gcp": "sha256:2cdecd0dd4efd70a0a89865dffed31684e172eedd194acaa333239d4f657ca8e",
17
+ "web": "sha256:382efff53f60bbf073c18eb1eec63c6af62cea2f42c5a74d1b81ec36a8c5c048",
18
+ "mcp": "sha256:7c9e2f5d6f613b77d7b32d5a75f3e613f12cfc36b5c27ed3608435396ca43f5b",
19
+ "public-site": "sha256:f2eee97faa8c41b9505d80c42ee8d5180bbdd65ddfedfa33af4ad79fac194fea"
20
+ },
21
+ "status": "complete"
22
+ },
23
+ {
24
+ "version": "0.43.0",
25
+ "flavors": [
26
+ "portable",
27
+ "portable-gcp"
28
+ ],
29
+ "releasedAt": "2026-09-02T00:00:00Z",
30
+ "minCliVersion": "0.3.0",
31
+ "notes": "Commercial grant required for portable pull. Registration alone does not entitle image pulls.",
32
+ "digests": null
33
+ },
34
+ {
35
+ "version": "0.42.0",
36
+ "flavors": [
37
+ "portable",
38
+ "portable-gcp"
39
+ ],
40
+ "releasedAt": "2026-09-02T00:00:00Z",
41
+ "minCliVersion": "0.3.0",
42
+ "notes": "Commercial grant required for portable pull. Registration alone does not entitle image pulls.",
43
+ "digests": null
44
+ },
3
45
  {
4
46
  "version": "0.41.0",
5
47
  "flavors": [
@@ -5,14 +5,35 @@ KNOWZ_SELFHOSTED_VERSION=0.15.1
5
5
  API_PORT=5000
6
6
  WEB_PORT=3000
7
7
  MCP_PORT=3001
8
- DB_PORT=1433
8
+ # Database host port (loopback only). `knowz up` derives API_PORT+10432 so a local Postgres or a
9
+ # second instance never collides; set it explicitly for hand-written .env files.
10
+ DB_PORT=5432
9
11
 
12
+ POSTGRES_PASSWORD=
10
13
  SA_PASSWORD=
11
14
  JWT_SECRET=
12
15
  ADMIN_USERNAME=admin
13
16
  ADMIN_PASSWORD=
17
+ # The CLI sets true only for a freshly generated first-boot password.
18
+ ADMIN_PASSWORD_REQUIRES_CHANGE=false
14
19
  MCP_SERVICE_KEY=
15
20
 
21
+ # Optional: native OpenAI-compatible AI (LM Studio / Ollama / vLLM / OpenAI)
22
+ # For a model server on this host, the CLI rewrites localhost to host.docker.internal.
23
+ # OPENAI_COMPAT_ENDPOINT=http://host.docker.internal:1234/v1
24
+ # OPENAI_COMPAT_APIKEY=
25
+ # OPENAI_COMPAT_CHAT_MODEL=your-chat-model
26
+ # OPENAI_COMPAT_EMBEDDING_MODEL=your-embedding-model
27
+ # EMBEDDING_DIMENSIONS=768
28
+
29
+ # SQL-era public releases use an internal compatibility adapter automatically.
30
+ # These are derived by the CLI from the OpenAI-compatible values above; users
31
+ # do not need Azure credentials.
32
+ # AZURE_OPENAI_ENDPOINT=http://lmstudio-bridge:12345
33
+ # AZURE_OPENAI_APIKEY=local-compatible-adapter
34
+ # AZURE_OPENAI_DEPLOYMENT=your-chat-model
35
+ # AZURE_OPENAI_EMBEDDING=your-embedding-model
36
+
16
37
  # Optional: AI via Knowz mothership (operator-supplied; never baked)
17
38
  # KNOWZ_PLATFORM_ENABLED=true
18
39
  # KNOWZ_PLATFORM_URL=https://api.knowz.io
@@ -0,0 +1,113 @@
1
+ # Knowz Self-Hosted — compatibility kit for SQL-era public releases.
2
+ # Selected automatically from releases.json; do not use for native Postgres images.
3
+ # The optional local adapter lets legacy Azure-shaped APIs consume the provider
4
+ # already tested as OpenAI-compatible by the guided setup UI.
5
+
6
+ services:
7
+ lmstudio-bridge:
8
+ image: node:20-alpine
9
+ command: ["node", "/app/lmstudio-azure-bridge.mjs"]
10
+ environment:
11
+ OPENAI_COMPAT_ENDPOINT: "${OPENAI_COMPAT_ENDPOINT:-http://host.docker.internal:1234/v1}"
12
+ OPENAI_COMPAT_APIKEY: "${OPENAI_COMPAT_APIKEY:-}"
13
+ PORT: "12345"
14
+ extra_hosts:
15
+ - "host.docker.internal:host-gateway"
16
+ volumes:
17
+ - ./lmstudio-azure-bridge.mjs:/app/lmstudio-azure-bridge.mjs:ro
18
+ healthcheck:
19
+ test: ["CMD", "wget", "-q", "-O", "-", "http://127.0.0.1:12345/healthz"]
20
+ interval: 10s
21
+ timeout: 5s
22
+ retries: 5
23
+
24
+ db:
25
+ image: mcr.microsoft.com/mssql/server:2022-CU26-ubuntu-22.04
26
+ environment:
27
+ ACCEPT_EULA: "Y"
28
+ MSSQL_SA_PASSWORD: "${SA_PASSWORD:?SA_PASSWORD must be set in .env (>=12 chars, SQL Server complexity rules)}"
29
+ MSSQL_PID: "Express"
30
+ ports:
31
+ - "127.0.0.1:${DB_PORT:-1433}:1433"
32
+ volumes:
33
+ - knowz-db-data:/var/opt/mssql
34
+ healthcheck:
35
+ test: /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "$${MSSQL_SA_PASSWORD}" -Q "SELECT 1" -C -b
36
+ interval: 10s
37
+ timeout: 5s
38
+ retries: 10
39
+ start_period: 30s
40
+
41
+ api:
42
+ image: ghcr.io/knowz-io/knowz-selfhosted-api:${KNOWZ_SELFHOSTED_VERSION:?KNOWZ_SELFHOSTED_VERSION must be set}
43
+ ports:
44
+ - "${API_PORT:-5000}:8080"
45
+ depends_on:
46
+ db:
47
+ condition: service_healthy
48
+ lmstudio-bridge:
49
+ condition: service_healthy
50
+ environment:
51
+ ConnectionStrings__McpDb: "Server=db,1433;Database=KnowzSelfHosted;User Id=sa;Password=${SA_PASSWORD:?SA_PASSWORD must be set};TrustServerCertificate=True;Encrypt=True"
52
+ Database__AutoMigrate: "true"
53
+ SelfHosted__JwtSecret: "${JWT_SECRET:?JWT_SECRET must be set in .env (>=32 chars)}"
54
+ SelfHosted__SuperAdminUsername: "${ADMIN_USERNAME:?ADMIN_USERNAME must be set in .env}"
55
+ SelfHosted__SuperAdminPassword: "${ADMIN_PASSWORD:?ADMIN_PASSWORD must be set in .env}"
56
+ SelfHosted__RequireSuperAdminPasswordChange: "${ADMIN_PASSWORD_REQUIRES_CHANGE:-false}"
57
+ SelfHosted__AllowedOrigins__0: "http://localhost:${WEB_PORT:-3000}"
58
+ SelfHosted__RateLimiting__Enabled: "true"
59
+ MCP__ServiceKey: "${MCP_SERVICE_KEY:?MCP_SERVICE_KEY must be set in .env}"
60
+ Storage__Provider: "LocalFileSystem"
61
+ Storage__Local__RootPath: "/data/files"
62
+ AzureOpenAI__Endpoint: "${AZURE_OPENAI_ENDPOINT:-}"
63
+ AzureOpenAI__ApiKey: "${AZURE_OPENAI_APIKEY:-}"
64
+ AzureOpenAI__DeploymentName: "${AZURE_OPENAI_DEPLOYMENT:-gpt-5.4}"
65
+ AzureOpenAI__EmbeddingDeploymentName: "${AZURE_OPENAI_EMBEDDING:-text-embedding-3-large}"
66
+ Embedding__ModelName: "${EMBEDDING_MODEL_NAME:-text-embedding-3-large}"
67
+ Embedding__Dimensions: "${EMBEDDING_DIMENSIONS:-3072}"
68
+ AzureAISearch__Endpoint: "${AZURE_SEARCH_ENDPOINT:-}"
69
+ AzureAISearch__ApiKey: "${AZURE_SEARCH_APIKEY:-}"
70
+ AzureAISearch__IndexName: "${AZURE_SEARCH_INDEX:-knowz-selfhosted}"
71
+ KnowzPlatform__Enabled: "${KNOWZ_PLATFORM_ENABLED:-false}"
72
+ KnowzPlatform__BaseUrl: "${KNOWZ_PLATFORM_URL:-}"
73
+ KnowzPlatform__ApiKey: "${KNOWZ_PLATFORM_APIKEY:-}"
74
+ volumes:
75
+ - knowz-file-storage:/data/files
76
+ healthcheck:
77
+ test: curl -f http://localhost:8080/healthz || exit 1
78
+ interval: 30s
79
+ timeout: 10s
80
+ retries: 5
81
+ start_period: 30s
82
+
83
+ web:
84
+ image: ghcr.io/knowz-io/knowz-selfhosted-web:${KNOWZ_SELFHOSTED_VERSION:?KNOWZ_SELFHOSTED_VERSION must be set}
85
+ ports:
86
+ - "${WEB_PORT:-3000}:8080"
87
+ depends_on:
88
+ api:
89
+ condition: service_started
90
+
91
+ mcp:
92
+ image: ghcr.io/knowz-io/knowz-selfhosted-mcp:${KNOWZ_SELFHOSTED_VERSION:?KNOWZ_SELFHOSTED_VERSION must be set}
93
+ ports:
94
+ - "${MCP_PORT:-3001}:8080"
95
+ depends_on:
96
+ api:
97
+ condition: service_healthy
98
+ environment:
99
+ Knowz__BaseUrl: "${MCP_API_URL:-http://api:8080}"
100
+ MCP__BackendMode: "${MCP_BACKEND_MODE:-selfhosted}"
101
+ MCP__ApiKeyValidationEndpoint: "${MCP_API_KEY_VALIDATION_ENDPOINT:-/api/vaults}"
102
+ MCP__ServiceKey: "${MCP_SERVICE_KEY:?MCP_SERVICE_KEY must be set in .env}"
103
+ Authentication__ValidateApiKey: "${MCP_VALIDATE_API_KEY:-true}"
104
+ healthcheck:
105
+ test: curl -f http://localhost:8080/.well-known/oauth-authorization-server || exit 1
106
+ interval: 30s
107
+ timeout: 10s
108
+ retries: 5
109
+ start_period: 15s
110
+
111
+ volumes:
112
+ knowz-db-data:
113
+ knowz-file-storage:
@@ -2,27 +2,25 @@
2
2
  # Canonical source: this file. The npm CLI copies it via sync-selfhosted-assets.mjs.
3
3
  # Source-build remains selfhosted/docker-compose.yml (build: contexts).
4
4
  #
5
- # FAIL-CLOSED: SA_PASSWORD, JWT_SECRET, ADMIN_USERNAME, ADMIN_PASSWORD, MCP_SERVICE_KEY
5
+ # FAIL-CLOSED: POSTGRES_PASSWORD, JWT_SECRET, ADMIN_USERNAME, ADMIN_PASSWORD, MCP_SERVICE_KEY
6
6
  # have no defaults. The CLI mints them into a 0600 .env on first up.
7
7
  # Pin KNOWZ_SELFHOSTED_VERSION to a concrete semver — never `latest`.
8
8
 
9
9
  services:
10
10
  db:
11
- image: mcr.microsoft.com/mssql/server:2022-CU26-ubuntu-22.04
11
+ image: pgvector/pgvector:pg16
12
12
  environment:
13
- ACCEPT_EULA: "Y"
14
- MSSQL_SA_PASSWORD: "${SA_PASSWORD:?SA_PASSWORD must be set in .env (>=12 chars, SQL Server complexity rules)}"
15
- MSSQL_PID: "Express"
16
- ports:
17
- - "${DB_PORT:-1433}:1433"
13
+ POSTGRES_USER: knowz
14
+ POSTGRES_PASSWORD: "${POSTGRES_PASSWORD:?POSTGRES_PASSWORD must be set in .env}"
15
+ POSTGRES_DB: knowz_selfhosted
18
16
  volumes:
19
- - knowz-db-data:/var/opt/mssql
17
+ - knowz-db-data:/var/lib/postgresql/data
20
18
  healthcheck:
21
- test: /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "$${MSSQL_SA_PASSWORD}" -Q "SELECT 1" -C -b
22
- interval: 10s
19
+ test: ["CMD-SHELL", "pg_isready -U knowz -d knowz_selfhosted"]
20
+ interval: 5s
23
21
  timeout: 5s
24
22
  retries: 10
25
- start_period: 30s
23
+ start_period: 10s
26
24
 
27
25
  api:
28
26
  image: ghcr.io/knowz-io/knowz-selfhosted-api:${KNOWZ_SELFHOSTED_VERSION:?KNOWZ_SELFHOSTED_VERSION must be set}
@@ -32,22 +30,32 @@ services:
32
30
  db:
33
31
  condition: service_healthy
34
32
  environment:
35
- ConnectionStrings__McpDb: "Server=db,1433;Database=KnowzSelfHosted;User Id=sa;Password=${SA_PASSWORD:?SA_PASSWORD must be set};TrustServerCertificate=True;Encrypt=True"
33
+ AllowedHosts: "${ALLOWED_HOSTS:-localhost;127.0.0.1;[::1];api}"
34
+ ConnectionStrings__McpDb: "Host=db;Port=5432;Database=knowz_selfhosted;Username=knowz;Password=${POSTGRES_PASSWORD:?POSTGRES_PASSWORD must be set}"
36
35
  Database__AutoMigrate: "true"
36
+ KNOWZ_AI_CONFIG_UPDATED_AT: "${KNOWZ_AI_CONFIG_UPDATED_AT:-}"
37
+ KNOWZ_AI_DISABLED: "${KNOWZ_AI_DISABLED:-false}"
38
+ DataProtection__KeysPath: "/data/keys"
37
39
  SelfHosted__JwtSecret: "${JWT_SECRET:?JWT_SECRET must be set in .env (>=32 chars)}"
38
40
  SelfHosted__SuperAdminUsername: "${ADMIN_USERNAME:?ADMIN_USERNAME must be set in .env}"
39
41
  SelfHosted__SuperAdminPassword: "${ADMIN_PASSWORD:?ADMIN_PASSWORD must be set in .env}"
42
+ SelfHosted__RequireSuperAdminPasswordChange: "${ADMIN_PASSWORD_REQUIRES_CHANGE:-false}"
40
43
  SelfHosted__AllowedOrigins__0: "http://localhost:${WEB_PORT:-3000}"
41
44
  SelfHosted__RateLimiting__Enabled: "true"
42
45
  MCP__ServiceKey: "${MCP_SERVICE_KEY:?MCP_SERVICE_KEY must be set in .env}"
43
46
  Storage__Provider: "LocalFileSystem"
44
47
  Storage__Local__RootPath: "/data/files"
48
+ OpenAiCompatible__Endpoint: "${OPENAI_COMPAT_ENDPOINT:-}"
49
+ OpenAiCompatible__ApiKey: "${OPENAI_COMPAT_APIKEY:-}"
50
+ OpenAiCompatible__ChatModel: "${OPENAI_COMPAT_CHAT_MODEL:-}"
51
+ OpenAiCompatible__EmbeddingModel: "${OPENAI_COMPAT_EMBEDDING_MODEL:-}"
52
+ OpenAiCompatible__EmbeddingDimensions: "${EMBEDDING_DIMENSIONS:-1536}"
45
53
  AzureOpenAI__Endpoint: "${AZURE_OPENAI_ENDPOINT:-}"
46
54
  AzureOpenAI__ApiKey: "${AZURE_OPENAI_APIKEY:-}"
47
55
  AzureOpenAI__DeploymentName: "${AZURE_OPENAI_DEPLOYMENT:-gpt-5.4}"
48
- AzureOpenAI__EmbeddingDeploymentName: "${AZURE_OPENAI_EMBEDDING:-text-embedding-3-large}"
49
- Embedding__ModelName: "${EMBEDDING_MODEL_NAME:-text-embedding-3-large}"
50
- Embedding__Dimensions: "${EMBEDDING_DIMENSIONS:-3072}"
56
+ AzureOpenAI__EmbeddingDeploymentName: "${AZURE_OPENAI_EMBEDDING:-text-embedding-3-small}"
57
+ Embedding__ModelName: "${EMBEDDING_MODEL_NAME:-text-embedding-3-small}"
58
+ Embedding__Dimensions: "${EMBEDDING_DIMENSIONS:-1536}"
51
59
  AzureAISearch__Endpoint: "${AZURE_SEARCH_ENDPOINT:-}"
52
60
  AzureAISearch__ApiKey: "${AZURE_SEARCH_APIKEY:-}"
53
61
  AzureAISearch__IndexName: "${AZURE_SEARCH_INDEX:-knowz-selfhosted}"
@@ -56,6 +64,10 @@ services:
56
64
  KnowzPlatform__ApiKey: "${KNOWZ_PLATFORM_APIKEY:-}"
57
65
  volumes:
58
66
  - knowz-file-storage:/data/files
67
+ - knowz-protected-keys:/data/keys
68
+ - knowz-protected-keys:/home/app/.aspnet/DataProtection-Keys
69
+ extra_hosts:
70
+ - "host.docker.internal:host-gateway"
59
71
  healthcheck:
60
72
  test: curl -f http://localhost:8080/healthz || exit 1
61
73
  interval: 30s
@@ -79,6 +91,7 @@ services:
79
91
  api:
80
92
  condition: service_healthy
81
93
  environment:
94
+ AllowedHosts: "${ALLOWED_HOSTS:-localhost;127.0.0.1;[::1];mcp}"
82
95
  Knowz__BaseUrl: "${MCP_API_URL:-http://api:8080}"
83
96
  MCP__BackendMode: "${MCP_BACKEND_MODE:-selfhosted}"
84
97
  MCP__ApiKeyValidationEndpoint: "${MCP_API_KEY_VALIDATION_ENDPOINT:-/api/vaults}"
@@ -94,3 +107,4 @@ services:
94
107
  volumes:
95
108
  knowz-db-data:
96
109
  knowz-file-storage:
110
+ knowz-protected-keys:
@@ -0,0 +1,73 @@
1
+ import http from 'node:http';
2
+ import { Readable } from 'node:stream';
3
+
4
+ const listenPort = Number(process.env.PORT || 12345);
5
+ const upstreamBase = (process.env.OPENAI_COMPAT_ENDPOINT || 'http://host.docker.internal:1234/v1')
6
+ .replace(/\/$/, '');
7
+ const upstreamApiKey = process.env.OPENAI_COMPAT_APIKEY || 'local-compatible-adapter';
8
+
9
+ function sendJson(response, statusCode, payload) {
10
+ response.writeHead(statusCode, { 'content-type': 'application/json' });
11
+ response.end(JSON.stringify(payload));
12
+ }
13
+
14
+ const server = http.createServer(async (request, response) => {
15
+ if (request.method === 'GET' && request.url === '/healthz') {
16
+ sendJson(response, 200, { status: 'healthy' });
17
+ return;
18
+ }
19
+
20
+ const route = request.url?.match(
21
+ /^\/openai\/deployments\/([^/]+)\/(chat\/completions|embeddings)(?:\?.*)?$/,
22
+ );
23
+ if (request.method !== 'POST' || !route) {
24
+ sendJson(response, 404, { error: { message: 'Unsupported compatibility route' } });
25
+ return;
26
+ }
27
+
28
+ const chunks = [];
29
+ for await (const chunk of request) chunks.push(chunk);
30
+
31
+ try {
32
+ const deployment = decodeURIComponent(route[1]);
33
+ const body = JSON.parse(Buffer.concat(chunks).toString('utf8'));
34
+ body.model = deployment;
35
+
36
+ const upstream = await fetch(`${upstreamBase}/${route[2]}`, {
37
+ method: 'POST',
38
+ headers: {
39
+ 'content-type': 'application/json',
40
+ accept: request.headers.accept || 'application/json',
41
+ authorization: `Bearer ${upstreamApiKey}`,
42
+ },
43
+ body: JSON.stringify(body),
44
+ });
45
+
46
+ if (route[2] === 'embeddings' && upstream.ok) {
47
+ const payload = await upstream.json();
48
+ for (const item of payload.data || []) {
49
+ if (!Array.isArray(item.embedding)) continue;
50
+ const packed = Buffer.allocUnsafe(item.embedding.length * 4);
51
+ item.embedding.forEach((value, index) => packed.writeFloatLE(value, index * 4));
52
+ item.embedding = packed.toString('base64');
53
+ }
54
+ response.writeHead(upstream.status, { 'content-type': 'application/json' });
55
+ response.end(JSON.stringify(payload));
56
+ return;
57
+ }
58
+
59
+ const headers = {};
60
+ for (const [key, value] of upstream.headers) {
61
+ if (key !== 'content-length' && key !== 'transfer-encoding') headers[key] = value;
62
+ }
63
+ response.writeHead(upstream.status, headers);
64
+ if (upstream.body) Readable.fromWeb(upstream.body).pipe(response);
65
+ else response.end();
66
+ } catch (error) {
67
+ sendJson(response, 502, {
68
+ error: { message: `OpenAI-compatible adapter request failed: ${error.message}` },
69
+ });
70
+ }
71
+ });
72
+
73
+ server.listen(listenPort, '0.0.0.0');
@@ -1,28 +1,151 @@
1
1
  {
2
2
  "releases": [
3
+ {
4
+ "version": "0.16.2",
5
+ "status": "complete",
6
+ "flavors": [
7
+ "selfhosted"
8
+ ],
9
+ "digests": {
10
+ "api": "sha256:f1f9682bb1c6634f02d3fa3a5dd515e11ffb55b8203c14fc340e3aa50d086b88",
11
+ "web": "sha256:b12cee9b670e357bfeaeca21851fcf0047cefdf57c57cf20d2f84aa711dae38b",
12
+ "mcp": "sha256:64df9eb93c31a77a252ae6ffa45e03cfe8b8e10ad1bcad5684f9ba4ffc4a2c3d"
13
+ },
14
+ "platforms": {
15
+ "api": [
16
+ "linux/amd64",
17
+ "linux/arm64"
18
+ ],
19
+ "web": [
20
+ "linux/amd64",
21
+ "linux/arm64"
22
+ ],
23
+ "mcp": [
24
+ "linux/amd64",
25
+ "linux/arm64"
26
+ ]
27
+ },
28
+ "runtime": {
29
+ "database": "postgres",
30
+ "composeAsset": "docker-compose.yml"
31
+ },
32
+ "releasedAt": "2026-09-07T18:55:51Z",
33
+ "minCliVersion": "0.5.0",
34
+ "notes": "Verified public API/web/MCP image set. Preserves unsaved Settings drafts through browser navigation and retains the 0.16.1 API-key, provider, attachment and recovery fixes. Exact released-image acceptance is required before CLI stable promotion."
35
+ },
36
+ {
37
+ "version": "0.16.1",
38
+ "status": "complete",
39
+ "flavors": [
40
+ "selfhosted"
41
+ ],
42
+ "digests": {
43
+ "api": "sha256:0d2578a29b1be1d4f06fd7b9f07b94928ba4d08b2c5f47d9fce4e98d9dfa85cc",
44
+ "web": "sha256:5d5df632dc40ae459ffe8692eaaec89001d276068ca9cf0fffac28b39dc39426",
45
+ "mcp": "sha256:f8c2a72658abf409d1065d8d9c520fc5527395d2c0b5a05d53af133d615f55a0"
46
+ },
47
+ "platforms": {
48
+ "api": [
49
+ "linux/amd64",
50
+ "linux/arm64"
51
+ ],
52
+ "web": [
53
+ "linux/amd64",
54
+ "linux/arm64"
55
+ ],
56
+ "mcp": [
57
+ "linux/amd64",
58
+ "linux/arm64"
59
+ ]
60
+ },
61
+ "runtime": {
62
+ "database": "postgres",
63
+ "composeAsset": "docker-compose.yml"
64
+ },
65
+ "releasedAt": "2026-09-07T16:54:11Z",
66
+ "minCliVersion": "0.5.0",
67
+ "notes": "Verified public API/web/MCP image set. Repairs API-key tenant reads and attachments, provider configuration across restart, and browser recovery. Exact released-image acceptance is required before CLI stable promotion."
68
+ },
69
+ {
70
+ "version": "0.16.0",
71
+ "status": "complete",
72
+ "flavors": [
73
+ "selfhosted"
74
+ ],
75
+ "releasedAt": "2026-09-04T05:28:39Z",
76
+ "minCliVersion": "0.4.0",
77
+ "notes": "Native PostgreSQL 16 + pgvector. Limited edition (honesty). MCP 26/36. Azure deploy not offered. File-sync uses PlatformConnection credentials.",
78
+ "digests": {
79
+ "api": "sha256:96be758eaede90e472d33ea4a3a1231893d5075a4ef4426d6f460a7cfc7c35ab",
80
+ "web": "sha256:ed85e3bd68dcceac2100afbd82426e54e67a88f59498b820b2f847d5054b02e7",
81
+ "mcp": "sha256:0a5a542048506c66ed16455d6e97b0c762be6f10ce0f1c530457743775641efc"
82
+ },
83
+ "runtime": {
84
+ "database": "postgres",
85
+ "composeAsset": "docker-compose.yml"
86
+ },
87
+ "platforms": {
88
+ "api": [
89
+ "linux/amd64",
90
+ "linux/arm64"
91
+ ],
92
+ "web": [
93
+ "linux/amd64",
94
+ "linux/arm64"
95
+ ],
96
+ "mcp": [
97
+ "linux/amd64",
98
+ "linux/arm64"
99
+ ]
100
+ }
101
+ },
3
102
  {
4
103
  "version": "0.15.1",
5
- "flavors": ["selfhosted"],
104
+ "status": "complete",
105
+ "flavors": [
106
+ "selfhosted"
107
+ ],
6
108
  "releasedAt": "2026-09-01T12:49:00Z",
7
109
  "minCliVersion": null,
8
110
  "notes": "User-role mothership connect/browse/pull. Anonymous GHCR triple.",
9
- "digests": null
111
+ "digests": null,
112
+ "runtime": {
113
+ "database": "mssql",
114
+ "composeAsset": "docker-compose.mssql.yml",
115
+ "compatibleProviderAdapter": "lmstudio-azure-bridge.mjs"
116
+ }
10
117
  },
11
118
  {
12
119
  "version": "0.15.0",
13
- "flavors": ["selfhosted"],
120
+ "status": "complete",
121
+ "flavors": [
122
+ "selfhosted"
123
+ ],
14
124
  "releasedAt": "2026-09-01T12:15:00Z",
15
125
  "minCliVersion": null,
16
126
  "notes": "Look/feel restyle, session decrypt, fail-closed compose, vite-only web image. First complete public GHCR triple since the split 0.14.x tags.",
17
- "digests": null
127
+ "digests": null,
128
+ "runtime": {
129
+ "database": "mssql",
130
+ "composeAsset": "docker-compose.mssql.yml",
131
+ "compatibleProviderAdapter": "lmstudio-azure-bridge.mjs"
132
+ }
18
133
  },
19
134
  {
20
135
  "version": "0.14.11",
21
- "flavors": ["selfhosted"],
136
+ "status": "incomplete",
137
+ "flavors": [
138
+ "selfhosted"
139
+ ],
22
140
  "releasedAt": "2026-05-28T00:00:00Z",
23
141
  "minCliVersion": null,
24
142
  "notes": "Incomplete GHCR set: api:0.14.11 exists; web/mcp 0.14.11 404 (web/mcp last published at 0.14.10). Do not pin.",
25
- "digests": null
143
+ "digests": null,
144
+ "runtime": {
145
+ "database": "mssql",
146
+ "composeAsset": "docker-compose.mssql.yml",
147
+ "compatibleProviderAdapter": "lmstudio-azure-bridge.mjs"
148
+ }
26
149
  }
27
150
  ]
28
151
  }
package/bin/run.js CHANGED
@@ -1,4 +1,6 @@
1
1
  #!/usr/bin/env node
2
+ import { applyCliBrandFromProcess } from '../dist/lib/brand.js';
2
3
  import { execute } from '@oclif/core';
3
4
 
5
+ applyCliBrandFromProcess();
4
6
  await execute({ dir: import.meta.url });