{"_id":"@aikdna/kdna-remote-server","_rev":"10-df450b0e0ff66f5909e9bb2a14a303fa","name":"@aikdna/kdna-remote-server","dist-tags":{"latest":"0.4.2"},"versions":{"0.1.0":{"name":"@aikdna/kdna-remote-server","version":"0.1.0","keywords":["kdna","kdna-remote-server","remote-mode","projection","self-hosted","judgement-asset","task-projection"],"license":"Apache-2.0","_id":"@aikdna/kdna-remote-server@0.1.0","maintainers":[{"name":"code2mp4","email":"hi@code2mp4.com"}],"homepage":"https://github.com/aikdna/kdna-remote-server","bugs":{"url":"https://github.com/aikdna/kdna-remote-server/issues"},"bin":{"kdna-remote-server":"bin/kdna-remote-server.js"},"dist":{"shasum":"6d67cdb49fcb6c3c4ac42f4b2ba96a1696dd05f6","tarball":"https://registry.npmjs.org/@aikdna/kdna-remote-server/-/kdna-remote-server-0.1.0.tgz","fileCount":10,"integrity":"sha512-lMZkjYzpMLncsYamFdjuqtD+cTOUN1B0uOXAZBXCA3rbWvDyT7RHCClI7sivR3uymg5Tnkokv999ZNKyL+VfIw==","signatures":[{"sig":"MEUCID9WNHHZoIQf30nzeLRNqnCAqmYg7i3iDsl/96jDikVVAiEAwVJD/Gnra61SjZev0wBnPkUlJ8vpkE392KEbJQWhlys=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37966},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"4247366cf04706120ff5ff9d1e7775a650be5920","scripts":{"test":"node --test tests/","start":"node bin/kdna-remote-server.js"},"_npmUser":{"name":"code2mp4","email":"hi@code2mp4.com"},"repository":{"url":"git+https://github.com/aikdna/kdna-remote-server.git","type":"git"},"_npmVersion":"10.9.8","description":"KDNA remote-mode projection server — self-hostable HTTP server that returns task-scoped judgment projections without ever sending the full .kdna payload. Implements specs/kdna-runtime-projection.md and the self-hosting invariant from docs/REMOTE_MODE.md (","directories":{},"_nodeVersion":"22.22.3","dependencies":{"@aikdna/kdna-core":"^0.15.9"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/kdna-remote-server_0.1.0_1782669456516_0.48976361464051865","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@aikdna/kdna-remote-server","version":"0.2.0","keywords":["kdna","kdna-remote-server","remote-mode","projection","self-hosted","judgement-asset","task-projection"],"license":"Apache-2.0","_id":"@aikdna/kdna-remote-server@0.2.0","maintainers":[{"name":"code2mp4","email":"hi@code2mp4.com"}],"homepage":"https://github.com/aikdna/kdna-remote-server","bugs":{"url":"https://github.com/aikdna/kdna-remote-server/issues"},"bin":{"kdna-remote-server":"bin/kdna-remote-server.js"},"dist":{"shasum":"0689c3d944943fd32b2827f2ef4495813e438e31","tarball":"https://registry.npmjs.org/@aikdna/kdna-remote-server/-/kdna-remote-server-0.2.0.tgz","fileCount":11,"integrity":"sha512-lGYmdKem6yQfWLU3Yqfq5gByoWNy4fFNt+fZ3Gs3UHKAGXC4Wt3GLPXUxOeqbTV+qG1msMGFsNGH6i++RrQ+/A==","signatures":[{"sig":"MEYCIQC67rEGx7techZu2SI0NNrpGCQycUpcKGh6NTE2wSqIBQIhANax34NIPSlYXcfsLM/9nA3jSIlY+DT9pMC/zwDh/9fX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikdna%2fkdna-remote-server@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":40801},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"63405a860b86faf1d8afbdd259783d2b10db376e","scripts":{"test":"node --test tests/*.test.js","start":"node bin/kdna-remote-server.js"},"_npmUser":{"name":"code2mp4","email":"hi@code2mp4.com"},"repository":{"url":"git+https://github.com/aikdna/kdna-remote-server.git","type":"git"},"_npmVersion":"10.9.8","description":"KDNA remote-mode projection server — self-hostable HTTP server that returns task-scoped judgment projections without ever sending the full .kdna payload. Implements specs/kdna-runtime-projection.md and the self-hosting invariant from docs/REMOTE_MODE.md (","directories":{},"_nodeVersion":"22.23.1","dependencies":{"@aikdna/kdna-core":"0.15.12"},"_hasShrinkwrap":false,"devDependencies":{"cbor-x":"1.6.4"},"_npmOperationalInternal":{"tmp":"tmp/kdna-remote-server_0.2.0_1783907908046_0.04316349270214803","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@aikdna/kdna-remote-server","version":"0.3.0","keywords":["kdna","kdna-remote-server","remote-mode","projection","self-hosted","judgement-asset","task-projection"],"license":"Apache-2.0","_id":"@aikdna/kdna-remote-server@0.3.0","maintainers":[{"name":"code2mp4","email":"hi@code2mp4.com"}],"homepage":"https://github.com/aikdna/kdna-remote-server","bugs":{"url":"https://github.com/aikdna/kdna-remote-server/issues"},"bin":{"kdna-remote-server":"bin/kdna-remote-server.js"},"dist":{"shasum":"cf5f1f31b13a2b1c71ae949fff84798815671fa8","tarball":"https://registry.npmjs.org/@aikdna/kdna-remote-server/-/kdna-remote-server-0.3.0.tgz","fileCount":11,"integrity":"sha512-n8ECU7glCDgYPaGSpAZXdq5iBG5dEIVzYOgXg1UWgIpov+3cW9a1rv7OUd4ZX0GZ9FXbLGQjXYTOj8m7e2a4Bw==","signatures":[{"sig":"MEQCIHjf+L1PTvaRSnqs5ni7xDZEp7jrLEK3Khqpo/JH7er+AiAsTk6m1admDwYETgPHYXQt/aVlV6TAObkNOadov+K44A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikdna%2fkdna-remote-server@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":41490},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"053eebd52b50709846cb2d17414ef3ace665abbc","scripts":{"test":"node --test tests/*.test.js","start":"node bin/kdna-remote-server.js"},"_npmUser":{"name":"code2mp4","email":"hi@code2mp4.com"},"repository":{"url":"git+https://github.com/aikdna/kdna-remote-server.git","type":"git"},"_npmVersion":"10.9.8","description":"KDNA remote-mode projection server — self-hostable HTTP server that returns task-scoped judgment projections without ever sending the full .kdna payload. Implements specs/kdna-runtime-projection.md and the self-hosting invariant from docs/REMOTE_MODE.md (","directories":{},"_nodeVersion":"22.23.1","dependencies":{"@aikdna/kdna-core":"0.16.0"},"_hasShrinkwrap":false,"devDependencies":{"cbor-x":"1.6.4"},"_npmOperationalInternal":{"tmp":"tmp/kdna-remote-server_0.3.0_1783931822428_0.21726858514002023","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@aikdna/kdna-remote-server","version":"0.3.1","keywords":["kdna","kdna-remote-server","remote-mode","projection","self-hosted","judgement-asset","task-projection"],"license":"Apache-2.0","_id":"@aikdna/kdna-remote-server@0.3.1","maintainers":[{"name":"code2mp4","email":"hi@code2mp4.com"}],"homepage":"https://github.com/aikdna/kdna-remote-server","bugs":{"url":"https://github.com/aikdna/kdna-remote-server/issues"},"bin":{"kdna-remote-server":"bin/kdna-remote-server.js"},"dist":{"shasum":"4c58a3f5ae2d1b6424d83ffe0fa2bb3bd2806873","tarball":"https://registry.npmjs.org/@aikdna/kdna-remote-server/-/kdna-remote-server-0.3.1.tgz","fileCount":11,"integrity":"sha512-aBlAuS8HEsVCKtqBb/rt/tvHF+LGvd6H4doxu9OZ6J92I1AF9l6yV60W/JdBeHrzUt8igKW34Ad4UrrkCkNCaA==","signatures":[{"sig":"MEQCIANUgcodHaWfzYG6vmRd5EjQUEVb0uFdeHuHShOd6ahpAiAPVfsw6vAj9enYVhVgfnM+BGaq4gWXBT4LmYzAV3r22A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikdna%2fkdna-remote-server@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":41649},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"6dc5573e37bec2ee161644f8a6f0027618b40764","scripts":{"test":"node --test tests/*.test.js","start":"node bin/kdna-remote-server.js"},"_npmUser":{"name":"code2mp4","email":"hi@code2mp4.com"},"repository":{"url":"git+https://github.com/aikdna/kdna-remote-server.git","type":"git"},"_npmVersion":"10.9.8","description":"KDNA remote-mode projection server — self-hostable HTTP server that returns task-scoped judgment projections without ever sending the full .kdna payload. Implements specs/kdna-runtime-projection.md and the self-hosting invariant from docs/REMOTE_MODE.md (","directories":{},"_nodeVersion":"22.23.1","dependencies":{"@aikdna/kdna-core":"0.16.0"},"_hasShrinkwrap":false,"devDependencies":{"cbor-x":"1.6.4"},"_npmOperationalInternal":{"tmp":"tmp/kdna-remote-server_0.3.1_1783932796221_0.5180067677727935","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@aikdna/kdna-remote-server","version":"0.3.2","keywords":["kdna","kdna-remote-server","remote-mode","projection","self-hosted","judgement-asset","task-projection"],"license":"Apache-2.0","_id":"@aikdna/kdna-remote-server@0.3.2","maintainers":[{"name":"code2mp4","email":"hi@code2mp4.com"}],"homepage":"https://github.com/aikdna/kdna-remote-server","bugs":{"url":"https://github.com/aikdna/kdna-remote-server/issues"},"bin":{"kdna-remote-server":"bin/kdna-remote-server.js"},"dist":{"shasum":"4655af0c6adfebd732a443ed4f9b98cc9fa6999a","tarball":"https://registry.npmjs.org/@aikdna/kdna-remote-server/-/kdna-remote-server-0.3.2.tgz","fileCount":11,"integrity":"sha512-/Y4tOjvr7Nw80/vUSIo1gKDPcWyCpm6HGoHfzCO+jJc34pTalRRgL5oir1T4nwDQmtWx4fHXu7GuMytULSX4Dw==","signatures":[{"sig":"MEUCIQDIbyz0obuL8jX9FjVu9dMRH8nJH/yhT7KGqGP/Xu8rwgIgNIW6i4raGRtke6eGuOwMvTGa5EHYCwdajhrxeb+2bpY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikdna%2fkdna-remote-server@0.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":41963},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"2e97c860e4eab1797ec19e304fd771b51454009d","scripts":{"test":"node --test tests/*.test.js","start":"node bin/kdna-remote-server.js"},"_npmUser":{"name":"code2mp4","email":"hi@code2mp4.com"},"repository":{"url":"git+https://github.com/aikdna/kdna-remote-server.git","type":"git"},"_npmVersion":"10.9.8","description":"KDNA remote-mode projection server — self-hostable HTTP server that returns task-scoped judgment projections without ever sending the full .kdna payload. Implements specs/kdna-runtime-projection.md and the self-hosting invariant from docs/REMOTE_MODE.md (","directories":{},"_nodeVersion":"22.23.1","dependencies":{"@aikdna/kdna-core":"0.17.0"},"_hasShrinkwrap":false,"devDependencies":{"cbor-x":"1.6.4"},"_npmOperationalInternal":{"tmp":"tmp/kdna-remote-server_0.3.2_1784039505708_0.3140911007026945","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@aikdna/kdna-remote-server","version":"0.4.0","keywords":["kdna","kdna-remote-server","remote-mode","projection","self-hosted","judgement-asset","task-projection"],"license":"Apache-2.0","_id":"@aikdna/kdna-remote-server@0.4.0","maintainers":[{"name":"code2mp4","email":"hi@code2mp4.com"}],"homepage":"https://github.com/aikdna/kdna-remote-server","bugs":{"url":"https://github.com/aikdna/kdna-remote-server/issues"},"bin":{"kdna-remote-server":"bin/kdna-remote-server.js"},"dist":{"shasum":"fdcbc546163a0b0c9615eb11b23b6bbc04658e06","tarball":"https://registry.npmjs.org/@aikdna/kdna-remote-server/-/kdna-remote-server-0.4.0.tgz","fileCount":11,"integrity":"sha512-dSxNR+/bUjXxjwTyAonbOmFr4Ig+yABlz5vbXa7oScQeaXtEVMFMeYoJMh335/4T8CxU6Yh6smrxqwtbKjQflg==","signatures":[{"sig":"MEUCIFBTRmaqJX/+HErpg8/SzDQUXuzh4avBlGY5x7gZyJWzAiEAnXUCJbo4M1v/KfGqnaAZAxmUHqThmaPA7Swc+EWw7lE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikdna%2fkdna-remote-server@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":58241},"main":"src/index.js","type":"commonjs","_from":"file:/home/runner/work/_temp/kdna-remote-server-release.tgz","engines":{"node":">=22.9.0"},"scripts":{"test":"node scripts/run-tests.js","start":"node bin/kdna-remote-server.js","release:check":"node scripts/run-release-check.js","prepublishOnly":"node scripts/run-release-check.js","release:evidence":"node scripts/generate-release-evidence.js","release:readiness":"node scripts/release-readiness.js","check:protocol-names":"node scripts/check-protocol-names.js","check:public-surface":"node scripts/check-public-surface.js","release:registry-guard":"node scripts/registry-duplicate-guard.js","check:runtime-candidate":"node scripts/check-runtime-candidate.js","test:core-candidate-tar":"node scripts/verify-core-candidate-tar.js","release:publish-verified":"node scripts/publish-verified-artifact.js"},"_npmUser":{"name":"code2mp4","email":"hi@code2mp4.com"},"_resolved":"/home/runner/work/_temp/kdna-remote-server-release.tgz","_integrity":"sha512-dSxNR+/bUjXxjwTyAonbOmFr4Ig+yABlz5vbXa7oScQeaXtEVMFMeYoJMh335/4T8CxU6Yh6smrxqwtbKjQflg==","repository":{"url":"git+https://github.com/aikdna/kdna-remote-server.git","type":"git"},"_npmVersion":"11.17.0","description":"KDNA remote-mode projection server — self-hostable HTTP server that returns task-scoped judgment projections without ever sending the full .kdna payload. Implements specs/kdna-runtime-projection.md and the self-hosting invariant from docs/REMOTE_MODE.md (","directories":{},"_nodeVersion":"22.23.1","dependencies":{"@aikdna/kdna-core":"0.20.0"},"_hasShrinkwrap":false,"devDependencies":{"cbor-x":"1.6.4"},"_npmOperationalInternal":{"tmp":"tmp/kdna-remote-server_0.4.0_1784286873372_0.6860307988143728","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@aikdna/kdna-remote-server","version":"0.4.1","keywords":["kdna","kdna-remote-server","remote-mode","projection","self-hosted","judgement-asset","task-projection"],"license":"Apache-2.0","_id":"@aikdna/kdna-remote-server@0.4.1","maintainers":[{"name":"code2mp4","email":"hi@code2mp4.com"}],"homepage":"https://github.com/aikdna/kdna-remote-server","bugs":{"url":"https://github.com/aikdna/kdna-remote-server/issues"},"bin":{"kdna-remote-server":"bin/kdna-remote-server.js"},"dist":{"shasum":"6d16589d7aa912f2a4fc89e13e66f645dd926bb5","tarball":"https://registry.npmjs.org/@aikdna/kdna-remote-server/-/kdna-remote-server-0.4.1.tgz","fileCount":11,"integrity":"sha512-45fu5MfUpm72sR5hvW+aYI4m33+Iul+vsFWibZPplZxTYb/GyqyIz11WIm8UPyAjy2uYV5YoUEq4/zfJI7471A==","signatures":[{"sig":"MEUCIBEyIm9iNon+YBEcLkTVDFqTqQjqmE42U0JyjM5XUW0XAiEArrDuhNofC7505Z42F3In8yjlB3R9kmTQqi3qGEpUw6w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikdna%2fkdna-remote-server@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":59243},"main":"src/index.js","type":"commonjs","_from":"file:/home/runner/work/_temp/kdna-remote-server-release.tgz","engines":{"node":">=22.9.0"},"scripts":{"test":"node scripts/run-tests.js","start":"node bin/kdna-remote-server.js","release:check":"node scripts/run-release-check.js","prepublishOnly":"node scripts/run-release-check.js","release:evidence":"node scripts/generate-release-evidence.js","release:readiness":"node scripts/release-readiness.js","check:protocol-names":"node scripts/check-protocol-names.js","check:public-surface":"node scripts/check-public-surface.js","release:registry-guard":"node scripts/registry-duplicate-guard.js","check:runtime-candidate":"node scripts/check-runtime-candidate.js","test:core-candidate-tar":"node scripts/verify-core-candidate-tar.js","release:publish-verified":"node scripts/publish-verified-artifact.js"},"_npmUser":{"name":"code2mp4","email":"hi@code2mp4.com"},"_resolved":"/home/runner/work/_temp/kdna-remote-server-release.tgz","_integrity":"sha512-45fu5MfUpm72sR5hvW+aYI4m33+Iul+vsFWibZPplZxTYb/GyqyIz11WIm8UPyAjy2uYV5YoUEq4/zfJI7471A==","repository":{"url":"git+https://github.com/aikdna/kdna-remote-server.git","type":"git"},"_npmVersion":"11.17.0","description":"KDNA remote-mode projection server — self-hostable HTTP server that returns task-scoped judgment projections without ever sending the full .kdna payload. Implements specs/kdna-runtime-projection.md and the self-hosting invariant from docs/REMOTE_MODE.md (","directories":{},"_nodeVersion":"22.23.1","dependencies":{"@aikdna/kdna-core":"0.20.0"},"_hasShrinkwrap":false,"devDependencies":{"cbor-x":"1.6.4","@aikdna/kdna-activation-server":"0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/kdna-remote-server_0.4.1_1784360629362_0.8348617083371646","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@aikdna/kdna-remote-server","version":"0.4.2","description":"Self-hostable KDNA projection service that returns task-scoped judgment projections without sending the full .kdna payload.","type":"commonjs","main":"src/index.js","bin":{"kdna-remote-server":"bin/kdna-remote-server.js"},"scripts":{"start":"node bin/kdna-remote-server.js","check:public-surface":"node scripts/check-public-surface.js","check:protocol-names":"node scripts/check-protocol-names.js","check:runtime-candidate":"node scripts/check-runtime-candidate.js","lint":"node scripts/check-syntax.js","test":"node scripts/run-tests.js","test:core-candidate-tar":"node scripts/verify-core-candidate-tar.js","release:readiness":"node scripts/release-readiness.js","release:evidence":"node scripts/generate-release-evidence.js","release:registry-guard":"node scripts/registry-duplicate-guard.js","release:publish-verified":"node scripts/publish-verified-artifact.js","release:check":"node scripts/run-release-check.js","prepublishOnly":"node scripts/run-release-check.js"},"engines":{"node":">=22.9.0"},"dependencies":{"@aikdna/kdna-core":"0.21.0"},"devDependencies":{"cbor-x":"1.6.4"},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/aikdna/kdna-remote-server.git"},"bugs":{"url":"https://github.com/aikdna/kdna-remote-server/issues"},"homepage":"https://github.com/aikdna/kdna-remote-server","keywords":["kdna","kdna-remote-server","remote-mode","projection","self-hosted","judgement-asset","task-projection"],"_id":"@aikdna/kdna-remote-server@0.4.2","_integrity":"sha512-rYWVGeAc1MOLmywC3mY2utfB1H+2sJiAGL2cy6BvfsLJnHCZVfy5vVntulwG9Bc3NV37oIpfczqf768OUztLjA==","_resolved":"/home/runner/work/_temp/kdna-remote-server-release.tgz","_from":"file:/home/runner/work/_temp/kdna-remote-server-release.tgz","_nodeVersion":"22.23.1","_npmVersion":"11.17.0","dist":{"integrity":"sha512-rYWVGeAc1MOLmywC3mY2utfB1H+2sJiAGL2cy6BvfsLJnHCZVfy5vVntulwG9Bc3NV37oIpfczqf768OUztLjA==","shasum":"7362210a80745f9fd47a6ca85cb2852d917d42e9","tarball":"https://registry.npmjs.org/@aikdna/kdna-remote-server/-/kdna-remote-server-0.4.2.tgz","fileCount":11,"unpackedSize":71177,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikdna%2fkdna-remote-server@0.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD6HSJI+wLA5MG0bIfkt4KPPwX6HlFtZKq8VgnlipCS9QIgetIYrN9KJWCllQ7TLxaLr5w4v2IQ6VO6/SDw6KL0fts="}]},"_npmUser":{"name":"code2mp4","email":"hi@code2mp4.com"},"directories":{},"maintainers":[{"name":"code2mp4","email":"hi@code2mp4.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/kdna-remote-server_0.4.2_1786238401627_0.3809004399481337"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-28T17:57:36.403Z","modified":"2026-08-09T01:20:02.172Z","0.1.0":"2026-06-28T17:57:36.641Z","0.2.0":"2026-07-13T01:58:28.180Z","0.3.0":"2026-07-13T08:37:02.560Z","0.3.1":"2026-07-13T08:53:16.341Z","0.3.2":"2026-07-14T14:31:45.837Z","0.4.0":"2026-07-17T11:14:33.539Z","0.4.1":"2026-07-18T07:43:49.491Z","0.4.2":"2026-08-09T01:20:01.790Z"},"bugs":{"url":"https://github.com/aikdna/kdna-remote-server/issues"},"license":"Apache-2.0","homepage":"https://github.com/aikdna/kdna-remote-server","keywords":["kdna","kdna-remote-server","remote-mode","projection","self-hosted","judgement-asset","task-projection"],"repository":{"type":"git","url":"git+https://github.com/aikdna/kdna-remote-server.git"},"description":"Self-hostable KDNA projection service that returns task-scoped judgment projections without sending the full .kdna payload.","maintainers":[{"name":"code2mp4","email":"hi@code2mp4.com"}],"readme":"# @aikdna/kdna-remote-server\n\n**Experimental self-hostable HTTP projection server for KDNA `remote` assets.**\n\nKDNA makes judgment portable across models and runtimes. This repository is an\nexperimental reference implementation of the remote projection part of that\nopen protocol; it is not an AIKDNA-hosted service.\n\nThis server holds a single `.kdna` asset locally and returns\n**task-scoped projections** — never the full payload — to\nauthorized callers. It implements the candidate\nprojection contract in [`specs/kdna-runtime-projection.md`][1]\nand the self-hosting invariant from [`docs/REMOTE_MODE.md`][2].\n\nThe server never opens or decodes asset entries itself. It asks KDNA Core 0.21.0\nfor one authorized `full` Runtime Capsule, then narrows that Capsule context at\nthe HTTP boundary for each remote request.\n\nRemote sends entitlement refreshes only to the canonical\n`/entitlements/sync` route. The unreleased Remote `0.4.2` source candidate is\nbound to the exact unreleased Activation `0.2.1` candidate artifact and\nexecutes an activate-to-sync exchange against those bytes. That development\nfixture is not a runtime dependency and does not make either candidate\npublished.\n\nThe registry package at `0.4.1` is the published baseline. Repository `0.4.2`\nis an unreleased source candidate; it is not npm latest and a checkout is not\nevidence of publication.\n\n[1]: https://github.com/aikdna/kdna/blob/main/specs/kdna-runtime-projection.md\n[2]: https://github.com/aikdna/kdna/blob/main/docs/REMOTE_MODE.md\n\n---\n\n## Self-hosting is the default\n\n> The KDNA protocol MUST NOT assume a single official KDNA\n> server. Any asset creator can run their own remote server.\n> No AIKDNA-hosted remote endpoint is part of the current public baseline.\n\nThis server is the deployer's own. The protocol does not\nhardcode any KDNA Inc. URL; the activation server URL is a\ndeployer-controlled configuration value (see\n`--activation-server` below).\n\n---\n\n## Quick start (self-hosting)\n\n```bash\n# 1a. Published baseline (any Node 22.9+ server)\nnpm install -g @aikdna/kdna-remote-server\n\n# 1b. To evaluate the unreleased 0.4.2 candidate instead, use a trusted exact\n# source checkout and its inspected tarball.\nnpm ci\nnpm test\nnpm pack\nnpm install -g ./aikdna-kdna-remote-server-0.4.2.tgz\n\n# 2. Point at a .kdna asset on local disk\nkdna-remote-server \\\n  --asset /path/to/your-asset.kdna \\\n  --port 3000 \\\n  --activation-server https://licenses.yoursite.com\n\n# 3. Test. Put the request in a private file so license_key never enters argv.\ncurl http://localhost:3000/healthz\ninstall -m 600 /dev/null ./projection-request.json\n${EDITOR:?Set EDITOR} ./projection-request.json\ncurl -X POST http://localhost:3000/project \\\n  -H 'Content-Type: application/json' \\\n  --data-binary @./projection-request.json\nrm ./projection-request.json\n```\n\nThat's it. No AIKDNA registration or hardcoded AIKDNA endpoint. Entitlement\nchecks go only to the activation server selected by the deployer.\nDo not replace a placeholder with a real license secret inside a command\nargument. A deployment secret provider may instead pipe the same bounded JSON\nbody to `curl --data-binary @-`.\n\n---\n\n## CLI options\n\n```\nRequired:\n  --asset <path>           Path to a packaged .kdna asset file\n                           the server will hold locally. The\n                           server NEVER fetches assets from the\n                           network.\n\nOptions:\n  --port <n>               Port to listen on. Default 3000.\n                           Use 0 for an OS-assigned port (tests).\n  --host <addr>            Host to bind. Default 127.0.0.1.\n  --activation-server <url>\n                           URL of the activation server (see\n                           @aikdna/kdna-activation-server).\n                           The projection server calls the\n                           sync endpoint on every request.\n                           Self-hosted; no default URL is\n                           hardcoded.\n  --dry-run                Skip entitlement verification. For\n                           local development without a real\n                           activation server. Dry-run may bind\n                           only to exact 127.0.0.1 or ::1.\n  --audit-log <path>       Append audit events to this file.\n                           Default\n                           ~/.kdna/remote-server-audit.jsonl.\n  --rate-limit-ms <n>      Minimum gap between requests from\n                           the same client. Default 100ms.\n  --help                   Print this help.\n```\n\n---\n\n## HTTP API\n\n### `GET /healthz`\n\nHealth check. Returns 200 with asset metadata (no judgment\ncontent).\n\n### `GET /asset/metadata`\n\nReturns the asset's identity (asset_id, title, version, access)\nbut NEVER any judgment content. Safe to expose to any caller\nwho needs to introspect the asset.\n\n### `POST /project`\n\nReturns a task projection. The full payload is NEVER returned.\n\nRequest body:\n\n```json\n{\n  \"kdna_id\": \"kdna:yourname:your-asset\",\n  \"license_key\": \"<license-key>\",\n  \"license_id\": \"lic_customer_1\",\n  \"task\": \"review_article\",\n  \"context\": \"Pre-publish review of a technical blog post\",\n  \"mode\": \"judge\"\n}\n```\n\nWhen the server is not running with `--dry-run`, `license_key` is required.\n`license_id` is optional and, when supplied, becomes an additional exact\nbinding. `kdna_id` is also optional, but it must exactly match the canonical\nidentity in the loaded Runtime Capsule when present. Caller-supplied machine\nidentity is forbidden: the remote deployment derives its own stable machine\nfingerprint and sends it to the configured activation server. Projection is\nallowed only when the response returns a canonical nonempty `license_id`, the\nexact asset domain and machine fingerprint, `status: \"active\"`,\n`revoked: false`, and `require_machine_binding: true`. License keys and raw\nmachine fingerprints are never written to the projection audit log.\n\nActivation transport must use a canonical HTTPS origin. Plain HTTP is accepted\nonly for exact `127.0.0.1` or `[::1]` development origins. Credentials, paths,\nqueries, fragments, redirects, non-JSON responses, and responses over 64 KiB\nare rejected before any projection is returned.\n\nResponse body (200):\n\n```json\n{\n  \"task_projection\": {\n    \"diagnosis_focus\": [\"...\", \"...\"],\n    \"constraints\": [\"...\"],\n    \"self_check\": [\"...\"]\n  },\n  \"projection_policy\": \"remote\",\n  \"trace_id\": \"uuid\",\n  \"asset_id\": \"kdna:yourname:your-asset\",\n  \"asset_version\": \"1.0.0\"\n}\n```\n\nProjection strategies by task verb:\n\n| `task` starts with… | Returns |\n|---------------------|---------|\n| `review` / `evaluate` / `assess` | constraints + self-checks + a few axioms |\n| `decide` / `choose` / `select` | highest_question + axioms + boundaries |\n| `explore` / `discover` / `browse` | highest_question + 1 axiom |\n| `audit` / `comply` / `check` | boundaries + self-checks + failure-modes |\n| anything else | highest_question only (minimal) |\n\nError responses (4xx/5xx) use the shape from\n[`specs/kdna-entitlement-api.md`][3]:\n\n```json\n{\n  \"ok\": false,\n  \"error\": {\n    \"code\": \"EXTRACTION_BLOCKED\",\n    \"message\": \"request pattern flagged as extraction attempt: asks_for_full_content\",\n    \"retryable\": false\n  }\n}\n```\n\n[3]: https://github.com/aikdna/kdna/blob/main/specs/kdna-entitlement-api.md\n\n---\n\n## Security properties\n\nThis server enforces the following regardless of deployment:\n\n- **No full payload return** — the projection is structurally\n  smaller than the content. The HTTP layer never sends\n  `asset.content` or any equivalent.\n- **Layer isolation without semantic censorship** — the server never adds\n  content-certification fields or claims. Selected asset text is preserved\n  verbatim even when the asset itself discusses words such as “official”,\n  “trusted”, or “recommended”.\n- **Extraction detection** — requests that look like bulk\n  extraction (\"all axioms\", \"dump\", \"extract every\", etc.) are\n  rejected with `EXTRACTION_BLOCKED`.\n- **Rate limiting** — minimum gap of `--rate-limit-ms` per\n  client. The default is 100ms.\n- **Deployment-bound authorization** — every non-dry-run request requires a\n  license key and an exact Activation response bound to the loaded asset and\n  the server's own machine fingerprint. A caller cannot override either\n  identity.\n- **Bounded secure Activation transport** — entitlement credentials are sent\n  only to the configured canonical HTTPS origin (or exact loopback HTTP for\n  development); redirects are never followed and responses are capped at\n  64 KiB.\n- **Bounded origin-independent HTTP parsing** — projection request bodies are\n  capped by UTF-8 bytes at 64 KiB; malformed Host headers and absolute request\n  targets receive one stable 400 response and never influence route parsing.\n- **Loopback-only dry-run** — authorization bypass can bind only to exact\n  `127.0.0.1` or `::1`; wildcard, hostname, and external binds fail at startup.\n- **Audit log** — a successful projection is returned only after its event is\n  appended and synchronized to one regular audit file (default\n  `~/.kdna/remote-server-audit.jsonl`). If persistence fails, the server\n  returns `AUDIT_UNAVAILABLE` without projection content. Rejected requests\n  remain rejected even if their best-effort audit write also fails. Records\n  contain no request plaintext, raw task/mode, license key, or raw machine\n  fingerprint.\n- **No network fetches** — the server holds the asset in\n  memory from `--asset`. No external asset URLs are honored\n  at request time.\n\n---\n\n## Deployment models\n\nThis server is a building block, not a policy decision. Two public deployment\nmodels are described here:\n\n1. **Self-hosted (default)** — you run this on your own\n   infrastructure. The asset stays on your server; your\n   `.kdna.json` points at your server's URL.\n2. **Third-party hosting** — any third party can run this\n   server. KDNA Inc. does not certify or endorse third-party\n   hosts. The protocol is transparent to the hosting\n   provider.\n\nThe protocol does not control which model you pick. You do.\n\n---\n\n## Local development\n\n```bash\ngit clone https://github.com/aikdna/kdna-remote-server\ncd kdna-remote-server\nnode scripts/trusted-npm.js ci --ignore-scripts \\\n  --registry=https://registry.npmjs.org/ \\\n  --@aikdna:registry=https://registry.npmjs.org/\nnode scripts/run-tests.js\n```\n\nThe tests start the server in `--dry-run` mode on an\nOS-assigned port. No external services are required.\n\n---\n\n## License\n\nApache 2.0. See [LICENSE](./LICENSE).\n\nThis server does not transmit or store the full judgment payload outside its\nlocal runtime. It returns only task-scoped projections and makes no content\ncertification claim; interpretation remains the consumer's responsibility.\n","readmeFilename":"README.md"}