@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.
- package/README.md +68 -0
- package/assets/portable/releases.json +42 -0
- package/assets/selfhosted/.env.example +22 -1
- package/assets/selfhosted/docker-compose.mssql.yml +113 -0
- package/assets/selfhosted/docker-compose.yml +29 -15
- package/assets/selfhosted/lmstudio-azure-bridge.mjs +73 -0
- package/assets/selfhosted/releases.json +129 -6
- package/bin/run.js +2 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/base-command.d.ts +2 -0
- package/dist/base-command.d.ts.map +1 -1
- package/dist/base-command.js +11 -1
- package/dist/base-command.js.map +1 -1
- package/dist/commands/ask.d.ts.map +1 -1
- package/dist/commands/ask.js +2 -0
- package/dist/commands/ask.js.map +1 -1
- package/dist/commands/backup.d.ts +1 -0
- package/dist/commands/backup.d.ts.map +1 -1
- package/dist/commands/backup.js +29 -10
- package/dist/commands/backup.js.map +1 -1
- package/dist/commands/chat.d.ts +2 -1
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +10 -4
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/down.d.ts +14 -27
- package/dist/commands/down.d.ts.map +1 -1
- package/dist/commands/down.js +6 -31
- package/dist/commands/down.js.map +1 -1
- package/dist/commands/knowledge/amend.d.ts +2 -2
- package/dist/commands/knowledge/amend.d.ts.map +1 -1
- package/dist/commands/knowledge/amend.js +5 -0
- package/dist/commands/knowledge/amend.js.map +1 -1
- package/dist/commands/login.d.ts +4 -0
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +21 -2
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/menu.js +1 -1
- package/dist/commands/menu.js.map +1 -1
- package/dist/commands/platform/destroy.d.ts +15 -5
- package/dist/commands/platform/destroy.d.ts.map +1 -1
- package/dist/commands/platform/destroy.js +6 -33
- package/dist/commands/platform/destroy.js.map +1 -1
- package/dist/commands/platform/doctor.d.ts +18 -3
- package/dist/commands/platform/doctor.d.ts.map +1 -1
- package/dist/commands/platform/doctor.js +4 -10
- package/dist/commands/platform/doctor.js.map +1 -1
- package/dist/commands/platform/down.d.ts +15 -15
- package/dist/commands/platform/down.d.ts.map +1 -1
- package/dist/commands/platform/down.js +4 -8
- package/dist/commands/platform/down.js.map +1 -1
- package/dist/commands/platform/logs.d.ts +15 -14
- package/dist/commands/platform/logs.d.ts.map +1 -1
- package/dist/commands/platform/logs.js +5 -16
- package/dist/commands/platform/logs.js.map +1 -1
- package/dist/commands/platform/reset.d.ts +16 -13
- package/dist/commands/platform/reset.d.ts.map +1 -1
- package/dist/commands/platform/reset.js +7 -36
- package/dist/commands/platform/reset.js.map +1 -1
- package/dist/commands/platform/setup.d.ts +1 -0
- package/dist/commands/platform/setup.d.ts.map +1 -1
- package/dist/commands/platform/setup.js +1 -1
- package/dist/commands/platform/setup.js.map +1 -1
- package/dist/commands/platform/status.d.ts +14 -16
- package/dist/commands/platform/status.d.ts.map +1 -1
- package/dist/commands/platform/status.js +4 -29
- package/dist/commands/platform/status.js.map +1 -1
- package/dist/commands/restore.d.ts +10 -1
- package/dist/commands/restore.d.ts.map +1 -1
- package/dist/commands/restore.js +56 -13
- package/dist/commands/restore.js.map +1 -1
- package/dist/commands/runtime/destroy.d.ts +29 -0
- package/dist/commands/runtime/destroy.d.ts.map +1 -0
- package/dist/commands/runtime/destroy.js +13 -0
- package/dist/commands/runtime/destroy.js.map +1 -0
- package/dist/commands/runtime/doctor.d.ts +27 -0
- package/dist/commands/runtime/doctor.d.ts.map +1 -0
- package/dist/commands/runtime/doctor.js +11 -0
- package/dist/commands/runtime/doctor.js.map +1 -0
- package/dist/commands/runtime/logs.d.ts +28 -0
- package/dist/commands/runtime/logs.d.ts.map +1 -0
- package/dist/commands/runtime/logs.js +12 -0
- package/dist/commands/runtime/logs.js.map +1 -0
- package/dist/commands/runtime/status.d.ts +27 -0
- package/dist/commands/runtime/status.d.ts.map +1 -0
- package/dist/commands/runtime/status.js +11 -0
- package/dist/commands/runtime/status.js.map +1 -0
- package/dist/commands/runtime/upgrade.d.ts +28 -0
- package/dist/commands/runtime/upgrade.d.ts.map +1 -0
- package/dist/commands/runtime/upgrade.js +12 -0
- package/dist/commands/runtime/upgrade.js.map +1 -0
- package/dist/commands/setup.d.ts +1 -0
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +1 -1
- package/dist/commands/transfer.js +1 -1
- package/dist/commands/transfer.js.map +1 -1
- package/dist/commands/up.d.ts +3 -11
- package/dist/commands/up.d.ts.map +1 -1
- package/dist/commands/up.js +48 -36
- package/dist/commands/up.js.map +1 -1
- package/dist/commands/whoami.js +1 -1
- package/dist/commands/whoami.js.map +1 -1
- package/dist/hooks/init/launch-menu.d.ts.map +1 -1
- package/dist/hooks/init/launch-menu.js +2 -0
- package/dist/hooks/init/launch-menu.js.map +1 -1
- package/dist/lib/anonymous-registry.d.ts +3 -0
- package/dist/lib/anonymous-registry.d.ts.map +1 -0
- package/dist/lib/anonymous-registry.js +25 -0
- package/dist/lib/anonymous-registry.js.map +1 -0
- package/dist/lib/async-process.d.ts +15 -0
- package/dist/lib/async-process.d.ts.map +1 -0
- package/dist/lib/async-process.js +145 -0
- package/dist/lib/async-process.js.map +1 -0
- package/dist/lib/backup-process.d.ts +4 -0
- package/dist/lib/backup-process.d.ts.map +1 -0
- package/dist/lib/backup-process.js +20 -0
- package/dist/lib/backup-process.js.map +1 -0
- package/dist/lib/brand.d.ts +25 -0
- package/dist/lib/brand.d.ts.map +1 -0
- package/dist/lib/brand.js +105 -0
- package/dist/lib/brand.js.map +1 -0
- package/dist/lib/chat.d.ts +1 -0
- package/dist/lib/chat.d.ts.map +1 -1
- package/dist/lib/chat.js +12 -3
- package/dist/lib/chat.js.map +1 -1
- package/dist/lib/compose-status.d.ts +14 -0
- package/dist/lib/compose-status.d.ts.map +1 -0
- package/dist/lib/compose-status.js +31 -0
- package/dist/lib/compose-status.js.map +1 -0
- package/dist/lib/container-engine.js +2 -2
- package/dist/lib/container-engine.js.map +1 -1
- package/dist/lib/local-engine-context.d.ts +16 -0
- package/dist/lib/local-engine-context.d.ts.map +1 -0
- package/dist/lib/local-engine-context.js +123 -0
- package/dist/lib/local-engine-context.js.map +1 -0
- package/dist/lib/login-guided.d.ts.map +1 -1
- package/dist/lib/login-guided.js +2 -1
- package/dist/lib/login-guided.js.map +1 -1
- package/dist/lib/login.d.ts +3 -0
- package/dist/lib/login.d.ts.map +1 -1
- package/dist/lib/login.js +25 -5
- package/dist/lib/login.js.map +1 -1
- package/dist/lib/oci-registry-probe.d.ts +43 -0
- package/dist/lib/oci-registry-probe.d.ts.map +1 -0
- package/dist/lib/oci-registry-probe.js +110 -0
- package/dist/lib/oci-registry-probe.js.map +1 -0
- package/dist/lib/peer-command.d.ts.map +1 -1
- package/dist/lib/peer-command.js +3 -1
- package/dist/lib/peer-command.js.map +1 -1
- package/dist/lib/platform-acquisition.d.ts +27 -0
- package/dist/lib/platform-acquisition.d.ts.map +1 -0
- package/dist/lib/platform-acquisition.js +21 -0
- package/dist/lib/platform-acquisition.js.map +1 -0
- package/dist/lib/platform-backup.d.ts +1 -0
- package/dist/lib/platform-backup.d.ts.map +1 -1
- package/dist/lib/platform-backup.js +375 -157
- package/dist/lib/platform-backup.js.map +1 -1
- package/dist/lib/platform-command-shared.d.ts +2 -0
- package/dist/lib/platform-command-shared.d.ts.map +1 -1
- package/dist/lib/platform-command-shared.js +13 -5
- package/dist/lib/platform-command-shared.js.map +1 -1
- package/dist/lib/platform-edition.d.ts +3 -6
- package/dist/lib/platform-edition.d.ts.map +1 -1
- package/dist/lib/platform-edition.js +9 -17
- package/dist/lib/platform-edition.js.map +1 -1
- package/dist/lib/platform-frontdoor-runtime.d.ts.map +1 -1
- package/dist/lib/platform-frontdoor-runtime.js +44 -19
- package/dist/lib/platform-frontdoor-runtime.js.map +1 -1
- package/dist/lib/platform-frontdoor.d.ts +32 -5
- package/dist/lib/platform-frontdoor.d.ts.map +1 -1
- package/dist/lib/platform-frontdoor.js +251 -171
- package/dist/lib/platform-frontdoor.js.map +1 -1
- package/dist/lib/platform-image-admission.d.ts +16 -0
- package/dist/lib/platform-image-admission.d.ts.map +1 -0
- package/dist/lib/platform-image-admission.js +73 -0
- package/dist/lib/platform-image-admission.js.map +1 -0
- package/dist/lib/platform-image-source.d.ts.map +1 -1
- package/dist/lib/platform-image-source.js +2 -0
- package/dist/lib/platform-image-source.js.map +1 -1
- package/dist/lib/platform-lifecycle.d.ts +4 -0
- package/dist/lib/platform-lifecycle.d.ts.map +1 -1
- package/dist/lib/platform-lifecycle.js +42 -8
- package/dist/lib/platform-lifecycle.js.map +1 -1
- package/dist/lib/platform-onboarding.d.ts +10 -0
- package/dist/lib/platform-onboarding.d.ts.map +1 -1
- package/dist/lib/platform-onboarding.js +21 -0
- package/dist/lib/platform-onboarding.js.map +1 -1
- package/dist/lib/platform-preflight.d.ts +6 -3
- package/dist/lib/platform-preflight.d.ts.map +1 -1
- package/dist/lib/platform-preflight.js +52 -19
- package/dist/lib/platform-preflight.js.map +1 -1
- package/dist/lib/platform-release-manifest.d.ts +6 -1
- package/dist/lib/platform-release-manifest.d.ts.map +1 -1
- package/dist/lib/platform-release-manifest.js +10 -0
- package/dist/lib/platform-release-manifest.js.map +1 -1
- package/dist/lib/platform-runtime.d.ts +5 -2
- package/dist/lib/platform-runtime.d.ts.map +1 -1
- package/dist/lib/platform-runtime.js +7 -40
- package/dist/lib/platform-runtime.js.map +1 -1
- package/dist/lib/portable-release-digests.d.ts +5 -0
- package/dist/lib/portable-release-digests.d.ts.map +1 -0
- package/dist/lib/portable-release-digests.js +53 -0
- package/dist/lib/portable-release-digests.js.map +1 -0
- package/dist/lib/release-pin-matrix.d.ts +29 -0
- package/dist/lib/release-pin-matrix.d.ts.map +1 -0
- package/dist/lib/release-pin-matrix.js +67 -0
- package/dist/lib/release-pin-matrix.js.map +1 -0
- package/dist/lib/runtime-backup-archive.d.ts +20 -0
- package/dist/lib/runtime-backup-archive.d.ts.map +1 -0
- package/dist/lib/runtime-backup-archive.js +269 -0
- package/dist/lib/runtime-backup-archive.js.map +1 -0
- package/dist/lib/runtime-command.d.ts +37 -0
- package/dist/lib/runtime-command.d.ts.map +1 -0
- package/dist/lib/runtime-command.js +50 -0
- package/dist/lib/runtime-command.js.map +1 -0
- package/dist/lib/runtime-discovery.d.ts +18 -0
- package/dist/lib/runtime-discovery.d.ts.map +1 -0
- package/dist/lib/runtime-discovery.js +56 -0
- package/dist/lib/runtime-discovery.js.map +1 -0
- package/dist/lib/runtime-lock.d.ts +3 -0
- package/dist/lib/runtime-lock.d.ts.map +1 -0
- package/dist/lib/runtime-lock.js +50 -0
- package/dist/lib/runtime-lock.js.map +1 -0
- package/dist/lib/runtime-operations.d.ts +98 -0
- package/dist/lib/runtime-operations.d.ts.map +1 -0
- package/dist/lib/runtime-operations.js +182 -0
- package/dist/lib/runtime-operations.js.map +1 -0
- package/dist/lib/runtime-provider.d.ts +17 -0
- package/dist/lib/runtime-provider.d.ts.map +1 -0
- package/dist/lib/runtime-provider.js +52 -0
- package/dist/lib/runtime-provider.js.map +1 -0
- package/dist/lib/runtime-status.d.ts +24 -0
- package/dist/lib/runtime-status.d.ts.map +1 -0
- package/dist/lib/runtime-status.js +128 -0
- package/dist/lib/runtime-status.js.map +1 -0
- package/dist/lib/selfhosted-backup.d.ts +37 -0
- package/dist/lib/selfhosted-backup.d.ts.map +1 -0
- package/dist/lib/selfhosted-backup.js +446 -0
- package/dist/lib/selfhosted-backup.js.map +1 -0
- package/dist/lib/selfhosted-keyring.d.ts +19 -0
- package/dist/lib/selfhosted-keyring.d.ts.map +1 -0
- package/dist/lib/selfhosted-keyring.js +193 -0
- package/dist/lib/selfhosted-keyring.js.map +1 -0
- package/dist/lib/selfhosted-lifecycle.d.ts +66 -10
- package/dist/lib/selfhosted-lifecycle.d.ts.map +1 -1
- package/dist/lib/selfhosted-lifecycle.js +344 -39
- package/dist/lib/selfhosted-lifecycle.js.map +1 -1
- package/dist/lib/selfhosted-login.d.ts +34 -0
- package/dist/lib/selfhosted-login.d.ts.map +1 -0
- package/dist/lib/selfhosted-login.js +116 -0
- package/dist/lib/selfhosted-login.js.map +1 -0
- package/dist/lib/selfhosted-readiness.d.ts +3 -0
- package/dist/lib/selfhosted-readiness.d.ts.map +1 -0
- package/dist/lib/selfhosted-readiness.js +24 -0
- package/dist/lib/selfhosted-readiness.js.map +1 -0
- package/dist/lib/setup-capabilities.d.ts +15 -0
- package/dist/lib/setup-capabilities.d.ts.map +1 -0
- package/dist/lib/setup-capabilities.js +21 -0
- package/dist/lib/setup-capabilities.js.map +1 -0
- package/dist/lib/setup-console.d.ts +11 -0
- package/dist/lib/setup-console.d.ts.map +1 -1
- package/dist/lib/setup-console.js +136 -74
- package/dist/lib/setup-console.js.map +1 -1
- package/dist/lib/setup-page.d.ts +12 -0
- package/dist/lib/setup-page.d.ts.map +1 -1
- package/dist/lib/setup-page.js +56 -27
- package/dist/lib/setup-page.js.map +1 -1
- package/dist/lib/setup-plan.d.ts +1 -0
- package/dist/lib/setup-plan.d.ts.map +1 -1
- package/dist/lib/setup-plan.js +5 -1
- package/dist/lib/setup-plan.js.map +1 -1
- package/dist/lib/setup-server.d.ts +11 -2
- package/dist/lib/setup-server.d.ts.map +1 -1
- package/dist/lib/setup-server.js +150 -26
- package/dist/lib/setup-server.js.map +1 -1
- package/dist/lib/ui.d.ts +3 -1
- package/dist/lib/ui.d.ts.map +1 -1
- package/dist/lib/ui.js +39 -7
- package/dist/lib/ui.js.map +1 -1
- package/dist/lib/up-result.d.ts +3 -0
- package/dist/lib/up-result.d.ts.map +1 -1
- package/dist/lib/up-result.js.map +1 -1
- package/dist/menu/run.js +1 -1
- package/dist/menu/run.js.map +1 -1
- package/dist/menu/should-launch.d.ts +0 -14
- package/dist/menu/should-launch.d.ts.map +1 -1
- package/dist/menu/should-launch.js +5 -1
- package/dist/menu/should-launch.js.map +1 -1
- package/oclif.manifest.json +5052 -2825
- 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
|
-
|
|
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:
|
|
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:
|
|
11
|
+
image: pgvector/pgvector:pg16
|
|
12
12
|
environment:
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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/
|
|
17
|
+
- knowz-db-data:/var/lib/postgresql/data
|
|
20
18
|
healthcheck:
|
|
21
|
-
test:
|
|
22
|
-
interval:
|
|
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:
|
|
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
|
-
|
|
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-
|
|
49
|
-
Embedding__ModelName: "${EMBEDDING_MODEL_NAME:-text-embedding-3-
|
|
50
|
-
Embedding__Dimensions: "${EMBEDDING_DIMENSIONS:-
|
|
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
|
-
"
|
|
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
|
-
"
|
|
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
|
-
"
|
|
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
|
}
|