Publish hardened LumynaX product package
Browse files- .gitattributes +1 -4
- LICENSE +5 -16
- README.md +145 -128
- SMOKE_TESTS.md +11 -0
- configs/lumynax_model_registry.json +2931 -0
- configs/provider_aliases.yaml +30 -0
- configs/routing_policy.yaml +20 -0
- examples/capsule.personal-sovereignty-profile.json +45 -0
- examples/opencode.marama-route.json +28 -0
- examples/request.code-restricted.json +14 -0
- examples/request.openai-chat-code.json +44 -0
- examples/request.personal-memory-read.json +19 -0
- integrations/opencode-compatible-provider.md +96 -0
- marama_route/__init__.py +22 -0
- marama_route/cli.py +83 -0
- marama_route/gateway.py +204 -0
- marama_route/registry.py +150 -0
- marama_route/router.py +113 -0
- policy-packs/nz-personal-sovereignty.yaml +59 -0
- product_blueprint.md +73 -0
- product_manifest.json +21 -2
- pyproject.toml +5 -13
- quickstart.py +29 -18
- requirements.txt +1 -1
- schemas/data_capsule.schema.json +88 -0
- sovereigncode/__init__.py +17 -10
- sovereigncode/audit.py +45 -35
- sovereigncode/cli.py +89 -29
- sovereigncode/planner.py +129 -0
- sovereigncode/policy.py +267 -92
.gitattributes
CHANGED
|
@@ -1,5 +1,2 @@
|
|
| 1 |
* text=auto
|
| 2 |
-
*.
|
| 3 |
-
*.md text eol=lf
|
| 4 |
-
*.yaml text eol=lf
|
| 5 |
-
*.json text eol=lf
|
|
|
|
| 1 |
* text=auto
|
| 2 |
+
*.json linguist-generated=false
|
|
|
|
|
|
|
|
|
LICENSE
CHANGED
|
@@ -1,17 +1,6 @@
|
|
| 1 |
-
|
| 2 |
-
|
| 3 |
-
|
| 4 |
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
-
you may not use this file except in compliance with the License.
|
| 9 |
-
You may obtain a copy of the License at
|
| 10 |
-
|
| 11 |
-
http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
-
|
| 13 |
-
Unless required by applicable law or agreed to in writing, software
|
| 14 |
-
distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
-
See the License for the specific language governing permissions and
|
| 17 |
-
limitations under the License.
|
|
|
|
| 1 |
+
Apache License
|
| 2 |
+
Version 2.0, January 2004
|
| 3 |
+
http://www.apache.org/licenses/
|
| 4 |
|
| 5 |
+
This repository is published as a product scaffold by AbteeX AI Labs. See the
|
| 6 |
+
Apache License 2.0 text at https://www.apache.org/licenses/LICENSE-2.0.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
README.md
CHANGED
|
@@ -12,193 +12,210 @@ tags:
|
|
| 12 |
- aotearoa
|
| 13 |
- sovereign-ai
|
| 14 |
- local-first
|
|
|
|
| 15 |
language:
|
| 16 |
- en
|
| 17 |
- mi
|
| 18 |
---
|
| 19 |
|
| 20 |
# AbteeX SovereignCode
|
|
|
|
| 21 |
|
| 22 |
-
|
| 23 |
|
| 24 |
-
|
| 25 |
-
<p align="center"><em>Ko te mārama te tūāpapa — the light is the foundation.</em></p>
|
| 26 |
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
|
|
|
|
|
|
| 31 |
|
| 32 |
-
|
| 33 |
-
<a href="#what-it-is">What it is</a> ·
|
| 34 |
-
<a href="#quickstart">Quickstart</a> ·
|
| 35 |
-
<a href="#data-capsule">Data Capsule</a> ·
|
| 36 |
-
<a href="#policy-decision-point">Policy decision point</a> ·
|
| 37 |
-
<a href="#audit-ledger">Audit ledger</a> ·
|
| 38 |
-
<a href="#roadmap">Roadmap</a> ·
|
| 39 |
-
<a href="#companion-products">Companions</a>
|
| 40 |
-
</p>
|
| 41 |
|
| 42 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 43 |
|
| 44 |
-
|
| 45 |
|
| 46 |
-
|
| 47 |
|
| 48 |
-
|
| 49 |
|
| 50 |
-
|
| 51 |
|
| 52 |
| Commitment | Product Meaning |
|
| 53 |
| --- | --- |
|
| 54 |
| Data capsules | Every workspace, dataset, or customer context can carry machine-readable purpose, residency, retention, export, and training controls. |
|
| 55 |
-
| Policy before tools | Shell commands, file writes, network calls, commits, and model calls are checked
|
| 56 |
| Local-first inference | High-impact or restricted data routes to local or LumynaX-governed models by default. |
|
| 57 |
| Human review | External effects require explicit approval, visible diffs, and audit records. |
|
| 58 |
| Provenance | Model identity, source files, policy decisions, prompts, outputs, and release metadata remain traceable. |
|
| 59 |
|
| 60 |
## Why This Is Different
|
| 61 |
|
| 62 |
-
Most coding agents optimise for speed. SovereignCode optimises for
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 63 |
|
| 64 |
## Quickstart
|
| 65 |
|
| 66 |
-
|
| 67 |
|
| 68 |
```bash
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
| 72 |
```
|
| 73 |
|
| 74 |
-
|
|
|
|
|
|
|
| 75 |
|
| 76 |
```bash
|
| 77 |
-
|
| 78 |
-
--capsule examples/capsule.restricted-nz-code.json \
|
| 79 |
-
--request examples/request.allowed-local-edit.json
|
|
|
|
|
|
|
| 80 |
```
|
| 81 |
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
Evaluate a **denied** training request:
|
| 85 |
|
| 86 |
```bash
|
| 87 |
-
|
| 88 |
-
--capsule examples/capsule.restricted-nz-code.json \
|
| 89 |
-
--request examples/request.denied-training.json \
|
| 90 |
--allow-denied-exit-zero
|
| 91 |
```
|
| 92 |
|
| 93 |
-
|
| 94 |
-
|
| 95 |
-
## Data Capsule
|
| 96 |
-
|
| 97 |
-
A Data Capsule is the policy envelope attached to a workspace, dataset, tenant, case, source-file set, or prompt context.
|
| 98 |
-
|
| 99 |
-
```json
|
| 100 |
-
{
|
| 101 |
-
"capsule_id": "cap-nz-code-001",
|
| 102 |
-
"subject_id": "abx-workspace",
|
| 103 |
-
"jurisdiction": "NZ",
|
| 104 |
-
"sensitivity": "restricted",
|
| 105 |
-
"allowed_purposes": ["coding_assistance", "inference", "test_generation"],
|
| 106 |
-
"denied_purposes": ["ad_training", "third_party_resale"],
|
| 107 |
-
"resident_regions": ["NZ"],
|
| 108 |
-
"data_classes": ["source_code", "policy", "runtime_logs"],
|
| 109 |
-
"retention_days": 14,
|
| 110 |
-
"export_allowed": false,
|
| 111 |
-
"training_allowed": false
|
| 112 |
-
}
|
| 113 |
-
```
|
| 114 |
|
| 115 |
-
|
| 116 |
-
|
| 117 |
-
|
| 118 |
-
|
| 119 |
-
|
| 120 |
-
|
| 121 |
-
|
| 122 |
-
|
| 123 |
-
- `consent_record`
|
| 124 |
-
|
| 125 |
-
## Policy Decision Point
|
| 126 |
-
|
| 127 |
-
The PDP answers one question before every sensitive action:
|
| 128 |
-
|
| 129 |
-
> *Can this actor, for this purpose, in this region, using this model/tool, touch this capsule?*
|
| 130 |
|
| 131 |
-
|
| 132 |
|
| 133 |
-
|
|
| 134 |
| --- | --- |
|
| 135 |
-
| `
|
| 136 |
-
|
|
| 137 |
-
|
|
| 138 |
-
|
|
| 139 |
-
|
|
| 140 |
-
|
|
| 141 |
-
| `reasons` | Ordered list of policy reasons. |
|
| 142 |
-
| `obligations` | Required follow-up actions. |
|
| 143 |
-
| `request_hash` | Stable SHA-256 of the canonical request. |
|
| 144 |
-
| `timestamp` | ISO 8601 UTC. |
|
| 145 |
-
|
| 146 |
-
## Tool Broker
|
| 147 |
|
| 148 |
-
|
| 149 |
|
| 150 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 151 |
|
| 152 |
-
|
| 153 |
|
| 154 |
-
|
| 155 |
|
| 156 |
-
|
| 157 |
-
| --- | --- |
|
| 158 |
-
| Publisher | AbteeX AI Labs |
|
| 159 |
-
| Family | LumynaX sovereign products |
|
| 160 |
-
| Sovereign intent | Local-first coding assistance with policy-before-tools enforcement. |
|
| 161 |
-
| Runtime residency | Operator's environment; restricted data routes to local or LumynaX-governed models. |
|
| 162 |
-
| License | Apache-2.0 |
|
| 163 |
-
| Stage | Product scaffold — PDP and audit engine executable; full terminal loop in P1. |
|
| 164 |
-
| Router integration | First-class with [LumynaX MaramaRoute](https://huggingface.co/AbteeXAILab/marama-route). |
|
| 165 |
|
| 166 |
-
|
| 167 |
|
| 168 |
-
| Milestone | Outcome |
|
| 169 |
-
| --- | --- |
|
| 170 |
-
| **P0 scaffold** *(now)* | Policy engine, audit records, CLI, examples, docs. |
|
| 171 |
-
| **P1 terminal loop** | Local terminal agent with plan / edit / test workflow. |
|
| 172 |
-
| **P2 tool broker** | Policy wrappers for shell, git, file writes, package installs, HTTP. |
|
| 173 |
-
| **P3 MaramaRoute integration** | Sovereign model routing for every model call. |
|
| 174 |
-
| **P4 workspace UI** | Browser console showing plan, policy, diffs, tests, approvals. |
|
| 175 |
-
| **P5 enterprise controls** | Tenant policies, SSO hooks, signed audit exports, policy packs. |
|
| 176 |
|
| 177 |
-
#
|
| 178 |
|
| 179 |
-
|
| 180 |
|
| 181 |
-
|
|
|
|
|
|
|
| 182 |
|
| 183 |
-
|
| 184 |
-
| --- | --- |
|
| 185 |
-
| [LumynaX MaramaRoute](https://huggingface.co/AbteeXAILab/marama-route) | Sovereign model router across the LumynaX release family. SovereignCode delegates model selection to MaramaRoute. |
|
| 186 |
-
| [LumynaX Live Demo](https://huggingface.co/spaces/AbteeXAILab/lumynax-live-demo) | Public browser demo of a LumynaX-infused GGUF release. |
|
| 187 |
-
| [SovereignCode Live](https://huggingface.co/spaces/AbteeXAILab/sovereigncode-demo) | Interactive policy evaluator — paste a capsule and request, see the decision. |
|
| 188 |
-
| [AbteeXAILab on Hugging Face](https://huggingface.co/AbteeXAILab) | The full LumynaX release family. |
|
| 189 |
|
| 190 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 191 |
|
| 192 |
-
|
| 193 |
|
| 194 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 195 |
|
| 196 |
-
|
| 197 |
-
- The current release is a *product scaffold*. Full terminal loop, tool broker, and workspace UI ship in P1–P4.
|
| 198 |
-
- For high-impact decisions, use human review and domain-specific evaluation.
|
| 199 |
-
- Audit records help, but auditability is a process — not a guarantee.
|
| 200 |
|
| 201 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 202 |
|
| 203 |
-
|
| 204 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 12 |
- aotearoa
|
| 13 |
- sovereign-ai
|
| 14 |
- local-first
|
| 15 |
+
- opencode
|
| 16 |
language:
|
| 17 |
- en
|
| 18 |
- mi
|
| 19 |
---
|
| 20 |
|
| 21 |
# AbteeX SovereignCode
|
| 22 |
+
<!-- abteex-sovereigncode-card:v2 -->
|
| 23 |
|
| 24 |
+
Standalone release package for `AbteeXAILab/sovereigncode`.
|
| 25 |
|
| 26 |
+
## Install
|
|
|
|
| 27 |
|
| 28 |
+
```bash
|
| 29 |
+
hf download AbteeXAILab/sovereigncode --local-dir sovereigncode --repo-type model
|
| 30 |
+
cd sovereigncode
|
| 31 |
+
pip install -e .
|
| 32 |
+
python quickstart.py
|
| 33 |
+
```
|
| 34 |
|
| 35 |
+
## Included Runtime Commands
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 36 |
|
| 37 |
+
```bash
|
| 38 |
+
python -m sovereigncode.cli evaluate --capsule examples/capsule.restricted-nz-code.json --request examples/request.allowed-local-edit.json
|
| 39 |
+
python -m sovereigncode.cli plan-turn --capsule examples/capsule.restricted-nz-code.json --request examples/request.allowed-local-edit.json --route-request examples/request.code-restricted.json --registry configs/lumynax_model_registry.json
|
| 40 |
+
```
|
| 41 |
+
|
| 42 |
+
# AbteeX SovereignCode
|
| 43 |
|
| 44 |
+
AbteeX SovereignCode is the proposed AbteeX AI Labs coding-agent product built on LumynaX. It is conceptually close to an OpenCode-style terminal coding assistant, but the centre of gravity is AI sovereignty: every model call, tool call, file edit, and outbound action is evaluated against a Data Capsule policy before execution.
|
| 45 |
|
| 46 |
+
## Product Position
|
| 47 |
|
| 48 |
+
SovereignCode is for organisations that want local-first coding assistance without losing control over source code, regulated records, Iwi or community-held data, health data, procurement records, or other sensitive operational context.
|
| 49 |
|
| 50 |
+
The product is designed around five commitments:
|
| 51 |
|
| 52 |
| Commitment | Product Meaning |
|
| 53 |
| --- | --- |
|
| 54 |
| Data capsules | Every workspace, dataset, or customer context can carry machine-readable purpose, residency, retention, export, and training controls. |
|
| 55 |
+
| Policy before tools | Shell commands, file writes, network calls, commits, and model calls are checked before execution. |
|
| 56 |
| Local-first inference | High-impact or restricted data routes to local or LumynaX-governed models by default. |
|
| 57 |
| Human review | External effects require explicit approval, visible diffs, and audit records. |
|
| 58 |
| Provenance | Model identity, source files, policy decisions, prompts, outputs, and release metadata remain traceable. |
|
| 59 |
|
| 60 |
## Why This Is Different
|
| 61 |
|
| 62 |
+
Most coding agents optimise for speed. SovereignCode optimises for controlled autonomy: it can still plan, edit, test, and explain code, but it treats data rights, residency, consent, provenance, and human approval as runtime primitives instead of policy text on a wiki.
|
| 63 |
+
|
| 64 |
+
The initial product scaffold includes:
|
| 65 |
+
|
| 66 |
+
- A deterministic Data Capsule policy decision point.
|
| 67 |
+
- Personal-detail consent checks for anonymous, pseudonymous, identifiable, and sensitive identifiable contexts.
|
| 68 |
+
- A CLI evaluator for governed code/data requests.
|
| 69 |
+
- A governed coding-turn planner that combines policy, audit, tool grants, and MaramaRoute model selection.
|
| 70 |
+
- Audit-record generation with stable request hashes.
|
| 71 |
+
- Product architecture and launch roadmap.
|
| 72 |
+
- Example capsules for restricted New Zealand source-code work.
|
| 73 |
+
- A path to integrate with LumynaX MaramaRoute for sovereign model selection.
|
| 74 |
|
| 75 |
## Quickstart
|
| 76 |
|
| 77 |
+
From the repo root:
|
| 78 |
|
| 79 |
```bash
|
| 80 |
+
py -3 -m tinyluminax.products.sovereigncode.cli evaluate \
|
| 81 |
+
--capsule products/abx-sovereigncode/examples/capsule.restricted-nz-code.json \
|
| 82 |
+
--request products/abx-sovereigncode/examples/request.allowed-local-edit.json
|
| 83 |
```
|
| 84 |
|
| 85 |
+
Expected result: `allowed: true` with obligations such as audit logging, local runtime routing, and visible diff review.
|
| 86 |
+
|
| 87 |
+
Plan a complete governed coding-agent turn:
|
| 88 |
|
| 89 |
```bash
|
| 90 |
+
py -3 -m tinyluminax.products.sovereigncode.cli plan-turn \
|
| 91 |
+
--capsule products/abx-sovereigncode/examples/capsule.restricted-nz-code.json \
|
| 92 |
+
--request products/abx-sovereigncode/examples/request.allowed-local-edit.json \
|
| 93 |
+
--route-request products/lumynax-marama-route/examples/request.code-restricted.json \
|
| 94 |
+
--registry products/lumynax-marama-route/configs/lumynax_model_registry.json
|
| 95 |
```
|
| 96 |
|
| 97 |
+
Denied training example:
|
|
|
|
|
|
|
| 98 |
|
| 99 |
```bash
|
| 100 |
+
py -3 -m tinyluminax.products.sovereigncode.cli evaluate \
|
| 101 |
+
--capsule products/abx-sovereigncode/examples/capsule.restricted-nz-code.json \
|
| 102 |
+
--request products/abx-sovereigncode/examples/request.denied-training.json \
|
| 103 |
--allow-denied-exit-zero
|
| 104 |
```
|
| 105 |
|
| 106 |
+
## Product Modules
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 107 |
|
| 108 |
+
| Module | Purpose |
|
| 109 |
+
| --- | --- |
|
| 110 |
+
| Workspace Indexer | Builds a local map of files, policies, secrets, data classes, and repository ownership. |
|
| 111 |
+
| Data Capsule PDP | Decides whether a request is allowed, denied, or allowed with obligations. |
|
| 112 |
+
| Tool Broker | Wraps shell, file, git, network, package, and model actions with policy checks. |
|
| 113 |
+
| LumynaX Runtime Adapter | Routes model calls to local GGUF, local API, or approved LumynaX model endpoints. |
|
| 114 |
+
| Audit Ledger | Stores decision records, prompt/output hashes, file diffs, and approval metadata. |
|
| 115 |
+
| Operator Console | Shows the plan, policy decision, diff, tests, and approval gate before external effects. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 116 |
|
| 117 |
+
## New Zealand Launch Shape
|
| 118 |
|
| 119 |
+
| Layer | Product Decision |
|
| 120 |
| --- | --- |
|
| 121 |
+
| Default region | `NZ` residency, with explicit opt-in for `AU` or global routes. |
|
| 122 |
+
| Default data posture | Local-first for restricted, health, personal, Iwi, taonga, and regulated operational context. |
|
| 123 |
+
| Buyer control | Tenant policy packs define purpose, retention, model allowlists, exports, and approval rules. |
|
| 124 |
+
| Personal sovereignty | Personal data is tagged by detail level and consent scope before it enters prompts or traces. |
|
| 125 |
+
| OpenCode compatibility | Configure SovereignCode through MaramaRoute as an OpenAI-compatible provider. |
|
| 126 |
+
| Commercial wedge | Start with governed code assistance for New Zealand teams that cannot send private workspaces to a generic cloud coding agent. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 127 |
|
| 128 |
+
## Real Product Surfaces
|
| 129 |
|
| 130 |
+
| Surface | File |
|
| 131 |
+
| --- | --- |
|
| 132 |
+
| Data Capsule JSON Schema | `schemas/data_capsule.schema.json` |
|
| 133 |
+
| NZ personal sovereignty policy pack | `policy-packs/nz-personal-sovereignty.yaml` |
|
| 134 |
+
| OpenCode-compatible integration guide | `integrations/opencode-compatible-provider.md` |
|
| 135 |
+
| OpenCode provider example | `examples/opencode.marama-route.json` |
|
| 136 |
+
| Personal profile capsule | `examples/capsule.personal-sovereignty-profile.json` |
|
| 137 |
+
| Personal-memory request | `examples/request.personal-memory-read.json` |
|
| 138 |
+
| Product blueprint | `product_blueprint.md` |
|
| 139 |
|
| 140 |
+
## Source Grounding
|
| 141 |
|
| 142 |
+
The sovereignty model is inspired by the Data Capsule pattern described in the ScienceDirect article identified by PII `S2543925125000166`, especially its emphasis on semantic metadata, ontology-based federation, and dynamic usage-control policies. This repository uses that idea as product architecture inspiration; it does not copy the paper text or implementation.
|
| 143 |
|
| 144 |
+
## Stage
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 145 |
|
| 146 |
+
This is a product scaffold, not the final commercial application. The policy engine and router integration are executable now; the terminal UI, tool broker, and full agent loop are the next implementation stage.
|
| 147 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 148 |
|
| 149 |
+
# AbteeX SovereignCode Product Blueprint
|
| 150 |
|
| 151 |
+
## One-Sentence Product
|
| 152 |
|
| 153 |
+
SovereignCode is a local-first coding agent for New Zealand teams that need code
|
| 154 |
+
assistance, model routing, personal-data controls, and audit-ready tool use in
|
| 155 |
+
one governed workflow.
|
| 156 |
|
| 157 |
+
## Core User Jobs
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 158 |
|
| 159 |
+
| User | Job | SovereignCode Response |
|
| 160 |
+
| --- | --- | --- |
|
| 161 |
+
| Individual developer | Use an AI coding assistant without exposing private files or personal preferences. | Local capsule, pseudonymous personal profile, resident model route, no training by default. |
|
| 162 |
+
| Startup or SME | Refactor and test private code while keeping customer data out of generic SaaS logs. | Workspace capsule, local route, diff review, audit hash. |
|
| 163 |
+
| Council or public-sector team | Use AI on operational code and documents with retention and residency controls. | Tenant policy pack, NZ residency, approval gates, signed audit export. |
|
| 164 |
+
| Iwi or community data steward | Keep community-held context under explicit purpose and consent boundaries. | High-impact sensitivity, local/LumynaX-only model rule, export denial by default. |
|
| 165 |
+
| Internal platform owner | Give developers one coding assistant with central policy. | OpenAI-compatible provider, CLI planner, future SSO and policy server. |
|
| 166 |
|
| 167 |
+
## Product Pillars
|
| 168 |
|
| 169 |
+
1. Capsule-first context: every workspace, profile, dataset, and prompt context
|
| 170 |
+
resolves to a Data Capsule before agent work starts.
|
| 171 |
+
2. Personal sovereignty: personal detail is classified before prompt assembly,
|
| 172 |
+
and consent scopes gate how profile context can be used.
|
| 173 |
+
3. Governed autonomy: read, plan, patch, test, shell, network, commit, and
|
| 174 |
+
publish actions are separate tool grants.
|
| 175 |
+
4. Open integration: OpenCode and similar clients connect through MaramaRoute's
|
| 176 |
+
OpenAI-compatible gateway.
|
| 177 |
+
5. Audit without hoarding: records retain decision hashes, obligations, model
|
| 178 |
+
identity, and reasons while prompt retention stays constrained.
|
| 179 |
|
| 180 |
+
## Minimum Product Loop
|
|
|
|
|
|
|
|
|
|
| 181 |
|
| 182 |
+
```text
|
| 183 |
+
developer asks for a coding task
|
| 184 |
+
-> resolve `.sovereigncode/capsule.json`
|
| 185 |
+
-> evaluate SovereignRequest
|
| 186 |
+
-> build MaramaRoute request
|
| 187 |
+
-> select resident LumynaX model
|
| 188 |
+
-> produce plan
|
| 189 |
+
-> request approval for writes or shell
|
| 190 |
+
-> apply patch
|
| 191 |
+
-> run tests
|
| 192 |
+
-> store audit record
|
| 193 |
+
```
|
| 194 |
|
| 195 |
+
## Product Modules To Build Next
|
| 196 |
+
|
| 197 |
+
| Module | MVP Definition | Implementation Notes |
|
| 198 |
+
| --- | --- | --- |
|
| 199 |
+
| Workspace indexer | Reads repo files, ignores secrets/build outputs, tags data classes. | Start with `rg --files`, `.gitignore`, and capsule include/exclude rules. |
|
| 200 |
+
| Tool broker | Wraps file write, shell, git, package install, HTTP, and model calls. | Reuse policy decisions and emit one audit record per effectful tool call. |
|
| 201 |
+
| Terminal UI | Shows plan, selected model, obligations, diff, and test output. | Keep compatible with OpenCode-style terminal use. |
|
| 202 |
+
| Personal profile store | Keeps user preferences and memory under a personal capsule. | Local encrypted file first, tenant vault later. |
|
| 203 |
+
| Audit ledger | Append-only local JSONL with hash chain. | Export signed bundles for enterprise customers. |
|
| 204 |
+
| Tenant policy server | Central policy packs, model allowlists, API keys, quotas. | Only needed after local MVP works. |
|
| 205 |
+
|
| 206 |
+
## Default Plans
|
| 207 |
+
|
| 208 |
+
| Plan | Buyer | Included |
|
| 209 |
+
| --- | --- | --- |
|
| 210 |
+
| Local Developer | individual NZ developer | local capsule, local audit, MaramaRoute provider config |
|
| 211 |
+
| Team Sovereign | startup or SME | shared policy pack, route registry, team audit export |
|
| 212 |
+
| Regulated Workspace | council, health-adjacent, community data project | stronger approval gates, retention controls, signed audit, SSO-ready policy server |
|
| 213 |
+
|
| 214 |
+
## First Non-Negotiables
|
| 215 |
+
|
| 216 |
+
- Never train on a capsule unless `training_allowed` is explicitly true.
|
| 217 |
+
- Never export restricted or personal context unless `export_allowed` is true
|
| 218 |
+
and the request carries human approval.
|
| 219 |
+
- Never route high-impact data to a non-local or non-LumynaX-governed model.
|
| 220 |
+
- Never apply file writes without a visible diff obligation.
|
| 221 |
+
- Never hide selected model identity from the audit record.
|
SMOKE_TESTS.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# SovereignCode Smoke Tests
|
| 2 |
+
|
| 3 |
+
Run from the package root:
|
| 4 |
+
|
| 5 |
+
```bash
|
| 6 |
+
pip install -e .
|
| 7 |
+
python quickstart.py
|
| 8 |
+
python -m sovereigncode.cli evaluate --capsule examples/capsule.personal-sovereignty-profile.json --request examples/request.personal-memory-read.json
|
| 9 |
+
```
|
| 10 |
+
|
| 11 |
+
Expected: all commands exit 0 and emit JSON decisions with audit records.
|
configs/lumynax_model_registry.json
ADDED
|
@@ -0,0 +1,2931 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"registry_id": "lumynax-marama-route-registry-v0",
|
| 3 |
+
"publisher": "AbteeX AI Labs",
|
| 4 |
+
"source_report": "docs/releases/hf-model-card-v4-refresh-2026-05-11.json",
|
| 5 |
+
"model_count": 74,
|
| 6 |
+
"models": [
|
| 7 |
+
{
|
| 8 |
+
"model_id": "lumynax-coder-qwen25-05b-instruct-gguf",
|
| 9 |
+
"repo_id": "AbteeXAILab/lumynax-coder-qwen25-05b-instruct-gguf",
|
| 10 |
+
"title": "LumynaX Coder Qwen2.5 0.5B Instruct GGUF",
|
| 11 |
+
"family": "qwen",
|
| 12 |
+
"runtime": "llama_cpp",
|
| 13 |
+
"modalities": [
|
| 14 |
+
"text"
|
| 15 |
+
],
|
| 16 |
+
"context_tokens": 32768,
|
| 17 |
+
"jurisdiction": "NZ",
|
| 18 |
+
"residency": [
|
| 19 |
+
"NZ"
|
| 20 |
+
],
|
| 21 |
+
"license_id": "see_model_card",
|
| 22 |
+
"quantization": "see_release_manifest",
|
| 23 |
+
"primary_artifact": "qwen2.5-coder-0.5b-instruct-q4_k_m.gguf",
|
| 24 |
+
"active_params_b": null,
|
| 25 |
+
"total_params_b": 0.5,
|
| 26 |
+
"quality_rank": 5,
|
| 27 |
+
"cost_rank": 2,
|
| 28 |
+
"sovereignty_tier": 3,
|
| 29 |
+
"supports_tools": true,
|
| 30 |
+
"supports_json": true,
|
| 31 |
+
"tags": [
|
| 32 |
+
"coder",
|
| 33 |
+
"gguf",
|
| 34 |
+
"lumynax",
|
| 35 |
+
"qwen",
|
| 36 |
+
"text"
|
| 37 |
+
],
|
| 38 |
+
"metadata": {
|
| 39 |
+
"hub_sha": "81c904af42045aeac88fa843b8f653d79afa0422",
|
| 40 |
+
"package_state": "prebuilt_gguf_release",
|
| 41 |
+
"public_status": "public and non-gated",
|
| 42 |
+
"validation_status": "pass",
|
| 43 |
+
"total_weight_size": 491400064
|
| 44 |
+
}
|
| 45 |
+
},
|
| 46 |
+
{
|
| 47 |
+
"model_id": "lumynax-coder-qwen25-14b-instruct-gguf",
|
| 48 |
+
"repo_id": "AbteeXAILab/lumynax-coder-qwen25-14b-instruct-gguf",
|
| 49 |
+
"title": "LumynaX Coder Qwen2.5 14B Instruct GGUF",
|
| 50 |
+
"family": "qwen",
|
| 51 |
+
"runtime": "llama_cpp",
|
| 52 |
+
"modalities": [
|
| 53 |
+
"text"
|
| 54 |
+
],
|
| 55 |
+
"context_tokens": 32768,
|
| 56 |
+
"jurisdiction": "NZ",
|
| 57 |
+
"residency": [
|
| 58 |
+
"NZ"
|
| 59 |
+
],
|
| 60 |
+
"license_id": "see_model_card",
|
| 61 |
+
"quantization": "see_release_manifest",
|
| 62 |
+
"primary_artifact": "qwen2.5-coder-14b-instruct-q4_k_m.gguf",
|
| 63 |
+
"active_params_b": null,
|
| 64 |
+
"total_params_b": 14.0,
|
| 65 |
+
"quality_rank": 2,
|
| 66 |
+
"cost_rank": 6,
|
| 67 |
+
"sovereignty_tier": 3,
|
| 68 |
+
"supports_tools": true,
|
| 69 |
+
"supports_json": true,
|
| 70 |
+
"tags": [
|
| 71 |
+
"coder",
|
| 72 |
+
"gguf",
|
| 73 |
+
"lumynax",
|
| 74 |
+
"qwen",
|
| 75 |
+
"text"
|
| 76 |
+
],
|
| 77 |
+
"metadata": {
|
| 78 |
+
"hub_sha": "e408c607528af8457900e4237b26184612f16e49",
|
| 79 |
+
"package_state": "prebuilt_gguf_release",
|
| 80 |
+
"public_status": "public and non-gated",
|
| 81 |
+
"validation_status": "pass",
|
| 82 |
+
"total_weight_size": 8988110272
|
| 83 |
+
}
|
| 84 |
+
},
|
| 85 |
+
{
|
| 86 |
+
"model_id": "lumynax-coder-qwen25-15b-instruct-gguf",
|
| 87 |
+
"repo_id": "AbteeXAILab/lumynax-coder-qwen25-15b-instruct-gguf",
|
| 88 |
+
"title": "LumynaX Coder Qwen2.5 1.5B Instruct GGUF",
|
| 89 |
+
"family": "qwen",
|
| 90 |
+
"runtime": "llama_cpp",
|
| 91 |
+
"modalities": [
|
| 92 |
+
"text"
|
| 93 |
+
],
|
| 94 |
+
"context_tokens": 32768,
|
| 95 |
+
"jurisdiction": "NZ",
|
| 96 |
+
"residency": [
|
| 97 |
+
"NZ"
|
| 98 |
+
],
|
| 99 |
+
"license_id": "see_model_card",
|
| 100 |
+
"quantization": "see_release_manifest",
|
| 101 |
+
"primary_artifact": "qwen2.5-coder-1.5b-instruct-q4_k_m.gguf",
|
| 102 |
+
"active_params_b": null,
|
| 103 |
+
"total_params_b": 1.5,
|
| 104 |
+
"quality_rank": 5,
|
| 105 |
+
"cost_rank": 4,
|
| 106 |
+
"sovereignty_tier": 3,
|
| 107 |
+
"supports_tools": true,
|
| 108 |
+
"supports_json": true,
|
| 109 |
+
"tags": [
|
| 110 |
+
"coder",
|
| 111 |
+
"gguf",
|
| 112 |
+
"lumynax",
|
| 113 |
+
"qwen",
|
| 114 |
+
"text"
|
| 115 |
+
],
|
| 116 |
+
"metadata": {
|
| 117 |
+
"hub_sha": "cbe84212ed061b79297683f6d6247fd22f1fde7c",
|
| 118 |
+
"package_state": "prebuilt_gguf_release",
|
| 119 |
+
"public_status": "public and non-gated",
|
| 120 |
+
"validation_status": "pass",
|
| 121 |
+
"total_weight_size": 1117320768
|
| 122 |
+
}
|
| 123 |
+
},
|
| 124 |
+
{
|
| 125 |
+
"model_id": "lumynax-coder-qwen25-7b-instruct-gguf",
|
| 126 |
+
"repo_id": "AbteeXAILab/lumynax-coder-qwen25-7b-instruct-gguf",
|
| 127 |
+
"title": "LumynaX Coder Qwen2.5 7B Instruct GGUF",
|
| 128 |
+
"family": "qwen",
|
| 129 |
+
"runtime": "llama_cpp",
|
| 130 |
+
"modalities": [
|
| 131 |
+
"text"
|
| 132 |
+
],
|
| 133 |
+
"context_tokens": 32768,
|
| 134 |
+
"jurisdiction": "NZ",
|
| 135 |
+
"residency": [
|
| 136 |
+
"NZ"
|
| 137 |
+
],
|
| 138 |
+
"license_id": "see_model_card",
|
| 139 |
+
"quantization": "see_release_manifest",
|
| 140 |
+
"primary_artifact": "qwen2.5-coder-7b-instruct-q4_k_m.gguf",
|
| 141 |
+
"active_params_b": null,
|
| 142 |
+
"total_params_b": 7.0,
|
| 143 |
+
"quality_rank": 3,
|
| 144 |
+
"cost_rank": 6,
|
| 145 |
+
"sovereignty_tier": 3,
|
| 146 |
+
"supports_tools": true,
|
| 147 |
+
"supports_json": true,
|
| 148 |
+
"tags": [
|
| 149 |
+
"coder",
|
| 150 |
+
"gguf",
|
| 151 |
+
"lumynax",
|
| 152 |
+
"qwen",
|
| 153 |
+
"text"
|
| 154 |
+
],
|
| 155 |
+
"metadata": {
|
| 156 |
+
"hub_sha": "fe5491063e09af13dbdb7fa6cef7f57d5cecc14d",
|
| 157 |
+
"package_state": "prebuilt_gguf_release",
|
| 158 |
+
"public_status": "public and non-gated",
|
| 159 |
+
"validation_status": "pass",
|
| 160 |
+
"total_weight_size": 4683073536
|
| 161 |
+
}
|
| 162 |
+
},
|
| 163 |
+
{
|
| 164 |
+
"model_id": "lumynax-embed-bge-m3",
|
| 165 |
+
"repo_id": "AbteeXAILab/lumynax-embed-bge-m3",
|
| 166 |
+
"title": "LumynaX Embed BGE M3",
|
| 167 |
+
"family": "embedding",
|
| 168 |
+
"runtime": "python_embedding",
|
| 169 |
+
"modalities": [
|
| 170 |
+
"text",
|
| 171 |
+
"embedding"
|
| 172 |
+
],
|
| 173 |
+
"context_tokens": 8192,
|
| 174 |
+
"jurisdiction": "NZ",
|
| 175 |
+
"residency": [
|
| 176 |
+
"NZ"
|
| 177 |
+
],
|
| 178 |
+
"license_id": "see_model_card",
|
| 179 |
+
"quantization": "see_release_manifest",
|
| 180 |
+
"primary_artifact": "merged_model/pytorch_model.bin",
|
| 181 |
+
"active_params_b": null,
|
| 182 |
+
"total_params_b": null,
|
| 183 |
+
"quality_rank": 4,
|
| 184 |
+
"cost_rank": 4,
|
| 185 |
+
"sovereignty_tier": 2,
|
| 186 |
+
"supports_tools": false,
|
| 187 |
+
"supports_json": false,
|
| 188 |
+
"tags": [
|
| 189 |
+
"embedding",
|
| 190 |
+
"lumynax",
|
| 191 |
+
"text"
|
| 192 |
+
],
|
| 193 |
+
"metadata": {
|
| 194 |
+
"hub_sha": "05011e1f7ea9cbd714c8fef86695a498685750a8",
|
| 195 |
+
"package_state": "upstream_weights_hydrated_embedding",
|
| 196 |
+
"public_status": "public and non-gated",
|
| 197 |
+
"validation_status": "pass",
|
| 198 |
+
"total_weight_size": 2273250020
|
| 199 |
+
}
|
| 200 |
+
},
|
| 201 |
+
{
|
| 202 |
+
"model_id": "lumynax-embed-e5-mistral-7b",
|
| 203 |
+
"repo_id": "AbteeXAILab/lumynax-embed-e5-mistral-7b",
|
| 204 |
+
"title": "LumynaX Embed E5 Mistral 7B",
|
| 205 |
+
"family": "mistral",
|
| 206 |
+
"runtime": "python_embedding",
|
| 207 |
+
"modalities": [
|
| 208 |
+
"text",
|
| 209 |
+
"embedding"
|
| 210 |
+
],
|
| 211 |
+
"context_tokens": 8192,
|
| 212 |
+
"jurisdiction": "NZ",
|
| 213 |
+
"residency": [
|
| 214 |
+
"NZ"
|
| 215 |
+
],
|
| 216 |
+
"license_id": "see_model_card",
|
| 217 |
+
"quantization": "see_release_manifest",
|
| 218 |
+
"primary_artifact": "merged_model/model-00001-of-00002.safetensors",
|
| 219 |
+
"active_params_b": null,
|
| 220 |
+
"total_params_b": 7.0,
|
| 221 |
+
"quality_rank": 3,
|
| 222 |
+
"cost_rank": 8,
|
| 223 |
+
"sovereignty_tier": 2,
|
| 224 |
+
"supports_tools": false,
|
| 225 |
+
"supports_json": false,
|
| 226 |
+
"tags": [
|
| 227 |
+
"embedding",
|
| 228 |
+
"lumynax",
|
| 229 |
+
"mistral",
|
| 230 |
+
"text"
|
| 231 |
+
],
|
| 232 |
+
"metadata": {
|
| 233 |
+
"hub_sha": "0c8fc35c248b9bbc951df8904c97f41c51a883c2",
|
| 234 |
+
"package_state": "upstream_weights_hydrated_embedding",
|
| 235 |
+
"public_status": "public and non-gated",
|
| 236 |
+
"validation_status": "pass",
|
| 237 |
+
"total_weight_size": 14221351904
|
| 238 |
+
}
|
| 239 |
+
},
|
| 240 |
+
{
|
| 241 |
+
"model_id": "lumynax-frontier-minimax-m25-unsloth",
|
| 242 |
+
"repo_id": "AbteeXAILab/lumynax-frontier-minimax-m25-unsloth",
|
| 243 |
+
"title": "LumynaX Frontier MiniMax M2.5 Unsloth",
|
| 244 |
+
"family": "minimax",
|
| 245 |
+
"runtime": "llama_cpp",
|
| 246 |
+
"modalities": [
|
| 247 |
+
"text"
|
| 248 |
+
],
|
| 249 |
+
"context_tokens": 8192,
|
| 250 |
+
"jurisdiction": "NZ",
|
| 251 |
+
"residency": [
|
| 252 |
+
"NZ"
|
| 253 |
+
],
|
| 254 |
+
"license_id": "see_model_card",
|
| 255 |
+
"quantization": "see_release_manifest",
|
| 256 |
+
"primary_artifact": "MiniMax-M2.5-UD-TQ1_0.gguf",
|
| 257 |
+
"active_params_b": null,
|
| 258 |
+
"total_params_b": null,
|
| 259 |
+
"quality_rank": 1,
|
| 260 |
+
"cost_rank": 10,
|
| 261 |
+
"sovereignty_tier": 3,
|
| 262 |
+
"supports_tools": false,
|
| 263 |
+
"supports_json": true,
|
| 264 |
+
"tags": [
|
| 265 |
+
"frontier",
|
| 266 |
+
"general",
|
| 267 |
+
"lumynax",
|
| 268 |
+
"text"
|
| 269 |
+
],
|
| 270 |
+
"metadata": {
|
| 271 |
+
"hub_sha": "ff328be463825aedd9cec5b8f5fe3fce47f7547f",
|
| 272 |
+
"package_state": "prebuilt_gguf_release",
|
| 273 |
+
"public_status": "public and non-gated",
|
| 274 |
+
"validation_status": "pass",
|
| 275 |
+
"total_weight_size": 55765943424
|
| 276 |
+
}
|
| 277 |
+
},
|
| 278 |
+
{
|
| 279 |
+
"model_id": "lumynax-infused-gemma-e4b",
|
| 280 |
+
"repo_id": "AbteeXAILab/lumynax-infused-gemma-e4b",
|
| 281 |
+
"title": "LumynaX Infused Gemma E4B Model",
|
| 282 |
+
"family": "gemma",
|
| 283 |
+
"runtime": "transformers_multimodal",
|
| 284 |
+
"modalities": [
|
| 285 |
+
"text",
|
| 286 |
+
"image",
|
| 287 |
+
"audio"
|
| 288 |
+
],
|
| 289 |
+
"context_tokens": 4096,
|
| 290 |
+
"jurisdiction": "NZ",
|
| 291 |
+
"residency": [
|
| 292 |
+
"NZ"
|
| 293 |
+
],
|
| 294 |
+
"license_id": "see_model_card",
|
| 295 |
+
"quantization": "see_release_manifest",
|
| 296 |
+
"primary_artifact": "merged_model/model.safetensors",
|
| 297 |
+
"active_params_b": null,
|
| 298 |
+
"total_params_b": 4.0,
|
| 299 |
+
"quality_rank": 3,
|
| 300 |
+
"cost_rank": 8,
|
| 301 |
+
"sovereignty_tier": 2,
|
| 302 |
+
"supports_tools": false,
|
| 303 |
+
"supports_json": true,
|
| 304 |
+
"tags": [
|
| 305 |
+
"audio",
|
| 306 |
+
"gemma",
|
| 307 |
+
"general",
|
| 308 |
+
"image",
|
| 309 |
+
"lumynax",
|
| 310 |
+
"text"
|
| 311 |
+
],
|
| 312 |
+
"metadata": {
|
| 313 |
+
"hub_sha": "71c0d98bc3ac1b90d3d59dbc5505910e6edef6a6",
|
| 314 |
+
"package_state": "base_weights_hydrated",
|
| 315 |
+
"public_status": "public and non-gated",
|
| 316 |
+
"validation_status": "pass",
|
| 317 |
+
"total_weight_size": 15992595884
|
| 318 |
+
}
|
| 319 |
+
},
|
| 320 |
+
{
|
| 321 |
+
"model_id": "lumynax-infused-gemma-e4b-text-gguf",
|
| 322 |
+
"repo_id": "AbteeXAILab/lumynax-infused-gemma-e4b-text-gguf",
|
| 323 |
+
"title": "LumynaX Infused Gemma E4B Text GGUF",
|
| 324 |
+
"family": "gemma",
|
| 325 |
+
"runtime": "llama_cpp",
|
| 326 |
+
"modalities": [
|
| 327 |
+
"text"
|
| 328 |
+
],
|
| 329 |
+
"context_tokens": 8192,
|
| 330 |
+
"jurisdiction": "NZ",
|
| 331 |
+
"residency": [
|
| 332 |
+
"NZ"
|
| 333 |
+
],
|
| 334 |
+
"license_id": "see_model_card",
|
| 335 |
+
"quantization": "see_release_manifest",
|
| 336 |
+
"primary_artifact": "lumynax-infused-gemma-e4b-text-gguf-q4_k_m.gguf",
|
| 337 |
+
"active_params_b": null,
|
| 338 |
+
"total_params_b": 4.0,
|
| 339 |
+
"quality_rank": 3,
|
| 340 |
+
"cost_rank": 6,
|
| 341 |
+
"sovereignty_tier": 3,
|
| 342 |
+
"supports_tools": false,
|
| 343 |
+
"supports_json": true,
|
| 344 |
+
"tags": [
|
| 345 |
+
"gemma",
|
| 346 |
+
"general",
|
| 347 |
+
"gguf",
|
| 348 |
+
"lumynax",
|
| 349 |
+
"text"
|
| 350 |
+
],
|
| 351 |
+
"metadata": {
|
| 352 |
+
"hub_sha": "da670d4d4c080f93e37171d69f2e49cbe0740f4c",
|
| 353 |
+
"package_state": "hf_q4_runtime_bundle",
|
| 354 |
+
"public_status": "public and non-gated",
|
| 355 |
+
"validation_status": "pass",
|
| 356 |
+
"total_weight_size": 5335290080
|
| 357 |
+
}
|
| 358 |
+
},
|
| 359 |
+
{
|
| 360 |
+
"model_id": "lumynax-infused-gemma4-26b-a4b-gguf",
|
| 361 |
+
"repo_id": "AbteeXAILab/lumynax-infused-gemma4-26b-a4b-gguf",
|
| 362 |
+
"title": "LumynaX Infused Gemma4 26B A4B GGUF",
|
| 363 |
+
"family": "gemma",
|
| 364 |
+
"runtime": "llama_cpp",
|
| 365 |
+
"modalities": [
|
| 366 |
+
"text"
|
| 367 |
+
],
|
| 368 |
+
"context_tokens": 8192,
|
| 369 |
+
"jurisdiction": "NZ",
|
| 370 |
+
"residency": [
|
| 371 |
+
"NZ"
|
| 372 |
+
],
|
| 373 |
+
"license_id": "see_model_card",
|
| 374 |
+
"quantization": "see_release_manifest",
|
| 375 |
+
"primary_artifact": "lumynax-infused-gemma4-26b-a4b-ud-q4_k_m.gguf",
|
| 376 |
+
"active_params_b": 4.0,
|
| 377 |
+
"total_params_b": 26.0,
|
| 378 |
+
"quality_rank": 1,
|
| 379 |
+
"cost_rank": 8,
|
| 380 |
+
"sovereignty_tier": 3,
|
| 381 |
+
"supports_tools": false,
|
| 382 |
+
"supports_json": true,
|
| 383 |
+
"tags": [
|
| 384 |
+
"gemma",
|
| 385 |
+
"general",
|
| 386 |
+
"gguf",
|
| 387 |
+
"lumynax",
|
| 388 |
+
"text"
|
| 389 |
+
],
|
| 390 |
+
"metadata": {
|
| 391 |
+
"hub_sha": "9ac3619aaa892edf714fad37d566dcc75e3c63e6",
|
| 392 |
+
"package_state": "prebuilt_gguf_release",
|
| 393 |
+
"public_status": "public and non-gated",
|
| 394 |
+
"validation_status": "pass",
|
| 395 |
+
"total_weight_size": 16947539744
|
| 396 |
+
}
|
| 397 |
+
},
|
| 398 |
+
{
|
| 399 |
+
"model_id": "lumynax-infused-granite31-1b-a400m-gguf",
|
| 400 |
+
"repo_id": "AbteeXAILab/lumynax-infused-granite31-1b-a400m-gguf",
|
| 401 |
+
"title": "LumynaX Infused Granite 3.1 1B A400M Instruct GGUF",
|
| 402 |
+
"family": "granite",
|
| 403 |
+
"runtime": "llama_cpp",
|
| 404 |
+
"modalities": [
|
| 405 |
+
"text"
|
| 406 |
+
],
|
| 407 |
+
"context_tokens": 8192,
|
| 408 |
+
"jurisdiction": "NZ",
|
| 409 |
+
"residency": [
|
| 410 |
+
"NZ"
|
| 411 |
+
],
|
| 412 |
+
"license_id": "see_model_card",
|
| 413 |
+
"quantization": "see_release_manifest",
|
| 414 |
+
"primary_artifact": "granite-3.1-1b-a400m-instruct-Q4_K_M.gguf",
|
| 415 |
+
"active_params_b": null,
|
| 416 |
+
"total_params_b": 1.0,
|
| 417 |
+
"quality_rank": 5,
|
| 418 |
+
"cost_rank": 2,
|
| 419 |
+
"sovereignty_tier": 3,
|
| 420 |
+
"supports_tools": false,
|
| 421 |
+
"supports_json": true,
|
| 422 |
+
"tags": [
|
| 423 |
+
"general",
|
| 424 |
+
"gguf",
|
| 425 |
+
"granite",
|
| 426 |
+
"lumynax",
|
| 427 |
+
"text"
|
| 428 |
+
],
|
| 429 |
+
"metadata": {
|
| 430 |
+
"hub_sha": "4962677e55c151eb9540257318fd640ce1f002e7",
|
| 431 |
+
"package_state": "prebuilt_gguf_release",
|
| 432 |
+
"public_status": "public and non-gated",
|
| 433 |
+
"validation_status": "pass",
|
| 434 |
+
"total_weight_size": 821847360
|
| 435 |
+
}
|
| 436 |
+
},
|
| 437 |
+
{
|
| 438 |
+
"model_id": "lumynax-infused-granite33-2b-gguf",
|
| 439 |
+
"repo_id": "AbteeXAILab/lumynax-infused-granite33-2b-gguf",
|
| 440 |
+
"title": "LumynaX Infused Granite 3.3 2B Instruct GGUF",
|
| 441 |
+
"family": "granite",
|
| 442 |
+
"runtime": "llama_cpp",
|
| 443 |
+
"modalities": [
|
| 444 |
+
"text"
|
| 445 |
+
],
|
| 446 |
+
"context_tokens": 8192,
|
| 447 |
+
"jurisdiction": "NZ",
|
| 448 |
+
"residency": [
|
| 449 |
+
"NZ"
|
| 450 |
+
],
|
| 451 |
+
"license_id": "see_model_card",
|
| 452 |
+
"quantization": "see_release_manifest",
|
| 453 |
+
"primary_artifact": "granite-3.3-2b-instruct-Q4_K_M.gguf",
|
| 454 |
+
"active_params_b": null,
|
| 455 |
+
"total_params_b": 2.0,
|
| 456 |
+
"quality_rank": 4,
|
| 457 |
+
"cost_rank": 4,
|
| 458 |
+
"sovereignty_tier": 3,
|
| 459 |
+
"supports_tools": false,
|
| 460 |
+
"supports_json": true,
|
| 461 |
+
"tags": [
|
| 462 |
+
"general",
|
| 463 |
+
"gguf",
|
| 464 |
+
"granite",
|
| 465 |
+
"lumynax",
|
| 466 |
+
"text"
|
| 467 |
+
],
|
| 468 |
+
"metadata": {
|
| 469 |
+
"hub_sha": "008f69d6d7ed46cfa4a26e14f1a36ed7840ca86e",
|
| 470 |
+
"package_state": "prebuilt_gguf_release",
|
| 471 |
+
"public_status": "public and non-gated",
|
| 472 |
+
"validation_status": "pass",
|
| 473 |
+
"total_weight_size": 1545303328
|
| 474 |
+
}
|
| 475 |
+
},
|
| 476 |
+
{
|
| 477 |
+
"model_id": "lumynax-infused-granite33-8b-gguf",
|
| 478 |
+
"repo_id": "AbteeXAILab/lumynax-infused-granite33-8b-gguf",
|
| 479 |
+
"title": "LumynaX Infused Granite 3.3 8B Instruct GGUF",
|
| 480 |
+
"family": "granite",
|
| 481 |
+
"runtime": "llama_cpp",
|
| 482 |
+
"modalities": [
|
| 483 |
+
"text"
|
| 484 |
+
],
|
| 485 |
+
"context_tokens": 8192,
|
| 486 |
+
"jurisdiction": "NZ",
|
| 487 |
+
"residency": [
|
| 488 |
+
"NZ"
|
| 489 |
+
],
|
| 490 |
+
"license_id": "see_model_card",
|
| 491 |
+
"quantization": "see_release_manifest",
|
| 492 |
+
"primary_artifact": "granite-3.3-8b-instruct-Q4_K_M.gguf",
|
| 493 |
+
"active_params_b": null,
|
| 494 |
+
"total_params_b": 8.0,
|
| 495 |
+
"quality_rank": 3,
|
| 496 |
+
"cost_rank": 6,
|
| 497 |
+
"sovereignty_tier": 3,
|
| 498 |
+
"supports_tools": false,
|
| 499 |
+
"supports_json": true,
|
| 500 |
+
"tags": [
|
| 501 |
+
"general",
|
| 502 |
+
"gguf",
|
| 503 |
+
"granite",
|
| 504 |
+
"lumynax",
|
| 505 |
+
"text"
|
| 506 |
+
],
|
| 507 |
+
"metadata": {
|
| 508 |
+
"hub_sha": "9a73a865e7121274789cee80e6543444e034bb01",
|
| 509 |
+
"package_state": "prebuilt_gguf_release",
|
| 510 |
+
"public_status": "public and non-gated",
|
| 511 |
+
"validation_status": "pass",
|
| 512 |
+
"total_weight_size": 4942873344
|
| 513 |
+
}
|
| 514 |
+
},
|
| 515 |
+
{
|
| 516 |
+
"model_id": "lumynax-infused-mistral-7b-v03-gguf",
|
| 517 |
+
"repo_id": "AbteeXAILab/lumynax-infused-mistral-7b-v03-gguf",
|
| 518 |
+
"title": "LumynaX Infused Mistral 7B Instruct v0.3 GGUF",
|
| 519 |
+
"family": "mistral",
|
| 520 |
+
"runtime": "llama_cpp",
|
| 521 |
+
"modalities": [
|
| 522 |
+
"text"
|
| 523 |
+
],
|
| 524 |
+
"context_tokens": 8192,
|
| 525 |
+
"jurisdiction": "NZ",
|
| 526 |
+
"residency": [
|
| 527 |
+
"NZ"
|
| 528 |
+
],
|
| 529 |
+
"license_id": "see_model_card",
|
| 530 |
+
"quantization": "see_release_manifest",
|
| 531 |
+
"primary_artifact": "Mistral-7B-Instruct-v0.3-Q4_K_M.gguf",
|
| 532 |
+
"active_params_b": null,
|
| 533 |
+
"total_params_b": 7.0,
|
| 534 |
+
"quality_rank": 3,
|
| 535 |
+
"cost_rank": 6,
|
| 536 |
+
"sovereignty_tier": 3,
|
| 537 |
+
"supports_tools": false,
|
| 538 |
+
"supports_json": true,
|
| 539 |
+
"tags": [
|
| 540 |
+
"general",
|
| 541 |
+
"gguf",
|
| 542 |
+
"lumynax",
|
| 543 |
+
"mistral",
|
| 544 |
+
"text"
|
| 545 |
+
],
|
| 546 |
+
"metadata": {
|
| 547 |
+
"hub_sha": "b27abdbb78659b9577c68040838a4811bb2a4fc4",
|
| 548 |
+
"package_state": "prebuilt_gguf_release",
|
| 549 |
+
"public_status": "public and non-gated",
|
| 550 |
+
"validation_status": "pass",
|
| 551 |
+
"total_weight_size": 4372812000
|
| 552 |
+
}
|
| 553 |
+
},
|
| 554 |
+
{
|
| 555 |
+
"model_id": "lumynax-infused-mistral-small-text-gguf",
|
| 556 |
+
"repo_id": "AbteeXAILab/lumynax-infused-mistral-small-text-gguf",
|
| 557 |
+
"title": "LumynaX Infused Mistral Small Text GGUF",
|
| 558 |
+
"family": "mistral",
|
| 559 |
+
"runtime": "llama_cpp",
|
| 560 |
+
"modalities": [
|
| 561 |
+
"text"
|
| 562 |
+
],
|
| 563 |
+
"context_tokens": 8192,
|
| 564 |
+
"jurisdiction": "NZ",
|
| 565 |
+
"residency": [
|
| 566 |
+
"NZ"
|
| 567 |
+
],
|
| 568 |
+
"license_id": "see_model_card",
|
| 569 |
+
"quantization": "see_release_manifest",
|
| 570 |
+
"primary_artifact": "lumynax-infused-mistral-small-text-gguf-f16.gguf",
|
| 571 |
+
"active_params_b": null,
|
| 572 |
+
"total_params_b": null,
|
| 573 |
+
"quality_rank": 3,
|
| 574 |
+
"cost_rank": 10,
|
| 575 |
+
"sovereignty_tier": 3,
|
| 576 |
+
"supports_tools": false,
|
| 577 |
+
"supports_json": true,
|
| 578 |
+
"tags": [
|
| 579 |
+
"general",
|
| 580 |
+
"gguf",
|
| 581 |
+
"lumynax",
|
| 582 |
+
"mistral",
|
| 583 |
+
"text"
|
| 584 |
+
],
|
| 585 |
+
"metadata": {
|
| 586 |
+
"hub_sha": "f0dcbb1666de6f53212277f225ca5eb0901d9627",
|
| 587 |
+
"package_state": "base_weights_hydrated_text_gguf",
|
| 588 |
+
"public_status": "public and non-gated",
|
| 589 |
+
"validation_status": "pass",
|
| 590 |
+
"total_weight_size": 61488486400
|
| 591 |
+
}
|
| 592 |
+
},
|
| 593 |
+
{
|
| 594 |
+
"model_id": "lumynax-infused-olmo2-1b-0425-gguf",
|
| 595 |
+
"repo_id": "AbteeXAILab/lumynax-infused-olmo2-1b-0425-gguf",
|
| 596 |
+
"title": "LumynaX Infused OLMo 2 0425 1B Instruct GGUF",
|
| 597 |
+
"family": "olmo",
|
| 598 |
+
"runtime": "llama_cpp",
|
| 599 |
+
"modalities": [
|
| 600 |
+
"text"
|
| 601 |
+
],
|
| 602 |
+
"context_tokens": 8192,
|
| 603 |
+
"jurisdiction": "NZ",
|
| 604 |
+
"residency": [
|
| 605 |
+
"NZ"
|
| 606 |
+
],
|
| 607 |
+
"license_id": "see_model_card",
|
| 608 |
+
"quantization": "see_release_manifest",
|
| 609 |
+
"primary_artifact": "OLMo-2-0425-1B-Instruct-Q4_K_M.gguf",
|
| 610 |
+
"active_params_b": null,
|
| 611 |
+
"total_params_b": 1.0,
|
| 612 |
+
"quality_rank": 5,
|
| 613 |
+
"cost_rank": 2,
|
| 614 |
+
"sovereignty_tier": 3,
|
| 615 |
+
"supports_tools": false,
|
| 616 |
+
"supports_json": true,
|
| 617 |
+
"tags": [
|
| 618 |
+
"general",
|
| 619 |
+
"gguf",
|
| 620 |
+
"lumynax",
|
| 621 |
+
"text"
|
| 622 |
+
],
|
| 623 |
+
"metadata": {
|
| 624 |
+
"hub_sha": "6bbec139651766aaf4310e2affe44504a0bb3a02",
|
| 625 |
+
"package_state": "prebuilt_gguf_release",
|
| 626 |
+
"public_status": "public and non-gated",
|
| 627 |
+
"validation_status": "pass",
|
| 628 |
+
"total_weight_size": 935515296
|
| 629 |
+
}
|
| 630 |
+
},
|
| 631 |
+
{
|
| 632 |
+
"model_id": "lumynax-infused-olmo2-7b-1124-gguf",
|
| 633 |
+
"repo_id": "AbteeXAILab/lumynax-infused-olmo2-7b-1124-gguf",
|
| 634 |
+
"title": "LumynaX Infused OLMo 2 1124 7B Instruct GGUF",
|
| 635 |
+
"family": "olmo",
|
| 636 |
+
"runtime": "llama_cpp",
|
| 637 |
+
"modalities": [
|
| 638 |
+
"text"
|
| 639 |
+
],
|
| 640 |
+
"context_tokens": 8192,
|
| 641 |
+
"jurisdiction": "NZ",
|
| 642 |
+
"residency": [
|
| 643 |
+
"NZ"
|
| 644 |
+
],
|
| 645 |
+
"license_id": "see_model_card",
|
| 646 |
+
"quantization": "see_release_manifest",
|
| 647 |
+
"primary_artifact": "olmo-2-1124-7B-instruct-Q4_K_M.gguf",
|
| 648 |
+
"active_params_b": null,
|
| 649 |
+
"total_params_b": 7.0,
|
| 650 |
+
"quality_rank": 3,
|
| 651 |
+
"cost_rank": 6,
|
| 652 |
+
"sovereignty_tier": 3,
|
| 653 |
+
"supports_tools": false,
|
| 654 |
+
"supports_json": true,
|
| 655 |
+
"tags": [
|
| 656 |
+
"general",
|
| 657 |
+
"gguf",
|
| 658 |
+
"lumynax",
|
| 659 |
+
"text"
|
| 660 |
+
],
|
| 661 |
+
"metadata": {
|
| 662 |
+
"hub_sha": "c37a2b4ccca91a97d57058b33037a0ce2d32dd91",
|
| 663 |
+
"package_state": "prebuilt_gguf_release",
|
| 664 |
+
"public_status": "public and non-gated",
|
| 665 |
+
"validation_status": "pass",
|
| 666 |
+
"total_weight_size": 4472020256
|
| 667 |
+
}
|
| 668 |
+
},
|
| 669 |
+
{
|
| 670 |
+
"model_id": "lumynax-infused-phi-4-text-gguf",
|
| 671 |
+
"repo_id": "AbteeXAILab/lumynax-infused-phi-4-text-gguf",
|
| 672 |
+
"title": "LumynaX Infused Phi-4 Text GGUF",
|
| 673 |
+
"family": "phi",
|
| 674 |
+
"runtime": "llama_cpp",
|
| 675 |
+
"modalities": [
|
| 676 |
+
"text"
|
| 677 |
+
],
|
| 678 |
+
"context_tokens": 8192,
|
| 679 |
+
"jurisdiction": "NZ",
|
| 680 |
+
"residency": [
|
| 681 |
+
"NZ"
|
| 682 |
+
],
|
| 683 |
+
"license_id": "see_model_card",
|
| 684 |
+
"quantization": "see_release_manifest",
|
| 685 |
+
"primary_artifact": "lumynax-infused-phi-4-text-gguf-f16.gguf",
|
| 686 |
+
"active_params_b": null,
|
| 687 |
+
"total_params_b": null,
|
| 688 |
+
"quality_rank": 3,
|
| 689 |
+
"cost_rank": 10,
|
| 690 |
+
"sovereignty_tier": 3,
|
| 691 |
+
"supports_tools": false,
|
| 692 |
+
"supports_json": true,
|
| 693 |
+
"tags": [
|
| 694 |
+
"general",
|
| 695 |
+
"gguf",
|
| 696 |
+
"lumynax",
|
| 697 |
+
"phi",
|
| 698 |
+
"text"
|
| 699 |
+
],
|
| 700 |
+
"metadata": {
|
| 701 |
+
"hub_sha": "d1ea33475c83c3ce97e63789ab9699e5f534a639",
|
| 702 |
+
"package_state": "base_weights_hydrated_text_gguf",
|
| 703 |
+
"public_status": "public and non-gated",
|
| 704 |
+
"validation_status": "pass",
|
| 705 |
+
"total_weight_size": 38382657280
|
| 706 |
+
}
|
| 707 |
+
},
|
| 708 |
+
{
|
| 709 |
+
"model_id": "lumynax-infused-phi3-mini-4k-gguf",
|
| 710 |
+
"repo_id": "AbteeXAILab/lumynax-infused-phi3-mini-4k-gguf",
|
| 711 |
+
"title": "LumynaX Infused Phi-3 Mini 4K Instruct GGUF",
|
| 712 |
+
"family": "phi",
|
| 713 |
+
"runtime": "llama_cpp",
|
| 714 |
+
"modalities": [
|
| 715 |
+
"text"
|
| 716 |
+
],
|
| 717 |
+
"context_tokens": 8192,
|
| 718 |
+
"jurisdiction": "NZ",
|
| 719 |
+
"residency": [
|
| 720 |
+
"NZ"
|
| 721 |
+
],
|
| 722 |
+
"license_id": "see_model_card",
|
| 723 |
+
"quantization": "see_release_manifest",
|
| 724 |
+
"primary_artifact": "Phi-3-mini-4k-instruct-q4.gguf",
|
| 725 |
+
"active_params_b": null,
|
| 726 |
+
"total_params_b": null,
|
| 727 |
+
"quality_rank": 4,
|
| 728 |
+
"cost_rank": 4,
|
| 729 |
+
"sovereignty_tier": 3,
|
| 730 |
+
"supports_tools": false,
|
| 731 |
+
"supports_json": true,
|
| 732 |
+
"tags": [
|
| 733 |
+
"general",
|
| 734 |
+
"gguf",
|
| 735 |
+
"lumynax",
|
| 736 |
+
"phi",
|
| 737 |
+
"text"
|
| 738 |
+
],
|
| 739 |
+
"metadata": {
|
| 740 |
+
"hub_sha": "726f4baf5b38e0ea150aaac0c893735f5af8b5d3",
|
| 741 |
+
"package_state": "prebuilt_gguf_release",
|
| 742 |
+
"public_status": "public and non-gated",
|
| 743 |
+
"validation_status": "pass",
|
| 744 |
+
"total_weight_size": 2393231072
|
| 745 |
+
}
|
| 746 |
+
},
|
| 747 |
+
{
|
| 748 |
+
"model_id": "lumynax-infused-phi4-mini-instruct-gguf",
|
| 749 |
+
"repo_id": "AbteeXAILab/lumynax-infused-phi4-mini-instruct-gguf",
|
| 750 |
+
"title": "LumynaX Infused Phi-4 Mini Instruct GGUF",
|
| 751 |
+
"family": "phi",
|
| 752 |
+
"runtime": "llama_cpp",
|
| 753 |
+
"modalities": [
|
| 754 |
+
"text"
|
| 755 |
+
],
|
| 756 |
+
"context_tokens": 8192,
|
| 757 |
+
"jurisdiction": "NZ",
|
| 758 |
+
"residency": [
|
| 759 |
+
"NZ"
|
| 760 |
+
],
|
| 761 |
+
"license_id": "see_model_card",
|
| 762 |
+
"quantization": "see_release_manifest",
|
| 763 |
+
"primary_artifact": "Phi-4-mini-instruct-Q4_K_M.gguf",
|
| 764 |
+
"active_params_b": null,
|
| 765 |
+
"total_params_b": null,
|
| 766 |
+
"quality_rank": 4,
|
| 767 |
+
"cost_rank": 4,
|
| 768 |
+
"sovereignty_tier": 3,
|
| 769 |
+
"supports_tools": false,
|
| 770 |
+
"supports_json": true,
|
| 771 |
+
"tags": [
|
| 772 |
+
"general",
|
| 773 |
+
"gguf",
|
| 774 |
+
"lumynax",
|
| 775 |
+
"phi",
|
| 776 |
+
"text"
|
| 777 |
+
],
|
| 778 |
+
"metadata": {
|
| 779 |
+
"hub_sha": "0159c99af7f773fed806a9c298752698ebecfb74",
|
| 780 |
+
"package_state": "prebuilt_gguf_release",
|
| 781 |
+
"public_status": "public and non-gated",
|
| 782 |
+
"validation_status": "pass",
|
| 783 |
+
"total_weight_size": 2491874272
|
| 784 |
+
}
|
| 785 |
+
},
|
| 786 |
+
{
|
| 787 |
+
"model_id": "lumynax-infused-qwen2-audio-7b",
|
| 788 |
+
"repo_id": "AbteeXAILab/lumynax-infused-qwen2-audio-7b",
|
| 789 |
+
"title": "LumynaX Infused Qwen2 Audio 7B",
|
| 790 |
+
"family": "qwen",
|
| 791 |
+
"runtime": "transformers",
|
| 792 |
+
"modalities": [
|
| 793 |
+
"audio",
|
| 794 |
+
"text"
|
| 795 |
+
],
|
| 796 |
+
"context_tokens": 32768,
|
| 797 |
+
"jurisdiction": "NZ",
|
| 798 |
+
"residency": [
|
| 799 |
+
"NZ"
|
| 800 |
+
],
|
| 801 |
+
"license_id": "see_model_card",
|
| 802 |
+
"quantization": "see_release_manifest",
|
| 803 |
+
"primary_artifact": "merged_model/model-00003-of-00005.safetensors",
|
| 804 |
+
"active_params_b": null,
|
| 805 |
+
"total_params_b": 7.0,
|
| 806 |
+
"quality_rank": 3,
|
| 807 |
+
"cost_rank": 8,
|
| 808 |
+
"sovereignty_tier": 2,
|
| 809 |
+
"supports_tools": false,
|
| 810 |
+
"supports_json": true,
|
| 811 |
+
"tags": [
|
| 812 |
+
"audio",
|
| 813 |
+
"general",
|
| 814 |
+
"lumynax",
|
| 815 |
+
"qwen",
|
| 816 |
+
"text"
|
| 817 |
+
],
|
| 818 |
+
"metadata": {
|
| 819 |
+
"hub_sha": "e743d9eede8807f4a0ecff7d6d81a48c6bfd0aa9",
|
| 820 |
+
"package_state": "upstream_weights_hydrated_audio",
|
| 821 |
+
"public_status": "public and non-gated",
|
| 822 |
+
"validation_status": "pass",
|
| 823 |
+
"total_weight_size": 16794296368
|
| 824 |
+
}
|
| 825 |
+
},
|
| 826 |
+
{
|
| 827 |
+
"model_id": "lumynax-infused-qwen25-15b-instruct-gguf",
|
| 828 |
+
"repo_id": "AbteeXAILab/lumynax-infused-qwen25-15b-instruct-gguf",
|
| 829 |
+
"title": "LumynaX Infused Qwen2.5 1.5B Instruct GGUF",
|
| 830 |
+
"family": "qwen",
|
| 831 |
+
"runtime": "llama_cpp",
|
| 832 |
+
"modalities": [
|
| 833 |
+
"text"
|
| 834 |
+
],
|
| 835 |
+
"context_tokens": 32768,
|
| 836 |
+
"jurisdiction": "NZ",
|
| 837 |
+
"residency": [
|
| 838 |
+
"NZ"
|
| 839 |
+
],
|
| 840 |
+
"license_id": "see_model_card",
|
| 841 |
+
"quantization": "see_release_manifest",
|
| 842 |
+
"primary_artifact": "qwen2.5-1.5b-instruct-q4_k_m.gguf",
|
| 843 |
+
"active_params_b": null,
|
| 844 |
+
"total_params_b": 1.5,
|
| 845 |
+
"quality_rank": 4,
|
| 846 |
+
"cost_rank": 4,
|
| 847 |
+
"sovereignty_tier": 3,
|
| 848 |
+
"supports_tools": false,
|
| 849 |
+
"supports_json": true,
|
| 850 |
+
"tags": [
|
| 851 |
+
"general",
|
| 852 |
+
"gguf",
|
| 853 |
+
"lumynax",
|
| 854 |
+
"qwen",
|
| 855 |
+
"text"
|
| 856 |
+
],
|
| 857 |
+
"metadata": {
|
| 858 |
+
"hub_sha": "56236805876d7cde2954862e1dd3588a55a6912e",
|
| 859 |
+
"package_state": "prebuilt_gguf_release",
|
| 860 |
+
"public_status": "public and non-gated",
|
| 861 |
+
"validation_status": "pass",
|
| 862 |
+
"total_weight_size": 1117320736
|
| 863 |
+
}
|
| 864 |
+
},
|
| 865 |
+
{
|
| 866 |
+
"model_id": "lumynax-infused-qwen25-3b-instruct-gguf",
|
| 867 |
+
"repo_id": "AbteeXAILab/lumynax-infused-qwen25-3b-instruct-gguf",
|
| 868 |
+
"title": "LumynaX Infused Qwen2.5 3B Instruct GGUF",
|
| 869 |
+
"family": "qwen",
|
| 870 |
+
"runtime": "llama_cpp",
|
| 871 |
+
"modalities": [
|
| 872 |
+
"text"
|
| 873 |
+
],
|
| 874 |
+
"context_tokens": 32768,
|
| 875 |
+
"jurisdiction": "NZ",
|
| 876 |
+
"residency": [
|
| 877 |
+
"NZ"
|
| 878 |
+
],
|
| 879 |
+
"license_id": "see_model_card",
|
| 880 |
+
"quantization": "see_release_manifest",
|
| 881 |
+
"primary_artifact": "qwen2.5-3b-instruct-q4_k_m.gguf",
|
| 882 |
+
"active_params_b": null,
|
| 883 |
+
"total_params_b": 3.0,
|
| 884 |
+
"quality_rank": 4,
|
| 885 |
+
"cost_rank": 4,
|
| 886 |
+
"sovereignty_tier": 3,
|
| 887 |
+
"supports_tools": false,
|
| 888 |
+
"supports_json": true,
|
| 889 |
+
"tags": [
|
| 890 |
+
"general",
|
| 891 |
+
"gguf",
|
| 892 |
+
"lumynax",
|
| 893 |
+
"qwen",
|
| 894 |
+
"text"
|
| 895 |
+
],
|
| 896 |
+
"metadata": {
|
| 897 |
+
"hub_sha": "03272f747319be4d718c9feef64d5078bb8a0c07",
|
| 898 |
+
"package_state": "prebuilt_gguf_release",
|
| 899 |
+
"public_status": "public and non-gated",
|
| 900 |
+
"validation_status": "pass",
|
| 901 |
+
"total_weight_size": 2104932768
|
| 902 |
+
}
|
| 903 |
+
},
|
| 904 |
+
{
|
| 905 |
+
"model_id": "lumynax-infused-qwen25-7b-instruct-gguf",
|
| 906 |
+
"repo_id": "AbteeXAILab/lumynax-infused-qwen25-7b-instruct-gguf",
|
| 907 |
+
"title": "LumynaX Infused Qwen2.5 7B Instruct GGUF",
|
| 908 |
+
"family": "qwen",
|
| 909 |
+
"runtime": "llama_cpp",
|
| 910 |
+
"modalities": [
|
| 911 |
+
"text"
|
| 912 |
+
],
|
| 913 |
+
"context_tokens": 32768,
|
| 914 |
+
"jurisdiction": "NZ",
|
| 915 |
+
"residency": [
|
| 916 |
+
"NZ"
|
| 917 |
+
],
|
| 918 |
+
"license_id": "see_model_card",
|
| 919 |
+
"quantization": "see_release_manifest",
|
| 920 |
+
"primary_artifact": "qwen2.5-7b-instruct-q3_k_m.gguf",
|
| 921 |
+
"active_params_b": null,
|
| 922 |
+
"total_params_b": 7.0,
|
| 923 |
+
"quality_rank": 3,
|
| 924 |
+
"cost_rank": 4,
|
| 925 |
+
"sovereignty_tier": 3,
|
| 926 |
+
"supports_tools": false,
|
| 927 |
+
"supports_json": true,
|
| 928 |
+
"tags": [
|
| 929 |
+
"general",
|
| 930 |
+
"gguf",
|
| 931 |
+
"lumynax",
|
| 932 |
+
"qwen",
|
| 933 |
+
"text"
|
| 934 |
+
],
|
| 935 |
+
"metadata": {
|
| 936 |
+
"hub_sha": "a499dae1ce806b58f9727ca417615fd03958d115",
|
| 937 |
+
"package_state": "prebuilt_gguf_release",
|
| 938 |
+
"public_status": "public and non-gated",
|
| 939 |
+
"validation_status": "pass",
|
| 940 |
+
"total_weight_size": 3808391072
|
| 941 |
+
}
|
| 942 |
+
},
|
| 943 |
+
{
|
| 944 |
+
"model_id": "lumynax-infused-qwen25-omni-7b-voice",
|
| 945 |
+
"repo_id": "AbteeXAILab/lumynax-infused-qwen25-omni-7b-voice",
|
| 946 |
+
"title": "LumynaX Infused Qwen2.5 Omni 7B Voice",
|
| 947 |
+
"family": "qwen",
|
| 948 |
+
"runtime": "transformers",
|
| 949 |
+
"modalities": [
|
| 950 |
+
"audio",
|
| 951 |
+
"text"
|
| 952 |
+
],
|
| 953 |
+
"context_tokens": 32768,
|
| 954 |
+
"jurisdiction": "NZ",
|
| 955 |
+
"residency": [
|
| 956 |
+
"NZ"
|
| 957 |
+
],
|
| 958 |
+
"license_id": "see_model_card",
|
| 959 |
+
"quantization": "see_release_manifest",
|
| 960 |
+
"primary_artifact": "merged_model/model-00003-of-00005.safetensors",
|
| 961 |
+
"active_params_b": null,
|
| 962 |
+
"total_params_b": 7.0,
|
| 963 |
+
"quality_rank": 3,
|
| 964 |
+
"cost_rank": 10,
|
| 965 |
+
"sovereignty_tier": 2,
|
| 966 |
+
"supports_tools": false,
|
| 967 |
+
"supports_json": true,
|
| 968 |
+
"tags": [
|
| 969 |
+
"audio",
|
| 970 |
+
"general",
|
| 971 |
+
"lumynax",
|
| 972 |
+
"qwen",
|
| 973 |
+
"text",
|
| 974 |
+
"voice"
|
| 975 |
+
],
|
| 976 |
+
"metadata": {
|
| 977 |
+
"hub_sha": "8f2e5068851d87406998a678b3f69990fccb4ee3",
|
| 978 |
+
"package_state": "upstream_weights_hydrated_audio",
|
| 979 |
+
"public_status": "public and non-gated",
|
| 980 |
+
"validation_status": "pass",
|
| 981 |
+
"total_weight_size": 22362861192
|
| 982 |
+
}
|
| 983 |
+
},
|
| 984 |
+
{
|
| 985 |
+
"model_id": "lumynax-infused-qwen3-06b-gguf",
|
| 986 |
+
"repo_id": "AbteeXAILab/lumynax-infused-qwen3-06b-gguf",
|
| 987 |
+
"title": "LumynaX Infused Qwen3 0.6B GGUF",
|
| 988 |
+
"family": "qwen",
|
| 989 |
+
"runtime": "llama_cpp",
|
| 990 |
+
"modalities": [
|
| 991 |
+
"text"
|
| 992 |
+
],
|
| 993 |
+
"context_tokens": 32768,
|
| 994 |
+
"jurisdiction": "NZ",
|
| 995 |
+
"residency": [
|
| 996 |
+
"NZ"
|
| 997 |
+
],
|
| 998 |
+
"license_id": "see_model_card",
|
| 999 |
+
"quantization": "see_release_manifest",
|
| 1000 |
+
"primary_artifact": "Qwen3-0.6B-Q8_0.gguf",
|
| 1001 |
+
"active_params_b": null,
|
| 1002 |
+
"total_params_b": 0.6,
|
| 1003 |
+
"quality_rank": 5,
|
| 1004 |
+
"cost_rank": 2,
|
| 1005 |
+
"sovereignty_tier": 3,
|
| 1006 |
+
"supports_tools": false,
|
| 1007 |
+
"supports_json": true,
|
| 1008 |
+
"tags": [
|
| 1009 |
+
"general",
|
| 1010 |
+
"gguf",
|
| 1011 |
+
"lumynax",
|
| 1012 |
+
"qwen",
|
| 1013 |
+
"text"
|
| 1014 |
+
],
|
| 1015 |
+
"metadata": {
|
| 1016 |
+
"hub_sha": "1b61730d710869c3789fffcc422a4f15539cffcf",
|
| 1017 |
+
"package_state": "prebuilt_gguf_release",
|
| 1018 |
+
"public_status": "public and non-gated",
|
| 1019 |
+
"validation_status": "pass",
|
| 1020 |
+
"total_weight_size": 639446688
|
| 1021 |
+
}
|
| 1022 |
+
},
|
| 1023 |
+
{
|
| 1024 |
+
"model_id": "lumynax-infused-qwen3-14b-gguf",
|
| 1025 |
+
"repo_id": "AbteeXAILab/lumynax-infused-qwen3-14b-gguf",
|
| 1026 |
+
"title": "LumynaX Infused Qwen3 14B GGUF",
|
| 1027 |
+
"family": "qwen",
|
| 1028 |
+
"runtime": "llama_cpp",
|
| 1029 |
+
"modalities": [
|
| 1030 |
+
"text"
|
| 1031 |
+
],
|
| 1032 |
+
"context_tokens": 32768,
|
| 1033 |
+
"jurisdiction": "NZ",
|
| 1034 |
+
"residency": [
|
| 1035 |
+
"NZ"
|
| 1036 |
+
],
|
| 1037 |
+
"license_id": "see_model_card",
|
| 1038 |
+
"quantization": "see_release_manifest",
|
| 1039 |
+
"primary_artifact": "Qwen3-14B-Q4_K_M.gguf",
|
| 1040 |
+
"active_params_b": null,
|
| 1041 |
+
"total_params_b": 14.0,
|
| 1042 |
+
"quality_rank": 2,
|
| 1043 |
+
"cost_rank": 8,
|
| 1044 |
+
"sovereignty_tier": 3,
|
| 1045 |
+
"supports_tools": false,
|
| 1046 |
+
"supports_json": true,
|
| 1047 |
+
"tags": [
|
| 1048 |
+
"general",
|
| 1049 |
+
"gguf",
|
| 1050 |
+
"lumynax",
|
| 1051 |
+
"qwen",
|
| 1052 |
+
"text"
|
| 1053 |
+
],
|
| 1054 |
+
"metadata": {
|
| 1055 |
+
"hub_sha": "3fae690abff170d811eb5934efe6155621528d25",
|
| 1056 |
+
"package_state": "prebuilt_gguf_release",
|
| 1057 |
+
"public_status": "public and non-gated",
|
| 1058 |
+
"validation_status": "pass",
|
| 1059 |
+
"total_weight_size": 9001752960
|
| 1060 |
+
}
|
| 1061 |
+
},
|
| 1062 |
+
{
|
| 1063 |
+
"model_id": "lumynax-infused-qwen3-17b-gguf",
|
| 1064 |
+
"repo_id": "AbteeXAILab/lumynax-infused-qwen3-17b-gguf",
|
| 1065 |
+
"title": "LumynaX Infused Qwen3 1.7B GGUF",
|
| 1066 |
+
"family": "qwen",
|
| 1067 |
+
"runtime": "llama_cpp",
|
| 1068 |
+
"modalities": [
|
| 1069 |
+
"text"
|
| 1070 |
+
],
|
| 1071 |
+
"context_tokens": 32768,
|
| 1072 |
+
"jurisdiction": "NZ",
|
| 1073 |
+
"residency": [
|
| 1074 |
+
"NZ"
|
| 1075 |
+
],
|
| 1076 |
+
"license_id": "see_model_card",
|
| 1077 |
+
"quantization": "see_release_manifest",
|
| 1078 |
+
"primary_artifact": "Qwen3-1.7B-Q8_0.gguf",
|
| 1079 |
+
"active_params_b": null,
|
| 1080 |
+
"total_params_b": 1.7,
|
| 1081 |
+
"quality_rank": 5,
|
| 1082 |
+
"cost_rank": 4,
|
| 1083 |
+
"sovereignty_tier": 3,
|
| 1084 |
+
"supports_tools": false,
|
| 1085 |
+
"supports_json": true,
|
| 1086 |
+
"tags": [
|
| 1087 |
+
"general",
|
| 1088 |
+
"gguf",
|
| 1089 |
+
"lumynax",
|
| 1090 |
+
"qwen",
|
| 1091 |
+
"text"
|
| 1092 |
+
],
|
| 1093 |
+
"metadata": {
|
| 1094 |
+
"hub_sha": "5eb95b799e57e502872c9ed47e63580ee81558ff",
|
| 1095 |
+
"package_state": "prebuilt_gguf_release",
|
| 1096 |
+
"public_status": "public and non-gated",
|
| 1097 |
+
"validation_status": "pass",
|
| 1098 |
+
"total_weight_size": 1834426016
|
| 1099 |
+
}
|
| 1100 |
+
},
|
| 1101 |
+
{
|
| 1102 |
+
"model_id": "lumynax-infused-qwen3-30b-a3b-gguf",
|
| 1103 |
+
"repo_id": "AbteeXAILab/lumynax-infused-qwen3-30b-a3b-gguf",
|
| 1104 |
+
"title": "LumynaX Infused Qwen3 30B A3B GGUF",
|
| 1105 |
+
"family": "qwen",
|
| 1106 |
+
"runtime": "llama_cpp",
|
| 1107 |
+
"modalities": [
|
| 1108 |
+
"text"
|
| 1109 |
+
],
|
| 1110 |
+
"context_tokens": 32768,
|
| 1111 |
+
"jurisdiction": "NZ",
|
| 1112 |
+
"residency": [
|
| 1113 |
+
"NZ"
|
| 1114 |
+
],
|
| 1115 |
+
"license_id": "see_model_card",
|
| 1116 |
+
"quantization": "see_release_manifest",
|
| 1117 |
+
"primary_artifact": "lumynax-infused-qwen3-30b-a3b-q4_k_m.gguf",
|
| 1118 |
+
"active_params_b": 3.0,
|
| 1119 |
+
"total_params_b": 30.0,
|
| 1120 |
+
"quality_rank": 1,
|
| 1121 |
+
"cost_rank": 8,
|
| 1122 |
+
"sovereignty_tier": 3,
|
| 1123 |
+
"supports_tools": false,
|
| 1124 |
+
"supports_json": true,
|
| 1125 |
+
"tags": [
|
| 1126 |
+
"general",
|
| 1127 |
+
"gguf",
|
| 1128 |
+
"lumynax",
|
| 1129 |
+
"qwen",
|
| 1130 |
+
"text"
|
| 1131 |
+
],
|
| 1132 |
+
"metadata": {
|
| 1133 |
+
"hub_sha": "acfc6b800fc3979e419d4abfd51554b4d6e78abd",
|
| 1134 |
+
"package_state": "prebuilt_gguf_release",
|
| 1135 |
+
"public_status": "public and non-gated",
|
| 1136 |
+
"validation_status": "pass",
|
| 1137 |
+
"total_weight_size": 18556686912
|
| 1138 |
+
}
|
| 1139 |
+
},
|
| 1140 |
+
{
|
| 1141 |
+
"model_id": "lumynax-infused-qwen3-8b-gguf",
|
| 1142 |
+
"repo_id": "AbteeXAILab/lumynax-infused-qwen3-8b-gguf",
|
| 1143 |
+
"title": "LumynaX Infused Qwen3 8B GGUF",
|
| 1144 |
+
"family": "qwen",
|
| 1145 |
+
"runtime": "llama_cpp",
|
| 1146 |
+
"modalities": [
|
| 1147 |
+
"text"
|
| 1148 |
+
],
|
| 1149 |
+
"context_tokens": 32768,
|
| 1150 |
+
"jurisdiction": "NZ",
|
| 1151 |
+
"residency": [
|
| 1152 |
+
"NZ"
|
| 1153 |
+
],
|
| 1154 |
+
"license_id": "see_model_card",
|
| 1155 |
+
"quantization": "see_release_manifest",
|
| 1156 |
+
"primary_artifact": "lumynax-infused-qwen3-8b-q4_k_m.gguf",
|
| 1157 |
+
"active_params_b": null,
|
| 1158 |
+
"total_params_b": 8.0,
|
| 1159 |
+
"quality_rank": 3,
|
| 1160 |
+
"cost_rank": 6,
|
| 1161 |
+
"sovereignty_tier": 3,
|
| 1162 |
+
"supports_tools": false,
|
| 1163 |
+
"supports_json": true,
|
| 1164 |
+
"tags": [
|
| 1165 |
+
"general",
|
| 1166 |
+
"gguf",
|
| 1167 |
+
"lumynax",
|
| 1168 |
+
"qwen",
|
| 1169 |
+
"text"
|
| 1170 |
+
],
|
| 1171 |
+
"metadata": {
|
| 1172 |
+
"hub_sha": "c61c9a6fa0b95ec8a3da1912b897ca1fcc19d48a",
|
| 1173 |
+
"package_state": "prebuilt_gguf_release",
|
| 1174 |
+
"public_status": "public and non-gated",
|
| 1175 |
+
"validation_status": "pass",
|
| 1176 |
+
"total_weight_size": 5027783488
|
| 1177 |
+
}
|
| 1178 |
+
},
|
| 1179 |
+
{
|
| 1180 |
+
"model_id": "lumynax-infused-qwen3-coder-30b-a3b-gguf",
|
| 1181 |
+
"repo_id": "AbteeXAILab/lumynax-infused-qwen3-coder-30b-a3b-gguf",
|
| 1182 |
+
"title": "LumynaX Infused Qwen3 Coder 30B A3B GGUF",
|
| 1183 |
+
"family": "qwen",
|
| 1184 |
+
"runtime": "llama_cpp",
|
| 1185 |
+
"modalities": [
|
| 1186 |
+
"text"
|
| 1187 |
+
],
|
| 1188 |
+
"context_tokens": 32768,
|
| 1189 |
+
"jurisdiction": "NZ",
|
| 1190 |
+
"residency": [
|
| 1191 |
+
"NZ"
|
| 1192 |
+
],
|
| 1193 |
+
"license_id": "see_model_card",
|
| 1194 |
+
"quantization": "see_release_manifest",
|
| 1195 |
+
"primary_artifact": "lumynax-infused-qwen3-coder-30b-a3b-q4_k_m.gguf",
|
| 1196 |
+
"active_params_b": 3.0,
|
| 1197 |
+
"total_params_b": 30.0,
|
| 1198 |
+
"quality_rank": 1,
|
| 1199 |
+
"cost_rank": 8,
|
| 1200 |
+
"sovereignty_tier": 3,
|
| 1201 |
+
"supports_tools": true,
|
| 1202 |
+
"supports_json": true,
|
| 1203 |
+
"tags": [
|
| 1204 |
+
"coder",
|
| 1205 |
+
"gguf",
|
| 1206 |
+
"lumynax",
|
| 1207 |
+
"qwen",
|
| 1208 |
+
"text"
|
| 1209 |
+
],
|
| 1210 |
+
"metadata": {
|
| 1211 |
+
"hub_sha": "243f8578284934be06d3cb3d055de1b4a28059cc",
|
| 1212 |
+
"package_state": "prebuilt_gguf_release",
|
| 1213 |
+
"public_status": "public and non-gated",
|
| 1214 |
+
"validation_status": "pass",
|
| 1215 |
+
"total_weight_size": 18556689568
|
| 1216 |
+
}
|
| 1217 |
+
},
|
| 1218 |
+
{
|
| 1219 |
+
"model_id": "lumynax-infused-qwen3-text-gguf",
|
| 1220 |
+
"repo_id": "AbteeXAILab/lumynax-infused-qwen3-text-gguf",
|
| 1221 |
+
"title": "LumynaX Infused Qwen3 Text GGUF",
|
| 1222 |
+
"family": "qwen",
|
| 1223 |
+
"runtime": "llama_cpp",
|
| 1224 |
+
"modalities": [
|
| 1225 |
+
"text"
|
| 1226 |
+
],
|
| 1227 |
+
"context_tokens": 32768,
|
| 1228 |
+
"jurisdiction": "NZ",
|
| 1229 |
+
"residency": [
|
| 1230 |
+
"NZ"
|
| 1231 |
+
],
|
| 1232 |
+
"license_id": "see_model_card",
|
| 1233 |
+
"quantization": "see_release_manifest",
|
| 1234 |
+
"primary_artifact": "lumynax-infused-qwen3-text-gguf-f16.gguf",
|
| 1235 |
+
"active_params_b": null,
|
| 1236 |
+
"total_params_b": null,
|
| 1237 |
+
"quality_rank": 3,
|
| 1238 |
+
"cost_rank": 10,
|
| 1239 |
+
"sovereignty_tier": 3,
|
| 1240 |
+
"supports_tools": false,
|
| 1241 |
+
"supports_json": true,
|
| 1242 |
+
"tags": [
|
| 1243 |
+
"general",
|
| 1244 |
+
"gguf",
|
| 1245 |
+
"lumynax",
|
| 1246 |
+
"qwen",
|
| 1247 |
+
"text"
|
| 1248 |
+
],
|
| 1249 |
+
"metadata": {
|
| 1250 |
+
"hub_sha": "405002e7153a01f4fcc96d610f6af761de8c0574",
|
| 1251 |
+
"package_state": "base_weights_hydrated_text_gguf",
|
| 1252 |
+
"public_status": "public and non-gated",
|
| 1253 |
+
"validation_status": "pass",
|
| 1254 |
+
"total_weight_size": 37797343976
|
| 1255 |
+
}
|
| 1256 |
+
},
|
| 1257 |
+
{
|
| 1258 |
+
"model_id": "lumynax-infused-smollm-135m-gguf",
|
| 1259 |
+
"repo_id": "AbteeXAILab/lumynax-infused-smollm-135m-gguf",
|
| 1260 |
+
"title": "LumynaX Infused SmolLM 135M Instruct GGUF",
|
| 1261 |
+
"family": "smollm",
|
| 1262 |
+
"runtime": "llama_cpp",
|
| 1263 |
+
"modalities": [
|
| 1264 |
+
"text"
|
| 1265 |
+
],
|
| 1266 |
+
"context_tokens": 8192,
|
| 1267 |
+
"jurisdiction": "NZ",
|
| 1268 |
+
"residency": [
|
| 1269 |
+
"NZ"
|
| 1270 |
+
],
|
| 1271 |
+
"license_id": "see_model_card",
|
| 1272 |
+
"quantization": "see_release_manifest",
|
| 1273 |
+
"primary_artifact": "SmolLM-135M-Instruct.Q4_K_M.gguf",
|
| 1274 |
+
"active_params_b": null,
|
| 1275 |
+
"total_params_b": null,
|
| 1276 |
+
"quality_rank": 5,
|
| 1277 |
+
"cost_rank": 2,
|
| 1278 |
+
"sovereignty_tier": 3,
|
| 1279 |
+
"supports_tools": false,
|
| 1280 |
+
"supports_json": true,
|
| 1281 |
+
"tags": [
|
| 1282 |
+
"general",
|
| 1283 |
+
"gguf",
|
| 1284 |
+
"lumynax",
|
| 1285 |
+
"smollm",
|
| 1286 |
+
"text"
|
| 1287 |
+
],
|
| 1288 |
+
"metadata": {
|
| 1289 |
+
"hub_sha": "192518901ec475229151f3ce654a866a47a2a6f3",
|
| 1290 |
+
"package_state": "prebuilt_gguf_release",
|
| 1291 |
+
"public_status": "public and non-gated",
|
| 1292 |
+
"validation_status": "pass",
|
| 1293 |
+
"total_weight_size": 105454208
|
| 1294 |
+
}
|
| 1295 |
+
},
|
| 1296 |
+
{
|
| 1297 |
+
"model_id": "lumynax-infused-smollm2-17b-gguf",
|
| 1298 |
+
"repo_id": "AbteeXAILab/lumynax-infused-smollm2-17b-gguf",
|
| 1299 |
+
"title": "LumynaX Infused SmolLM2 1.7B Instruct GGUF",
|
| 1300 |
+
"family": "smollm",
|
| 1301 |
+
"runtime": "llama_cpp",
|
| 1302 |
+
"modalities": [
|
| 1303 |
+
"text"
|
| 1304 |
+
],
|
| 1305 |
+
"context_tokens": 8192,
|
| 1306 |
+
"jurisdiction": "NZ",
|
| 1307 |
+
"residency": [
|
| 1308 |
+
"NZ"
|
| 1309 |
+
],
|
| 1310 |
+
"license_id": "see_model_card",
|
| 1311 |
+
"quantization": "see_release_manifest",
|
| 1312 |
+
"primary_artifact": "smollm2-1.7b-instruct-q4_k_m.gguf",
|
| 1313 |
+
"active_params_b": null,
|
| 1314 |
+
"total_params_b": 1.7,
|
| 1315 |
+
"quality_rank": 5,
|
| 1316 |
+
"cost_rank": 4,
|
| 1317 |
+
"sovereignty_tier": 3,
|
| 1318 |
+
"supports_tools": false,
|
| 1319 |
+
"supports_json": true,
|
| 1320 |
+
"tags": [
|
| 1321 |
+
"general",
|
| 1322 |
+
"gguf",
|
| 1323 |
+
"lumynax",
|
| 1324 |
+
"smollm",
|
| 1325 |
+
"text"
|
| 1326 |
+
],
|
| 1327 |
+
"metadata": {
|
| 1328 |
+
"hub_sha": "b71d0ad33a3e8f2f1582ceba7520e086a665bf46",
|
| 1329 |
+
"package_state": "prebuilt_gguf_release",
|
| 1330 |
+
"public_status": "public and non-gated",
|
| 1331 |
+
"validation_status": "pass",
|
| 1332 |
+
"total_weight_size": 1055609536
|
| 1333 |
+
}
|
| 1334 |
+
},
|
| 1335 |
+
{
|
| 1336 |
+
"model_id": "lumynax-infused-smollm2-360m-gguf",
|
| 1337 |
+
"repo_id": "AbteeXAILab/lumynax-infused-smollm2-360m-gguf",
|
| 1338 |
+
"title": "LumynaX Infused SmolLM2 360M Instruct GGUF",
|
| 1339 |
+
"family": "smollm",
|
| 1340 |
+
"runtime": "llama_cpp",
|
| 1341 |
+
"modalities": [
|
| 1342 |
+
"text"
|
| 1343 |
+
],
|
| 1344 |
+
"context_tokens": 8192,
|
| 1345 |
+
"jurisdiction": "NZ",
|
| 1346 |
+
"residency": [
|
| 1347 |
+
"NZ"
|
| 1348 |
+
],
|
| 1349 |
+
"license_id": "see_model_card",
|
| 1350 |
+
"quantization": "see_release_manifest",
|
| 1351 |
+
"primary_artifact": "smollm2-360m-instruct-q8_0.gguf",
|
| 1352 |
+
"active_params_b": null,
|
| 1353 |
+
"total_params_b": null,
|
| 1354 |
+
"quality_rank": 5,
|
| 1355 |
+
"cost_rank": 2,
|
| 1356 |
+
"sovereignty_tier": 3,
|
| 1357 |
+
"supports_tools": false,
|
| 1358 |
+
"supports_json": true,
|
| 1359 |
+
"tags": [
|
| 1360 |
+
"general",
|
| 1361 |
+
"gguf",
|
| 1362 |
+
"lumynax",
|
| 1363 |
+
"smollm",
|
| 1364 |
+
"text"
|
| 1365 |
+
],
|
| 1366 |
+
"metadata": {
|
| 1367 |
+
"hub_sha": "a808313b05ac18b70e2b4de03a0ddb238d545c74",
|
| 1368 |
+
"package_state": "prebuilt_gguf_release",
|
| 1369 |
+
"public_status": "public and non-gated",
|
| 1370 |
+
"validation_status": "pass",
|
| 1371 |
+
"total_weight_size": 386404992
|
| 1372 |
+
}
|
| 1373 |
+
},
|
| 1374 |
+
{
|
| 1375 |
+
"model_id": "lumynax-infused-smollm3-3b-gguf",
|
| 1376 |
+
"repo_id": "AbteeXAILab/lumynax-infused-smollm3-3b-gguf",
|
| 1377 |
+
"title": "LumynaX Infused SmolLM3 3B GGUF",
|
| 1378 |
+
"family": "smollm",
|
| 1379 |
+
"runtime": "llama_cpp",
|
| 1380 |
+
"modalities": [
|
| 1381 |
+
"text"
|
| 1382 |
+
],
|
| 1383 |
+
"context_tokens": 8192,
|
| 1384 |
+
"jurisdiction": "NZ",
|
| 1385 |
+
"residency": [
|
| 1386 |
+
"NZ"
|
| 1387 |
+
],
|
| 1388 |
+
"license_id": "see_model_card",
|
| 1389 |
+
"quantization": "see_release_manifest",
|
| 1390 |
+
"primary_artifact": "SmolLM3-Q4_K_M.gguf",
|
| 1391 |
+
"active_params_b": null,
|
| 1392 |
+
"total_params_b": 3.0,
|
| 1393 |
+
"quality_rank": 4,
|
| 1394 |
+
"cost_rank": 4,
|
| 1395 |
+
"sovereignty_tier": 3,
|
| 1396 |
+
"supports_tools": false,
|
| 1397 |
+
"supports_json": true,
|
| 1398 |
+
"tags": [
|
| 1399 |
+
"general",
|
| 1400 |
+
"gguf",
|
| 1401 |
+
"lumynax",
|
| 1402 |
+
"smollm",
|
| 1403 |
+
"text"
|
| 1404 |
+
],
|
| 1405 |
+
"metadata": {
|
| 1406 |
+
"hub_sha": "3cbfc3ed26da900885f8135bfcbd4331a6c5b5b9",
|
| 1407 |
+
"package_state": "prebuilt_gguf_release",
|
| 1408 |
+
"public_status": "public and non-gated",
|
| 1409 |
+
"validation_status": "pass",
|
| 1410 |
+
"total_weight_size": 1915305312
|
| 1411 |
+
}
|
| 1412 |
+
},
|
| 1413 |
+
{
|
| 1414 |
+
"model_id": "lumynax-infused-zephyr-7b-beta-gguf",
|
| 1415 |
+
"repo_id": "AbteeXAILab/lumynax-infused-zephyr-7b-beta-gguf",
|
| 1416 |
+
"title": "LumynaX Infused Zephyr 7B Beta GGUF",
|
| 1417 |
+
"family": "lumynax",
|
| 1418 |
+
"runtime": "llama_cpp",
|
| 1419 |
+
"modalities": [
|
| 1420 |
+
"text"
|
| 1421 |
+
],
|
| 1422 |
+
"context_tokens": 8192,
|
| 1423 |
+
"jurisdiction": "NZ",
|
| 1424 |
+
"residency": [
|
| 1425 |
+
"NZ"
|
| 1426 |
+
],
|
| 1427 |
+
"license_id": "see_model_card",
|
| 1428 |
+
"quantization": "see_release_manifest",
|
| 1429 |
+
"primary_artifact": "zephyr-7b-beta.Q4_K_M.gguf",
|
| 1430 |
+
"active_params_b": null,
|
| 1431 |
+
"total_params_b": 7.0,
|
| 1432 |
+
"quality_rank": 3,
|
| 1433 |
+
"cost_rank": 6,
|
| 1434 |
+
"sovereignty_tier": 3,
|
| 1435 |
+
"supports_tools": false,
|
| 1436 |
+
"supports_json": true,
|
| 1437 |
+
"tags": [
|
| 1438 |
+
"general",
|
| 1439 |
+
"gguf",
|
| 1440 |
+
"lumynax",
|
| 1441 |
+
"text"
|
| 1442 |
+
],
|
| 1443 |
+
"metadata": {
|
| 1444 |
+
"hub_sha": "790aa3f7411fbd5b6ae8af3eedbefaf5c23c5a60",
|
| 1445 |
+
"package_state": "prebuilt_gguf_release",
|
| 1446 |
+
"public_status": "public and non-gated",
|
| 1447 |
+
"validation_status": "pass",
|
| 1448 |
+
"total_weight_size": 4368438976
|
| 1449 |
+
}
|
| 1450 |
+
},
|
| 1451 |
+
{
|
| 1452 |
+
"model_id": "lumynax-moe-moonlight-16b-a3b-gguf",
|
| 1453 |
+
"repo_id": "AbteeXAILab/lumynax-moe-moonlight-16b-a3b-gguf",
|
| 1454 |
+
"title": "LumynaX MoE Moonlight 16B A3B GGUF",
|
| 1455 |
+
"family": "lumynax",
|
| 1456 |
+
"runtime": "llama_cpp",
|
| 1457 |
+
"modalities": [
|
| 1458 |
+
"text"
|
| 1459 |
+
],
|
| 1460 |
+
"context_tokens": 8192,
|
| 1461 |
+
"jurisdiction": "NZ",
|
| 1462 |
+
"residency": [
|
| 1463 |
+
"NZ"
|
| 1464 |
+
],
|
| 1465 |
+
"license_id": "see_model_card",
|
| 1466 |
+
"quantization": "see_release_manifest",
|
| 1467 |
+
"primary_artifact": "lumynax-moe-moonlight-16b-a3b-iq4_xs.gguf",
|
| 1468 |
+
"active_params_b": 3.0,
|
| 1469 |
+
"total_params_b": 16.0,
|
| 1470 |
+
"quality_rank": 3,
|
| 1471 |
+
"cost_rank": 6,
|
| 1472 |
+
"sovereignty_tier": 3,
|
| 1473 |
+
"supports_tools": false,
|
| 1474 |
+
"supports_json": true,
|
| 1475 |
+
"tags": [
|
| 1476 |
+
"general",
|
| 1477 |
+
"gguf",
|
| 1478 |
+
"lumynax",
|
| 1479 |
+
"moe",
|
| 1480 |
+
"text"
|
| 1481 |
+
],
|
| 1482 |
+
"metadata": {
|
| 1483 |
+
"hub_sha": "88926e39e3730c2d2bfe00088404fce8217c1c74",
|
| 1484 |
+
"package_state": "prebuilt_gguf_release",
|
| 1485 |
+
"public_status": "public and non-gated",
|
| 1486 |
+
"validation_status": "pass",
|
| 1487 |
+
"total_weight_size": 8744947840
|
| 1488 |
+
}
|
| 1489 |
+
},
|
| 1490 |
+
{
|
| 1491 |
+
"model_id": "lumynax-moe-olmoe-1b-7b-gguf",
|
| 1492 |
+
"repo_id": "AbteeXAILab/lumynax-moe-olmoe-1b-7b-gguf",
|
| 1493 |
+
"title": "LumynaX MoE OLMoE 1B-7B Instruct GGUF",
|
| 1494 |
+
"family": "olmo",
|
| 1495 |
+
"runtime": "llama_cpp",
|
| 1496 |
+
"modalities": [
|
| 1497 |
+
"text"
|
| 1498 |
+
],
|
| 1499 |
+
"context_tokens": 8192,
|
| 1500 |
+
"jurisdiction": "NZ",
|
| 1501 |
+
"residency": [
|
| 1502 |
+
"NZ"
|
| 1503 |
+
],
|
| 1504 |
+
"license_id": "see_model_card",
|
| 1505 |
+
"quantization": "see_release_manifest",
|
| 1506 |
+
"primary_artifact": "olmoe-1b-7b-0924-instruct-q4_k_m.gguf",
|
| 1507 |
+
"active_params_b": null,
|
| 1508 |
+
"total_params_b": 1.0,
|
| 1509 |
+
"quality_rank": 3,
|
| 1510 |
+
"cost_rank": 6,
|
| 1511 |
+
"sovereignty_tier": 3,
|
| 1512 |
+
"supports_tools": false,
|
| 1513 |
+
"supports_json": true,
|
| 1514 |
+
"tags": [
|
| 1515 |
+
"general",
|
| 1516 |
+
"gguf",
|
| 1517 |
+
"lumynax",
|
| 1518 |
+
"moe",
|
| 1519 |
+
"text"
|
| 1520 |
+
],
|
| 1521 |
+
"metadata": {
|
| 1522 |
+
"hub_sha": "4515dabcc14be52616348757c7195a8bb2e490f8",
|
| 1523 |
+
"package_state": "prebuilt_gguf_release",
|
| 1524 |
+
"public_status": "public and non-gated",
|
| 1525 |
+
"validation_status": "pass",
|
| 1526 |
+
"total_weight_size": 4213512672
|
| 1527 |
+
}
|
| 1528 |
+
},
|
| 1529 |
+
{
|
| 1530 |
+
"model_id": "lumynax-multimodal-glm46v-flash",
|
| 1531 |
+
"repo_id": "AbteeXAILab/lumynax-multimodal-glm46v-flash",
|
| 1532 |
+
"title": "LumynaX Multimodal GLM 4.6V Flash",
|
| 1533 |
+
"family": "lumynax",
|
| 1534 |
+
"runtime": "llama_cpp_multimodal",
|
| 1535 |
+
"modalities": [
|
| 1536 |
+
"text",
|
| 1537 |
+
"image"
|
| 1538 |
+
],
|
| 1539 |
+
"context_tokens": 4096,
|
| 1540 |
+
"jurisdiction": "NZ",
|
| 1541 |
+
"residency": [
|
| 1542 |
+
"NZ"
|
| 1543 |
+
],
|
| 1544 |
+
"license_id": "see_model_card",
|
| 1545 |
+
"quantization": "see_release_manifest",
|
| 1546 |
+
"primary_artifact": "lumynax-multimodal-glm46v-flash-ud-iq2_m.gguf",
|
| 1547 |
+
"active_params_b": null,
|
| 1548 |
+
"total_params_b": null,
|
| 1549 |
+
"quality_rank": 3,
|
| 1550 |
+
"cost_rank": 6,
|
| 1551 |
+
"sovereignty_tier": 2,
|
| 1552 |
+
"supports_tools": false,
|
| 1553 |
+
"supports_json": true,
|
| 1554 |
+
"tags": [
|
| 1555 |
+
"image",
|
| 1556 |
+
"lumynax",
|
| 1557 |
+
"multimodal",
|
| 1558 |
+
"text"
|
| 1559 |
+
],
|
| 1560 |
+
"metadata": {
|
| 1561 |
+
"hub_sha": "3f0a751fedde7cd6a3b8a083b7bdf128c8ca3ccd",
|
| 1562 |
+
"package_state": "prebuilt_gguf_release",
|
| 1563 |
+
"public_status": "public and non-gated",
|
| 1564 |
+
"validation_status": "pass",
|
| 1565 |
+
"total_weight_size": 5778988768
|
| 1566 |
+
}
|
| 1567 |
+
},
|
| 1568 |
+
{
|
| 1569 |
+
"model_id": "lumynax-multimodal-kimi-vl-a3b-thinking",
|
| 1570 |
+
"repo_id": "AbteeXAILab/lumynax-multimodal-kimi-vl-a3b-thinking",
|
| 1571 |
+
"title": "LumynaX Multimodal Kimi VL A3B Thinking",
|
| 1572 |
+
"family": "kimi",
|
| 1573 |
+
"runtime": "llama_cpp_multimodal",
|
| 1574 |
+
"modalities": [
|
| 1575 |
+
"text",
|
| 1576 |
+
"image"
|
| 1577 |
+
],
|
| 1578 |
+
"context_tokens": 4096,
|
| 1579 |
+
"jurisdiction": "NZ",
|
| 1580 |
+
"residency": [
|
| 1581 |
+
"NZ"
|
| 1582 |
+
],
|
| 1583 |
+
"license_id": "see_model_card",
|
| 1584 |
+
"quantization": "see_release_manifest",
|
| 1585 |
+
"primary_artifact": "lumynax-multimodal-kimi-vl-a3b-thinking-q4_k_m.gguf",
|
| 1586 |
+
"active_params_b": 3.0,
|
| 1587 |
+
"total_params_b": 3.0,
|
| 1588 |
+
"quality_rank": 3,
|
| 1589 |
+
"cost_rank": 8,
|
| 1590 |
+
"sovereignty_tier": 2,
|
| 1591 |
+
"supports_tools": false,
|
| 1592 |
+
"supports_json": true,
|
| 1593 |
+
"tags": [
|
| 1594 |
+
"image",
|
| 1595 |
+
"kimi",
|
| 1596 |
+
"lumynax",
|
| 1597 |
+
"multimodal",
|
| 1598 |
+
"text"
|
| 1599 |
+
],
|
| 1600 |
+
"metadata": {
|
| 1601 |
+
"hub_sha": "460182aeb56feb94262a59e274be38f3b9638188",
|
| 1602 |
+
"package_state": "prebuilt_gguf_release",
|
| 1603 |
+
"public_status": "public and non-gated",
|
| 1604 |
+
"validation_status": "pass",
|
| 1605 |
+
"total_weight_size": 11158846304
|
| 1606 |
+
}
|
| 1607 |
+
},
|
| 1608 |
+
{
|
| 1609 |
+
"model_id": "lumynax-nz-3b",
|
| 1610 |
+
"repo_id": "AbteeXAILab/lumynax-nz-3b",
|
| 1611 |
+
"title": "LumynaX NZ 3B V1",
|
| 1612 |
+
"family": "lumynax",
|
| 1613 |
+
"runtime": "transformers",
|
| 1614 |
+
"modalities": [
|
| 1615 |
+
"text"
|
| 1616 |
+
],
|
| 1617 |
+
"context_tokens": 4096,
|
| 1618 |
+
"jurisdiction": "NZ",
|
| 1619 |
+
"residency": [
|
| 1620 |
+
"NZ"
|
| 1621 |
+
],
|
| 1622 |
+
"license_id": "see_model_card",
|
| 1623 |
+
"quantization": "see_release_manifest",
|
| 1624 |
+
"primary_artifact": "merged_model/model-00001-of-00055.safetensors",
|
| 1625 |
+
"active_params_b": null,
|
| 1626 |
+
"total_params_b": 3.0,
|
| 1627 |
+
"quality_rank": 3,
|
| 1628 |
+
"cost_rank": 8,
|
| 1629 |
+
"sovereignty_tier": 2,
|
| 1630 |
+
"supports_tools": false,
|
| 1631 |
+
"supports_json": true,
|
| 1632 |
+
"tags": [
|
| 1633 |
+
"general",
|
| 1634 |
+
"lumynax",
|
| 1635 |
+
"text"
|
| 1636 |
+
],
|
| 1637 |
+
"metadata": {
|
| 1638 |
+
"hub_sha": "190ba7e1a81e9e980a8cf44d4a9d53dedca6322c",
|
| 1639 |
+
"package_state": "standalone_dense_model",
|
| 1640 |
+
"public_status": "public and non-gated",
|
| 1641 |
+
"validation_status": "pass",
|
| 1642 |
+
"total_weight_size": 12343804840
|
| 1643 |
+
}
|
| 1644 |
+
},
|
| 1645 |
+
{
|
| 1646 |
+
"model_id": "lumynax-nz-qwen25-coder-3b-gguf",
|
| 1647 |
+
"repo_id": "AbteeXAILab/lumynax-nz-qwen25-coder-3b-gguf",
|
| 1648 |
+
"title": "LumynaX NZ Qwen2.5 Coder 3B GGUF",
|
| 1649 |
+
"family": "qwen",
|
| 1650 |
+
"runtime": "llama_cpp",
|
| 1651 |
+
"modalities": [
|
| 1652 |
+
"text"
|
| 1653 |
+
],
|
| 1654 |
+
"context_tokens": 32768,
|
| 1655 |
+
"jurisdiction": "NZ",
|
| 1656 |
+
"residency": [
|
| 1657 |
+
"NZ"
|
| 1658 |
+
],
|
| 1659 |
+
"license_id": "see_model_card",
|
| 1660 |
+
"quantization": "see_release_manifest",
|
| 1661 |
+
"primary_artifact": "lumynax-nz-qwen25-coder-3b-q4_k_m.gguf",
|
| 1662 |
+
"active_params_b": null,
|
| 1663 |
+
"total_params_b": 3.0,
|
| 1664 |
+
"quality_rank": 4,
|
| 1665 |
+
"cost_rank": 4,
|
| 1666 |
+
"sovereignty_tier": 3,
|
| 1667 |
+
"supports_tools": true,
|
| 1668 |
+
"supports_json": true,
|
| 1669 |
+
"tags": [
|
| 1670 |
+
"coder",
|
| 1671 |
+
"gguf",
|
| 1672 |
+
"lumynax",
|
| 1673 |
+
"qwen",
|
| 1674 |
+
"text"
|
| 1675 |
+
],
|
| 1676 |
+
"metadata": {
|
| 1677 |
+
"hub_sha": "b6603695131d11f937f8bd06b77985f1affd8398",
|
| 1678 |
+
"package_state": "prebuilt_gguf_release",
|
| 1679 |
+
"public_status": "public and non-gated",
|
| 1680 |
+
"validation_status": "pass",
|
| 1681 |
+
"total_weight_size": 2104932800
|
| 1682 |
+
}
|
| 1683 |
+
},
|
| 1684 |
+
{
|
| 1685 |
+
"model_id": "lumynax-reasoning-deepseek-distill-text-gguf",
|
| 1686 |
+
"repo_id": "AbteeXAILab/lumynax-reasoning-deepseek-distill-text-gguf",
|
| 1687 |
+
"title": "LumynaX Reasoning DeepSeek Distill Text GGUF",
|
| 1688 |
+
"family": "deepseek",
|
| 1689 |
+
"runtime": "llama_cpp",
|
| 1690 |
+
"modalities": [
|
| 1691 |
+
"text"
|
| 1692 |
+
],
|
| 1693 |
+
"context_tokens": 8192,
|
| 1694 |
+
"jurisdiction": "NZ",
|
| 1695 |
+
"residency": [
|
| 1696 |
+
"NZ"
|
| 1697 |
+
],
|
| 1698 |
+
"license_id": "see_model_card",
|
| 1699 |
+
"quantization": "see_release_manifest",
|
| 1700 |
+
"primary_artifact": "lumynax-reasoning-deepseek-distill-text-gguf-f16.gguf",
|
| 1701 |
+
"active_params_b": null,
|
| 1702 |
+
"total_params_b": null,
|
| 1703 |
+
"quality_rank": 2,
|
| 1704 |
+
"cost_rank": 10,
|
| 1705 |
+
"sovereignty_tier": 3,
|
| 1706 |
+
"supports_tools": true,
|
| 1707 |
+
"supports_json": true,
|
| 1708 |
+
"tags": [
|
| 1709 |
+
"deepseek",
|
| 1710 |
+
"gguf",
|
| 1711 |
+
"lumynax",
|
| 1712 |
+
"reasoning",
|
| 1713 |
+
"text"
|
| 1714 |
+
],
|
| 1715 |
+
"metadata": {
|
| 1716 |
+
"hub_sha": "ff5915ca508ffd3b6d12121a2682f8d5ff8cb7be",
|
| 1717 |
+
"package_state": "base_weights_hydrated_text_gguf",
|
| 1718 |
+
"public_status": "public and non-gated",
|
| 1719 |
+
"validation_status": "pass",
|
| 1720 |
+
"total_weight_size": 38535825664
|
| 1721 |
+
}
|
| 1722 |
+
},
|
| 1723 |
+
{
|
| 1724 |
+
"model_id": "lumynax-reasoning-deepseek-r1-qwen-15b-gguf",
|
| 1725 |
+
"repo_id": "AbteeXAILab/lumynax-reasoning-deepseek-r1-qwen-15b-gguf",
|
| 1726 |
+
"title": "LumynaX Reasoning DeepSeek R1 Distill Qwen 1.5B GGUF",
|
| 1727 |
+
"family": "qwen",
|
| 1728 |
+
"runtime": "llama_cpp",
|
| 1729 |
+
"modalities": [
|
| 1730 |
+
"text"
|
| 1731 |
+
],
|
| 1732 |
+
"context_tokens": 8192,
|
| 1733 |
+
"jurisdiction": "NZ",
|
| 1734 |
+
"residency": [
|
| 1735 |
+
"NZ"
|
| 1736 |
+
],
|
| 1737 |
+
"license_id": "see_model_card",
|
| 1738 |
+
"quantization": "see_release_manifest",
|
| 1739 |
+
"primary_artifact": "DeepSeek-R1-Distill-Qwen-1.5B-Q4_K_M.gguf",
|
| 1740 |
+
"active_params_b": null,
|
| 1741 |
+
"total_params_b": 1.5,
|
| 1742 |
+
"quality_rank": 5,
|
| 1743 |
+
"cost_rank": 4,
|
| 1744 |
+
"sovereignty_tier": 3,
|
| 1745 |
+
"supports_tools": true,
|
| 1746 |
+
"supports_json": true,
|
| 1747 |
+
"tags": [
|
| 1748 |
+
"deepseek",
|
| 1749 |
+
"gguf",
|
| 1750 |
+
"lumynax",
|
| 1751 |
+
"qwen",
|
| 1752 |
+
"reasoning",
|
| 1753 |
+
"text"
|
| 1754 |
+
],
|
| 1755 |
+
"metadata": {
|
| 1756 |
+
"hub_sha": "cb2a747d711fb83c6197855046e59c56828dbbaa",
|
| 1757 |
+
"package_state": "prebuilt_gguf_release",
|
| 1758 |
+
"public_status": "public and non-gated",
|
| 1759 |
+
"validation_status": "pass",
|
| 1760 |
+
"total_weight_size": 1117321312
|
| 1761 |
+
}
|
| 1762 |
+
},
|
| 1763 |
+
{
|
| 1764 |
+
"model_id": "lumynax-reasoning-deepseek-r1-qwen-7b-gguf",
|
| 1765 |
+
"repo_id": "AbteeXAILab/lumynax-reasoning-deepseek-r1-qwen-7b-gguf",
|
| 1766 |
+
"title": "LumynaX Reasoning DeepSeek R1 Distill Qwen 7B GGUF",
|
| 1767 |
+
"family": "qwen",
|
| 1768 |
+
"runtime": "llama_cpp",
|
| 1769 |
+
"modalities": [
|
| 1770 |
+
"text"
|
| 1771 |
+
],
|
| 1772 |
+
"context_tokens": 8192,
|
| 1773 |
+
"jurisdiction": "NZ",
|
| 1774 |
+
"residency": [
|
| 1775 |
+
"NZ"
|
| 1776 |
+
],
|
| 1777 |
+
"license_id": "see_model_card",
|
| 1778 |
+
"quantization": "see_release_manifest",
|
| 1779 |
+
"primary_artifact": "DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf",
|
| 1780 |
+
"active_params_b": null,
|
| 1781 |
+
"total_params_b": 7.0,
|
| 1782 |
+
"quality_rank": 3,
|
| 1783 |
+
"cost_rank": 6,
|
| 1784 |
+
"sovereignty_tier": 3,
|
| 1785 |
+
"supports_tools": true,
|
| 1786 |
+
"supports_json": true,
|
| 1787 |
+
"tags": [
|
| 1788 |
+
"deepseek",
|
| 1789 |
+
"gguf",
|
| 1790 |
+
"lumynax",
|
| 1791 |
+
"qwen",
|
| 1792 |
+
"reasoning",
|
| 1793 |
+
"text"
|
| 1794 |
+
],
|
| 1795 |
+
"metadata": {
|
| 1796 |
+
"hub_sha": "02dbc4451a0a26e9760f740418cf4b9796ef2aa4",
|
| 1797 |
+
"package_state": "prebuilt_gguf_release",
|
| 1798 |
+
"public_status": "public and non-gated",
|
| 1799 |
+
"validation_status": "pass",
|
| 1800 |
+
"total_weight_size": 4683073248
|
| 1801 |
+
}
|
| 1802 |
+
},
|
| 1803 |
+
{
|
| 1804 |
+
"model_id": "lumynax-reasoning-gpt-oss-20b-gguf",
|
| 1805 |
+
"repo_id": "AbteeXAILab/lumynax-reasoning-gpt-oss-20b-gguf",
|
| 1806 |
+
"title": "LumynaX Reasoning GPT-OSS 20B GGUF",
|
| 1807 |
+
"family": "lumynax",
|
| 1808 |
+
"runtime": "llama_cpp",
|
| 1809 |
+
"modalities": [
|
| 1810 |
+
"text"
|
| 1811 |
+
],
|
| 1812 |
+
"context_tokens": 8192,
|
| 1813 |
+
"jurisdiction": "NZ",
|
| 1814 |
+
"residency": [
|
| 1815 |
+
"NZ"
|
| 1816 |
+
],
|
| 1817 |
+
"license_id": "see_model_card",
|
| 1818 |
+
"quantization": "see_release_manifest",
|
| 1819 |
+
"primary_artifact": "lumynax-reasoning-gpt-oss-20b-mxfp4.gguf",
|
| 1820 |
+
"active_params_b": null,
|
| 1821 |
+
"total_params_b": 20.0,
|
| 1822 |
+
"quality_rank": 1,
|
| 1823 |
+
"cost_rank": 8,
|
| 1824 |
+
"sovereignty_tier": 3,
|
| 1825 |
+
"supports_tools": true,
|
| 1826 |
+
"supports_json": true,
|
| 1827 |
+
"tags": [
|
| 1828 |
+
"gguf",
|
| 1829 |
+
"lumynax",
|
| 1830 |
+
"reasoning",
|
| 1831 |
+
"text"
|
| 1832 |
+
],
|
| 1833 |
+
"metadata": {
|
| 1834 |
+
"hub_sha": "3f07992371177a312240df950d91ae1b2ff57714",
|
| 1835 |
+
"package_state": "prebuilt_gguf_release",
|
| 1836 |
+
"public_status": "public and non-gated",
|
| 1837 |
+
"validation_status": "pass",
|
| 1838 |
+
"total_weight_size": 12109566560
|
| 1839 |
+
}
|
| 1840 |
+
},
|
| 1841 |
+
{
|
| 1842 |
+
"model_id": "lumynax-reasoning-phi4-mini-gguf",
|
| 1843 |
+
"repo_id": "AbteeXAILab/lumynax-reasoning-phi4-mini-gguf",
|
| 1844 |
+
"title": "LumynaX Reasoning Phi-4 Mini GGUF",
|
| 1845 |
+
"family": "phi",
|
| 1846 |
+
"runtime": "llama_cpp",
|
| 1847 |
+
"modalities": [
|
| 1848 |
+
"text"
|
| 1849 |
+
],
|
| 1850 |
+
"context_tokens": 8192,
|
| 1851 |
+
"jurisdiction": "NZ",
|
| 1852 |
+
"residency": [
|
| 1853 |
+
"NZ"
|
| 1854 |
+
],
|
| 1855 |
+
"license_id": "see_model_card",
|
| 1856 |
+
"quantization": "see_release_manifest",
|
| 1857 |
+
"primary_artifact": "Phi-4-mini-reasoning-Q4_K_M.gguf",
|
| 1858 |
+
"active_params_b": null,
|
| 1859 |
+
"total_params_b": null,
|
| 1860 |
+
"quality_rank": 2,
|
| 1861 |
+
"cost_rank": 4,
|
| 1862 |
+
"sovereignty_tier": 3,
|
| 1863 |
+
"supports_tools": true,
|
| 1864 |
+
"supports_json": true,
|
| 1865 |
+
"tags": [
|
| 1866 |
+
"gguf",
|
| 1867 |
+
"lumynax",
|
| 1868 |
+
"phi",
|
| 1869 |
+
"reasoning",
|
| 1870 |
+
"text"
|
| 1871 |
+
],
|
| 1872 |
+
"metadata": {
|
| 1873 |
+
"hub_sha": "ef04425cd19f96de197b2418a16aca6e5c868f45",
|
| 1874 |
+
"package_state": "prebuilt_gguf_release",
|
| 1875 |
+
"public_status": "public and non-gated",
|
| 1876 |
+
"validation_status": "pass",
|
| 1877 |
+
"total_weight_size": 2491875232
|
| 1878 |
+
}
|
| 1879 |
+
},
|
| 1880 |
+
{
|
| 1881 |
+
"model_id": "lumynax-tiny",
|
| 1882 |
+
"repo_id": "AbteeXAILab/lumynax-tiny",
|
| 1883 |
+
"title": "LumynaX Tiny Seed V1",
|
| 1884 |
+
"family": "lumynax",
|
| 1885 |
+
"runtime": "transformers",
|
| 1886 |
+
"modalities": [
|
| 1887 |
+
"text"
|
| 1888 |
+
],
|
| 1889 |
+
"context_tokens": 4096,
|
| 1890 |
+
"jurisdiction": "NZ",
|
| 1891 |
+
"residency": [
|
| 1892 |
+
"NZ"
|
| 1893 |
+
],
|
| 1894 |
+
"license_id": "see_model_card",
|
| 1895 |
+
"quantization": "see_release_manifest",
|
| 1896 |
+
"primary_artifact": "merged_model/model.safetensors",
|
| 1897 |
+
"active_params_b": null,
|
| 1898 |
+
"total_params_b": null,
|
| 1899 |
+
"quality_rank": 5,
|
| 1900 |
+
"cost_rank": 2,
|
| 1901 |
+
"sovereignty_tier": 2,
|
| 1902 |
+
"supports_tools": false,
|
| 1903 |
+
"supports_json": true,
|
| 1904 |
+
"tags": [
|
| 1905 |
+
"general",
|
| 1906 |
+
"lumynax",
|
| 1907 |
+
"text"
|
| 1908 |
+
],
|
| 1909 |
+
"metadata": {
|
| 1910 |
+
"hub_sha": "c4ccf84ef0b646fbc61c83f24117aaea95225dd6",
|
| 1911 |
+
"package_state": "standalone_dense_model",
|
| 1912 |
+
"public_status": "public and non-gated",
|
| 1913 |
+
"validation_status": "pass",
|
| 1914 |
+
"total_weight_size": 4292528
|
| 1915 |
+
}
|
| 1916 |
+
},
|
| 1917 |
+
{
|
| 1918 |
+
"model_id": "lumynax-tiny-qwen25-05b-gguf",
|
| 1919 |
+
"repo_id": "AbteeXAILab/lumynax-tiny-qwen25-05b-gguf",
|
| 1920 |
+
"title": "LumynaX Tiny Qwen2.5 0.5B GGUF",
|
| 1921 |
+
"family": "qwen",
|
| 1922 |
+
"runtime": "llama_cpp",
|
| 1923 |
+
"modalities": [
|
| 1924 |
+
"text"
|
| 1925 |
+
],
|
| 1926 |
+
"context_tokens": 32768,
|
| 1927 |
+
"jurisdiction": "NZ",
|
| 1928 |
+
"residency": [
|
| 1929 |
+
"NZ"
|
| 1930 |
+
],
|
| 1931 |
+
"license_id": "see_model_card",
|
| 1932 |
+
"quantization": "see_release_manifest",
|
| 1933 |
+
"primary_artifact": "lumynax-tiny-qwen25-05b-q4_k_m.gguf",
|
| 1934 |
+
"active_params_b": null,
|
| 1935 |
+
"total_params_b": 0.5,
|
| 1936 |
+
"quality_rank": 5,
|
| 1937 |
+
"cost_rank": 2,
|
| 1938 |
+
"sovereignty_tier": 3,
|
| 1939 |
+
"supports_tools": false,
|
| 1940 |
+
"supports_json": true,
|
| 1941 |
+
"tags": [
|
| 1942 |
+
"general",
|
| 1943 |
+
"gguf",
|
| 1944 |
+
"lumynax",
|
| 1945 |
+
"qwen",
|
| 1946 |
+
"text"
|
| 1947 |
+
],
|
| 1948 |
+
"metadata": {
|
| 1949 |
+
"hub_sha": "01266863890302b1d1f42bddfda1ff7146386359",
|
| 1950 |
+
"package_state": "prebuilt_gguf_release",
|
| 1951 |
+
"public_status": "public and non-gated",
|
| 1952 |
+
"validation_status": "pass",
|
| 1953 |
+
"total_weight_size": 491400032
|
| 1954 |
+
}
|
| 1955 |
+
},
|
| 1956 |
+
{
|
| 1957 |
+
"model_id": "lumynax-frontier-qwen3-235b-a22b-instruct",
|
| 1958 |
+
"repo_id": "AbteeXAILab/lumynax-frontier-qwen3-235b-a22b-instruct",
|
| 1959 |
+
"title": "LumynaX Frontier Qwen3 235B A22B Instruct",
|
| 1960 |
+
"family": "qwen",
|
| 1961 |
+
"runtime": "transformers",
|
| 1962 |
+
"modalities": [
|
| 1963 |
+
"text"
|
| 1964 |
+
],
|
| 1965 |
+
"context_tokens": 262144,
|
| 1966 |
+
"jurisdiction": "NZ",
|
| 1967 |
+
"residency": [
|
| 1968 |
+
"NZ",
|
| 1969 |
+
"AU",
|
| 1970 |
+
"global"
|
| 1971 |
+
],
|
| 1972 |
+
"license_id": "apache-2.0",
|
| 1973 |
+
"quantization": "bf16 / fp8 / Q4_K_M (community GGUF)",
|
| 1974 |
+
"primary_artifact": "model.safetensors (sharded)",
|
| 1975 |
+
"active_params_b": 22,
|
| 1976 |
+
"total_params_b": 235,
|
| 1977 |
+
"quality_rank": 1,
|
| 1978 |
+
"cost_rank": 5,
|
| 1979 |
+
"sovereignty_tier": 2,
|
| 1980 |
+
"supports_tools": true,
|
| 1981 |
+
"supports_json": true,
|
| 1982 |
+
"tags": [
|
| 1983 |
+
"frontier",
|
| 1984 |
+
"moe",
|
| 1985 |
+
"reasoning",
|
| 1986 |
+
"qwen3",
|
| 1987 |
+
"tools",
|
| 1988 |
+
"json",
|
| 1989 |
+
"long-context"
|
| 1990 |
+
],
|
| 1991 |
+
"metadata": {
|
| 1992 |
+
"upstream_repo": "Qwen/Qwen3-235B-A22B-Instruct-2507",
|
| 1993 |
+
"release_version": "v0.1.0",
|
| 1994 |
+
"package_state": "scaffold_pulls_upstream",
|
| 1995 |
+
"public_status": "public and non-gated",
|
| 1996 |
+
"validation_status": "scaffold_verified"
|
| 1997 |
+
}
|
| 1998 |
+
},
|
| 1999 |
+
{
|
| 2000 |
+
"model_id": "lumynax-frontier-minimax-m2-230b",
|
| 2001 |
+
"repo_id": "AbteeXAILab/lumynax-frontier-minimax-m2-230b",
|
| 2002 |
+
"title": "LumynaX Frontier MiniMax M2 230B Agentic",
|
| 2003 |
+
"family": "minimax",
|
| 2004 |
+
"runtime": "transformers",
|
| 2005 |
+
"modalities": [
|
| 2006 |
+
"text"
|
| 2007 |
+
],
|
| 2008 |
+
"context_tokens": 204800,
|
| 2009 |
+
"jurisdiction": "NZ",
|
| 2010 |
+
"residency": [
|
| 2011 |
+
"NZ",
|
| 2012 |
+
"AU",
|
| 2013 |
+
"global"
|
| 2014 |
+
],
|
| 2015 |
+
"license_id": "other",
|
| 2016 |
+
"quantization": "bf16 / Q4_K_M (community GGUF)",
|
| 2017 |
+
"primary_artifact": "model.safetensors (sharded)",
|
| 2018 |
+
"active_params_b": 10,
|
| 2019 |
+
"total_params_b": 230,
|
| 2020 |
+
"quality_rank": 1,
|
| 2021 |
+
"cost_rank": 5,
|
| 2022 |
+
"sovereignty_tier": 2,
|
| 2023 |
+
"supports_tools": true,
|
| 2024 |
+
"supports_json": true,
|
| 2025 |
+
"tags": [
|
| 2026 |
+
"frontier",
|
| 2027 |
+
"moe",
|
| 2028 |
+
"agentic",
|
| 2029 |
+
"minimax",
|
| 2030 |
+
"tools",
|
| 2031 |
+
"json"
|
| 2032 |
+
],
|
| 2033 |
+
"metadata": {
|
| 2034 |
+
"upstream_repo": "MiniMaxAI/MiniMax-M2",
|
| 2035 |
+
"release_version": "v0.1.0",
|
| 2036 |
+
"package_state": "scaffold_pulls_upstream",
|
| 2037 |
+
"public_status": "public and non-gated",
|
| 2038 |
+
"validation_status": "scaffold_verified"
|
| 2039 |
+
}
|
| 2040 |
+
},
|
| 2041 |
+
{
|
| 2042 |
+
"model_id": "lumynax-frontier-mixtral-8x22b-instruct-gguf",
|
| 2043 |
+
"repo_id": "AbteeXAILab/lumynax-frontier-mixtral-8x22b-instruct-gguf",
|
| 2044 |
+
"title": "LumynaX Frontier Mixtral 8x22B Instruct GGUF",
|
| 2045 |
+
"family": "mistral",
|
| 2046 |
+
"runtime": "llama_cpp",
|
| 2047 |
+
"modalities": [
|
| 2048 |
+
"text"
|
| 2049 |
+
],
|
| 2050 |
+
"context_tokens": 65536,
|
| 2051 |
+
"jurisdiction": "NZ",
|
| 2052 |
+
"residency": [
|
| 2053 |
+
"NZ"
|
| 2054 |
+
],
|
| 2055 |
+
"license_id": "apache-2.0",
|
| 2056 |
+
"quantization": "Q4_K_M (default) \u00b7 Q5_K_M \u00b7 Q8_0",
|
| 2057 |
+
"primary_artifact": "Mixtral-8x22B-Instruct-v0.1.Q4_K_M.gguf",
|
| 2058 |
+
"active_params_b": 39,
|
| 2059 |
+
"total_params_b": 141,
|
| 2060 |
+
"quality_rank": 2,
|
| 2061 |
+
"cost_rank": 4,
|
| 2062 |
+
"sovereignty_tier": 3,
|
| 2063 |
+
"supports_tools": true,
|
| 2064 |
+
"supports_json": true,
|
| 2065 |
+
"tags": [
|
| 2066 |
+
"frontier",
|
| 2067 |
+
"moe",
|
| 2068 |
+
"mixtral",
|
| 2069 |
+
"gguf",
|
| 2070 |
+
"llama-cpp",
|
| 2071 |
+
"tools"
|
| 2072 |
+
],
|
| 2073 |
+
"metadata": {
|
| 2074 |
+
"upstream_repo": "mistralai/Mixtral-8x22B-Instruct-v0.1",
|
| 2075 |
+
"release_version": "v0.1.0",
|
| 2076 |
+
"package_state": "scaffold_pulls_upstream_gguf",
|
| 2077 |
+
"public_status": "public and non-gated",
|
| 2078 |
+
"validation_status": "scaffold_verified"
|
| 2079 |
+
}
|
| 2080 |
+
},
|
| 2081 |
+
{
|
| 2082 |
+
"model_id": "lumynax-frontier-dbrx-instruct-132b-gguf",
|
| 2083 |
+
"repo_id": "AbteeXAILab/lumynax-frontier-dbrx-instruct-132b-gguf",
|
| 2084 |
+
"title": "LumynaX Frontier DBRX Instruct 132B GGUF",
|
| 2085 |
+
"family": "dbrx",
|
| 2086 |
+
"runtime": "llama_cpp",
|
| 2087 |
+
"modalities": [
|
| 2088 |
+
"text"
|
| 2089 |
+
],
|
| 2090 |
+
"context_tokens": 32768,
|
| 2091 |
+
"jurisdiction": "NZ",
|
| 2092 |
+
"residency": [
|
| 2093 |
+
"NZ"
|
| 2094 |
+
],
|
| 2095 |
+
"license_id": "other",
|
| 2096 |
+
"quantization": "Q4_K_M (default) \u00b7 Q5_K_M \u00b7 Q8_0",
|
| 2097 |
+
"primary_artifact": "dbrx-instruct.Q4_K_M.gguf",
|
| 2098 |
+
"active_params_b": 36,
|
| 2099 |
+
"total_params_b": 132,
|
| 2100 |
+
"quality_rank": 2,
|
| 2101 |
+
"cost_rank": 4,
|
| 2102 |
+
"sovereignty_tier": 3,
|
| 2103 |
+
"supports_tools": true,
|
| 2104 |
+
"supports_json": true,
|
| 2105 |
+
"tags": [
|
| 2106 |
+
"frontier",
|
| 2107 |
+
"moe",
|
| 2108 |
+
"dbrx",
|
| 2109 |
+
"databricks",
|
| 2110 |
+
"gguf",
|
| 2111 |
+
"llama-cpp"
|
| 2112 |
+
],
|
| 2113 |
+
"metadata": {
|
| 2114 |
+
"upstream_repo": "databricks/dbrx-instruct",
|
| 2115 |
+
"release_version": "v0.1.0",
|
| 2116 |
+
"package_state": "scaffold_pulls_upstream_gguf",
|
| 2117 |
+
"public_status": "public and non-gated",
|
| 2118 |
+
"validation_status": "scaffold_verified"
|
| 2119 |
+
}
|
| 2120 |
+
},
|
| 2121 |
+
{
|
| 2122 |
+
"model_id": "lumynax-multimodal-qwen25-vl-72b-instruct-gguf",
|
| 2123 |
+
"repo_id": "AbteeXAILab/lumynax-multimodal-qwen25-vl-72b-instruct-gguf",
|
| 2124 |
+
"title": "LumynaX Multimodal Qwen2.5 VL 72B Instruct GGUF",
|
| 2125 |
+
"family": "qwen",
|
| 2126 |
+
"runtime": "llama_cpp_multimodal",
|
| 2127 |
+
"modalities": [
|
| 2128 |
+
"text",
|
| 2129 |
+
"vision"
|
| 2130 |
+
],
|
| 2131 |
+
"context_tokens": 131072,
|
| 2132 |
+
"jurisdiction": "NZ",
|
| 2133 |
+
"residency": [
|
| 2134 |
+
"NZ"
|
| 2135 |
+
],
|
| 2136 |
+
"license_id": "other",
|
| 2137 |
+
"quantization": "Q4_K_M (default) \u00b7 Q5_K_M \u00b7 Q8_0",
|
| 2138 |
+
"primary_artifact": "Qwen2.5-VL-72B-Instruct-Q4_K_M.gguf",
|
| 2139 |
+
"active_params_b": null,
|
| 2140 |
+
"total_params_b": 72,
|
| 2141 |
+
"quality_rank": 2,
|
| 2142 |
+
"cost_rank": 4,
|
| 2143 |
+
"sovereignty_tier": 3,
|
| 2144 |
+
"supports_tools": true,
|
| 2145 |
+
"supports_json": true,
|
| 2146 |
+
"tags": [
|
| 2147 |
+
"multimodal",
|
| 2148 |
+
"vision",
|
| 2149 |
+
"qwen",
|
| 2150 |
+
"gguf",
|
| 2151 |
+
"llama-cpp",
|
| 2152 |
+
"image-text-to-text"
|
| 2153 |
+
],
|
| 2154 |
+
"metadata": {
|
| 2155 |
+
"upstream_repo": "Qwen/Qwen2.5-VL-72B-Instruct",
|
| 2156 |
+
"release_version": "v0.1.0",
|
| 2157 |
+
"package_state": "scaffold_pulls_upstream_gguf",
|
| 2158 |
+
"public_status": "public and non-gated",
|
| 2159 |
+
"validation_status": "scaffold_verified"
|
| 2160 |
+
}
|
| 2161 |
+
},
|
| 2162 |
+
{
|
| 2163 |
+
"model_id": "lumynax-multimodal-pixtral-large-124b",
|
| 2164 |
+
"repo_id": "AbteeXAILab/lumynax-multimodal-pixtral-large-124b",
|
| 2165 |
+
"title": "LumynaX Multimodal Pixtral Large 124B",
|
| 2166 |
+
"family": "mistral",
|
| 2167 |
+
"runtime": "transformers_multimodal",
|
| 2168 |
+
"modalities": [
|
| 2169 |
+
"text",
|
| 2170 |
+
"vision"
|
| 2171 |
+
],
|
| 2172 |
+
"context_tokens": 131072,
|
| 2173 |
+
"jurisdiction": "NZ",
|
| 2174 |
+
"residency": [
|
| 2175 |
+
"NZ",
|
| 2176 |
+
"AU"
|
| 2177 |
+
],
|
| 2178 |
+
"license_id": "other",
|
| 2179 |
+
"quantization": "bf16 / fp8",
|
| 2180 |
+
"primary_artifact": "model.safetensors (sharded)",
|
| 2181 |
+
"active_params_b": null,
|
| 2182 |
+
"total_params_b": 124,
|
| 2183 |
+
"quality_rank": 2,
|
| 2184 |
+
"cost_rank": 5,
|
| 2185 |
+
"sovereignty_tier": 2,
|
| 2186 |
+
"supports_tools": true,
|
| 2187 |
+
"supports_json": true,
|
| 2188 |
+
"tags": [
|
| 2189 |
+
"multimodal",
|
| 2190 |
+
"vision",
|
| 2191 |
+
"pixtral",
|
| 2192 |
+
"mistral",
|
| 2193 |
+
"image-text-to-text"
|
| 2194 |
+
],
|
| 2195 |
+
"metadata": {
|
| 2196 |
+
"upstream_repo": "mistralai/Pixtral-Large-Instruct-2411",
|
| 2197 |
+
"release_version": "v0.1.0",
|
| 2198 |
+
"package_state": "scaffold_pulls_upstream",
|
| 2199 |
+
"public_status": "public (Mistral research licence \u2014 non-commercial use)",
|
| 2200 |
+
"validation_status": "scaffold_verified"
|
| 2201 |
+
}
|
| 2202 |
+
},
|
| 2203 |
+
{
|
| 2204 |
+
"model_id": "lumynax-reasoning-glm46-355b-moe",
|
| 2205 |
+
"repo_id": "AbteeXAILab/lumynax-reasoning-glm46-355b-moe",
|
| 2206 |
+
"title": "LumynaX Reasoning GLM-4.6 355B MoE",
|
| 2207 |
+
"family": "glm",
|
| 2208 |
+
"runtime": "transformers",
|
| 2209 |
+
"modalities": [
|
| 2210 |
+
"text"
|
| 2211 |
+
],
|
| 2212 |
+
"context_tokens": 204800,
|
| 2213 |
+
"jurisdiction": "NZ",
|
| 2214 |
+
"residency": [
|
| 2215 |
+
"NZ",
|
| 2216 |
+
"AU",
|
| 2217 |
+
"global"
|
| 2218 |
+
],
|
| 2219 |
+
"license_id": "mit",
|
| 2220 |
+
"quantization": "bf16 / fp8 / Q4_K_M (community)",
|
| 2221 |
+
"primary_artifact": "model.safetensors (sharded)",
|
| 2222 |
+
"active_params_b": 32,
|
| 2223 |
+
"total_params_b": 355,
|
| 2224 |
+
"quality_rank": 1,
|
| 2225 |
+
"cost_rank": 5,
|
| 2226 |
+
"sovereignty_tier": 2,
|
| 2227 |
+
"supports_tools": true,
|
| 2228 |
+
"supports_json": true,
|
| 2229 |
+
"tags": [
|
| 2230 |
+
"frontier",
|
| 2231 |
+
"reasoning",
|
| 2232 |
+
"moe",
|
| 2233 |
+
"glm",
|
| 2234 |
+
"tools",
|
| 2235 |
+
"long-context"
|
| 2236 |
+
],
|
| 2237 |
+
"metadata": {
|
| 2238 |
+
"upstream_repo": "zai-org/GLM-4.6",
|
| 2239 |
+
"release_version": "v0.1.0",
|
| 2240 |
+
"package_state": "scaffold_pulls_upstream",
|
| 2241 |
+
"public_status": "public and non-gated",
|
| 2242 |
+
"validation_status": "scaffold_verified"
|
| 2243 |
+
}
|
| 2244 |
+
},
|
| 2245 |
+
{
|
| 2246 |
+
"model_id": "lumynax-multimodal-internvl3-78b-instruct",
|
| 2247 |
+
"repo_id": "AbteeXAILab/lumynax-multimodal-internvl3-78b-instruct",
|
| 2248 |
+
"title": "LumynaX Multimodal InternVL3 78B Instruct",
|
| 2249 |
+
"family": "internvl",
|
| 2250 |
+
"runtime": "transformers_multimodal",
|
| 2251 |
+
"modalities": [
|
| 2252 |
+
"text",
|
| 2253 |
+
"vision"
|
| 2254 |
+
],
|
| 2255 |
+
"context_tokens": 32768,
|
| 2256 |
+
"jurisdiction": "NZ",
|
| 2257 |
+
"residency": [
|
| 2258 |
+
"NZ",
|
| 2259 |
+
"AU",
|
| 2260 |
+
"global"
|
| 2261 |
+
],
|
| 2262 |
+
"license_id": "mit",
|
| 2263 |
+
"quantization": "bf16 (safetensors mirror) \u2014 community GGUF when available",
|
| 2264 |
+
"primary_artifact": "model.safetensors (33 shards)",
|
| 2265 |
+
"active_params_b": null,
|
| 2266 |
+
"total_params_b": 78,
|
| 2267 |
+
"quality_rank": 2,
|
| 2268 |
+
"cost_rank": 4,
|
| 2269 |
+
"sovereignty_tier": 2,
|
| 2270 |
+
"supports_tools": true,
|
| 2271 |
+
"supports_json": true,
|
| 2272 |
+
"tags": [
|
| 2273 |
+
"multimodal",
|
| 2274 |
+
"vision",
|
| 2275 |
+
"internvl",
|
| 2276 |
+
"opengvlab",
|
| 2277 |
+
"image-text-to-text"
|
| 2278 |
+
],
|
| 2279 |
+
"metadata": {
|
| 2280 |
+
"upstream_repo": "OpenGVLab/InternVL3-78B-Instruct",
|
| 2281 |
+
"release_version": "v0.1.0",
|
| 2282 |
+
"package_state": "weights_mirrored_safetensors",
|
| 2283 |
+
"public_status": "public and non-gated",
|
| 2284 |
+
"validation_status": "scaffold_verified"
|
| 2285 |
+
}
|
| 2286 |
+
},
|
| 2287 |
+
{
|
| 2288 |
+
"model_id": "lumynax-speech-whisper-large-v3-turbo",
|
| 2289 |
+
"repo_id": "AbteeXAILab/lumynax-speech-whisper-large-v3-turbo",
|
| 2290 |
+
"title": "LumynaX Speech Whisper Large v3 Turbo",
|
| 2291 |
+
"family": "whisper",
|
| 2292 |
+
"runtime": "transformers",
|
| 2293 |
+
"modalities": [
|
| 2294 |
+
"audio"
|
| 2295 |
+
],
|
| 2296 |
+
"context_tokens": 30,
|
| 2297 |
+
"jurisdiction": "NZ",
|
| 2298 |
+
"residency": [
|
| 2299 |
+
"NZ",
|
| 2300 |
+
"AU",
|
| 2301 |
+
"global"
|
| 2302 |
+
],
|
| 2303 |
+
"license_id": "mit",
|
| 2304 |
+
"quantization": "fp16 safetensors",
|
| 2305 |
+
"primary_artifact": "model.safetensors",
|
| 2306 |
+
"active_params_b": null,
|
| 2307 |
+
"total_params_b": 0.8,
|
| 2308 |
+
"quality_rank": 1,
|
| 2309 |
+
"cost_rank": 2,
|
| 2310 |
+
"sovereignty_tier": 3,
|
| 2311 |
+
"supports_tools": false,
|
| 2312 |
+
"supports_json": false,
|
| 2313 |
+
"tags": [
|
| 2314 |
+
"asr",
|
| 2315 |
+
"speech",
|
| 2316 |
+
"whisper",
|
| 2317 |
+
"audio"
|
| 2318 |
+
],
|
| 2319 |
+
"metadata": {
|
| 2320 |
+
"upstream_repo": "openai/whisper-large-v3-turbo",
|
| 2321 |
+
"release_version": "v0.1.0",
|
| 2322 |
+
"package_state": "weights_mirrored",
|
| 2323 |
+
"public_status": "public and non-gated",
|
| 2324 |
+
"validation_status": "scaffold_verified"
|
| 2325 |
+
}
|
| 2326 |
+
},
|
| 2327 |
+
{
|
| 2328 |
+
"model_id": "lumynax-speech-kokoro-82m-tts",
|
| 2329 |
+
"repo_id": "AbteeXAILab/lumynax-speech-kokoro-82m-tts",
|
| 2330 |
+
"title": "LumynaX Speech Kokoro 82M TTS",
|
| 2331 |
+
"family": "kokoro",
|
| 2332 |
+
"runtime": "transformers",
|
| 2333 |
+
"modalities": [
|
| 2334 |
+
"text",
|
| 2335 |
+
"audio"
|
| 2336 |
+
],
|
| 2337 |
+
"context_tokens": 510,
|
| 2338 |
+
"jurisdiction": "NZ",
|
| 2339 |
+
"residency": [
|
| 2340 |
+
"NZ",
|
| 2341 |
+
"AU",
|
| 2342 |
+
"global"
|
| 2343 |
+
],
|
| 2344 |
+
"license_id": "apache-2.0",
|
| 2345 |
+
"quantization": "fp32 (small)",
|
| 2346 |
+
"primary_artifact": "kokoro-v1_0.pth",
|
| 2347 |
+
"active_params_b": null,
|
| 2348 |
+
"total_params_b": 0.082,
|
| 2349 |
+
"quality_rank": 1,
|
| 2350 |
+
"cost_rank": 1,
|
| 2351 |
+
"sovereignty_tier": 3,
|
| 2352 |
+
"supports_tools": false,
|
| 2353 |
+
"supports_json": false,
|
| 2354 |
+
"tags": [
|
| 2355 |
+
"tts",
|
| 2356 |
+
"speech",
|
| 2357 |
+
"kokoro",
|
| 2358 |
+
"audio"
|
| 2359 |
+
],
|
| 2360 |
+
"metadata": {
|
| 2361 |
+
"upstream_repo": "hexgrad/Kokoro-82M",
|
| 2362 |
+
"release_version": "v0.1.0",
|
| 2363 |
+
"package_state": "weights_mirrored",
|
| 2364 |
+
"public_status": "public and non-gated",
|
| 2365 |
+
"validation_status": "scaffold_verified"
|
| 2366 |
+
}
|
| 2367 |
+
},
|
| 2368 |
+
{
|
| 2369 |
+
"model_id": "lumynax-reranker-bge-v2-m3",
|
| 2370 |
+
"repo_id": "AbteeXAILab/lumynax-reranker-bge-v2-m3",
|
| 2371 |
+
"title": "LumynaX Reranker BGE v2 M3",
|
| 2372 |
+
"family": "bge",
|
| 2373 |
+
"runtime": "transformers",
|
| 2374 |
+
"modalities": [
|
| 2375 |
+
"text"
|
| 2376 |
+
],
|
| 2377 |
+
"context_tokens": 8192,
|
| 2378 |
+
"jurisdiction": "NZ",
|
| 2379 |
+
"residency": [
|
| 2380 |
+
"NZ",
|
| 2381 |
+
"AU",
|
| 2382 |
+
"global"
|
| 2383 |
+
],
|
| 2384 |
+
"license_id": "mit",
|
| 2385 |
+
"quantization": "fp32 safetensors",
|
| 2386 |
+
"primary_artifact": "model.safetensors",
|
| 2387 |
+
"active_params_b": null,
|
| 2388 |
+
"total_params_b": 0.568,
|
| 2389 |
+
"quality_rank": 1,
|
| 2390 |
+
"cost_rank": 1,
|
| 2391 |
+
"sovereignty_tier": 3,
|
| 2392 |
+
"supports_tools": false,
|
| 2393 |
+
"supports_json": true,
|
| 2394 |
+
"tags": [
|
| 2395 |
+
"reranker",
|
| 2396 |
+
"retrieval",
|
| 2397 |
+
"bge",
|
| 2398 |
+
"embedding-companion"
|
| 2399 |
+
],
|
| 2400 |
+
"metadata": {
|
| 2401 |
+
"upstream_repo": "BAAI/bge-reranker-v2-m3",
|
| 2402 |
+
"release_version": "v0.1.0",
|
| 2403 |
+
"package_state": "weights_mirrored",
|
| 2404 |
+
"public_status": "public and non-gated",
|
| 2405 |
+
"validation_status": "scaffold_verified"
|
| 2406 |
+
}
|
| 2407 |
+
},
|
| 2408 |
+
{
|
| 2409 |
+
"model_id": "lumynax-guard-text-moderation",
|
| 2410 |
+
"repo_id": "AbteeXAILab/lumynax-guard-text-moderation",
|
| 2411 |
+
"title": "LumynaX Guard Text Moderation",
|
| 2412 |
+
"family": "roberta",
|
| 2413 |
+
"runtime": "transformers",
|
| 2414 |
+
"modalities": [
|
| 2415 |
+
"text"
|
| 2416 |
+
],
|
| 2417 |
+
"context_tokens": 512,
|
| 2418 |
+
"jurisdiction": "NZ",
|
| 2419 |
+
"residency": [
|
| 2420 |
+
"NZ",
|
| 2421 |
+
"AU",
|
| 2422 |
+
"global"
|
| 2423 |
+
],
|
| 2424 |
+
"license_id": "mit",
|
| 2425 |
+
"quantization": "fp32 safetensors",
|
| 2426 |
+
"primary_artifact": "model.safetensors",
|
| 2427 |
+
"active_params_b": null,
|
| 2428 |
+
"total_params_b": 0.279,
|
| 2429 |
+
"quality_rank": 2,
|
| 2430 |
+
"cost_rank": 1,
|
| 2431 |
+
"sovereignty_tier": 3,
|
| 2432 |
+
"supports_tools": false,
|
| 2433 |
+
"supports_json": true,
|
| 2434 |
+
"tags": [
|
| 2435 |
+
"safety",
|
| 2436 |
+
"moderation",
|
| 2437 |
+
"classifier",
|
| 2438 |
+
"guardrail"
|
| 2439 |
+
],
|
| 2440 |
+
"metadata": {
|
| 2441 |
+
"upstream_repo": "KoalaAI/Text-Moderation",
|
| 2442 |
+
"release_version": "v0.1.0",
|
| 2443 |
+
"package_state": "weights_mirrored",
|
| 2444 |
+
"public_status": "public and non-gated",
|
| 2445 |
+
"validation_status": "scaffold_verified"
|
| 2446 |
+
}
|
| 2447 |
+
},
|
| 2448 |
+
{
|
| 2449 |
+
"model_id": "lumynax-math-qwen25-math-7b-gguf",
|
| 2450 |
+
"repo_id": "AbteeXAILab/lumynax-math-qwen25-math-7b-gguf",
|
| 2451 |
+
"title": "LumynaX Math Qwen2.5 Math 7B GGUF",
|
| 2452 |
+
"family": "qwen",
|
| 2453 |
+
"runtime": "llama_cpp",
|
| 2454 |
+
"modalities": [
|
| 2455 |
+
"text"
|
| 2456 |
+
],
|
| 2457 |
+
"context_tokens": 4096,
|
| 2458 |
+
"jurisdiction": "NZ",
|
| 2459 |
+
"residency": [
|
| 2460 |
+
"NZ"
|
| 2461 |
+
],
|
| 2462 |
+
"license_id": "apache-2.0",
|
| 2463 |
+
"quantization": "Q4_K_M GGUF",
|
| 2464 |
+
"primary_artifact": "Qwen2.5-Math-7B-Instruct-Q4_K_M.gguf",
|
| 2465 |
+
"active_params_b": null,
|
| 2466 |
+
"total_params_b": 7,
|
| 2467 |
+
"quality_rank": 2,
|
| 2468 |
+
"cost_rank": 2,
|
| 2469 |
+
"sovereignty_tier": 3,
|
| 2470 |
+
"supports_tools": false,
|
| 2471 |
+
"supports_json": true,
|
| 2472 |
+
"tags": [
|
| 2473 |
+
"math",
|
| 2474 |
+
"reasoning",
|
| 2475 |
+
"qwen",
|
| 2476 |
+
"gguf"
|
| 2477 |
+
],
|
| 2478 |
+
"metadata": {
|
| 2479 |
+
"upstream_repo": "Qwen/Qwen2.5-Math-7B-Instruct",
|
| 2480 |
+
"release_version": "v0.1.0",
|
| 2481 |
+
"package_state": "weights_mirrored",
|
| 2482 |
+
"public_status": "public and non-gated",
|
| 2483 |
+
"validation_status": "scaffold_verified"
|
| 2484 |
+
}
|
| 2485 |
+
},
|
| 2486 |
+
{
|
| 2487 |
+
"model_id": "lumynax-translate-nllb-200-3b",
|
| 2488 |
+
"repo_id": "AbteeXAILab/lumynax-translate-nllb-200-3b",
|
| 2489 |
+
"title": "LumynaX Translate NLLB-200 3.3B",
|
| 2490 |
+
"family": "nllb",
|
| 2491 |
+
"runtime": "transformers",
|
| 2492 |
+
"modalities": [
|
| 2493 |
+
"text"
|
| 2494 |
+
],
|
| 2495 |
+
"context_tokens": 1024,
|
| 2496 |
+
"jurisdiction": "NZ",
|
| 2497 |
+
"residency": [
|
| 2498 |
+
"NZ",
|
| 2499 |
+
"AU",
|
| 2500 |
+
"global"
|
| 2501 |
+
],
|
| 2502 |
+
"license_id": "cc-by-nc-4.0",
|
| 2503 |
+
"quantization": "fp32 safetensors",
|
| 2504 |
+
"primary_artifact": "model.safetensors",
|
| 2505 |
+
"active_params_b": null,
|
| 2506 |
+
"total_params_b": 3.3,
|
| 2507 |
+
"quality_rank": 2,
|
| 2508 |
+
"cost_rank": 3,
|
| 2509 |
+
"sovereignty_tier": 3,
|
| 2510 |
+
"supports_tools": false,
|
| 2511 |
+
"supports_json": false,
|
| 2512 |
+
"tags": [
|
| 2513 |
+
"translation",
|
| 2514 |
+
"nllb",
|
| 2515 |
+
"te-reo",
|
| 2516 |
+
"aotearoa",
|
| 2517 |
+
"languages"
|
| 2518 |
+
],
|
| 2519 |
+
"metadata": {
|
| 2520 |
+
"upstream_repo": "facebook/nllb-200-3.3B",
|
| 2521 |
+
"release_version": "v0.1.0",
|
| 2522 |
+
"package_state": "weights_mirrored",
|
| 2523 |
+
"public_status": "public and non-gated",
|
| 2524 |
+
"validation_status": "scaffold_verified"
|
| 2525 |
+
}
|
| 2526 |
+
},
|
| 2527 |
+
{
|
| 2528 |
+
"model_id": "lumynax-coder-deepseek-v2-lite-16b-gguf",
|
| 2529 |
+
"repo_id": "AbteeXAILab/lumynax-coder-deepseek-v2-lite-16b-gguf",
|
| 2530 |
+
"title": "LumynaX Coder DeepSeek-Coder V2 Lite 16B GGUF",
|
| 2531 |
+
"family": "deepseek",
|
| 2532 |
+
"runtime": "llama_cpp",
|
| 2533 |
+
"modalities": [
|
| 2534 |
+
"text"
|
| 2535 |
+
],
|
| 2536 |
+
"context_tokens": 163840,
|
| 2537 |
+
"jurisdiction": "NZ",
|
| 2538 |
+
"residency": [
|
| 2539 |
+
"NZ"
|
| 2540 |
+
],
|
| 2541 |
+
"license_id": "other",
|
| 2542 |
+
"quantization": "Q4_K_M GGUF",
|
| 2543 |
+
"primary_artifact": "DeepSeek-Coder-V2-Lite-Instruct-Q4_K_M.gguf",
|
| 2544 |
+
"active_params_b": 2.4,
|
| 2545 |
+
"total_params_b": 16,
|
| 2546 |
+
"quality_rank": 2,
|
| 2547 |
+
"cost_rank": 2,
|
| 2548 |
+
"sovereignty_tier": 3,
|
| 2549 |
+
"supports_tools": true,
|
| 2550 |
+
"supports_json": true,
|
| 2551 |
+
"tags": [
|
| 2552 |
+
"coder",
|
| 2553 |
+
"moe",
|
| 2554 |
+
"deepseek",
|
| 2555 |
+
"gguf",
|
| 2556 |
+
"long-context"
|
| 2557 |
+
],
|
| 2558 |
+
"metadata": {
|
| 2559 |
+
"upstream_repo": "deepseek-ai/DeepSeek-Coder-V2-Lite-Instruct",
|
| 2560 |
+
"release_version": "v0.1.0",
|
| 2561 |
+
"package_state": "weights_mirrored",
|
| 2562 |
+
"public_status": "public and non-gated",
|
| 2563 |
+
"validation_status": "scaffold_verified"
|
| 2564 |
+
}
|
| 2565 |
+
},
|
| 2566 |
+
{
|
| 2567 |
+
"model_id": "lumynax-chat-hermes-3-llama31-8b-gguf",
|
| 2568 |
+
"repo_id": "AbteeXAILab/lumynax-chat-hermes-3-llama31-8b-gguf",
|
| 2569 |
+
"title": "LumynaX Chat Hermes-3 Llama-3.1 8B GGUF",
|
| 2570 |
+
"family": "llama",
|
| 2571 |
+
"runtime": "llama_cpp",
|
| 2572 |
+
"modalities": [
|
| 2573 |
+
"text"
|
| 2574 |
+
],
|
| 2575 |
+
"context_tokens": 131072,
|
| 2576 |
+
"jurisdiction": "NZ",
|
| 2577 |
+
"residency": [
|
| 2578 |
+
"NZ"
|
| 2579 |
+
],
|
| 2580 |
+
"license_id": "llama3.1",
|
| 2581 |
+
"quantization": "Q4_K_M GGUF",
|
| 2582 |
+
"primary_artifact": "Hermes-3-Llama-3.1-8B-Q4_K_M.gguf",
|
| 2583 |
+
"active_params_b": null,
|
| 2584 |
+
"total_params_b": 8,
|
| 2585 |
+
"quality_rank": 2,
|
| 2586 |
+
"cost_rank": 2,
|
| 2587 |
+
"sovereignty_tier": 3,
|
| 2588 |
+
"supports_tools": true,
|
| 2589 |
+
"supports_json": true,
|
| 2590 |
+
"tags": [
|
| 2591 |
+
"chat",
|
| 2592 |
+
"hermes",
|
| 2593 |
+
"llama",
|
| 2594 |
+
"gguf",
|
| 2595 |
+
"tools",
|
| 2596 |
+
"function-calling"
|
| 2597 |
+
],
|
| 2598 |
+
"metadata": {
|
| 2599 |
+
"upstream_repo": "NousResearch/Hermes-3-Llama-3.1-8B",
|
| 2600 |
+
"release_version": "v0.1.0",
|
| 2601 |
+
"package_state": "weights_mirrored",
|
| 2602 |
+
"public_status": "public and non-gated",
|
| 2603 |
+
"validation_status": "scaffold_verified"
|
| 2604 |
+
}
|
| 2605 |
+
},
|
| 2606 |
+
{
|
| 2607 |
+
"model_id": "lumynax-doc-nougat-base",
|
| 2608 |
+
"repo_id": "AbteeXAILab/lumynax-doc-nougat-base",
|
| 2609 |
+
"title": "LumynaX Doc Nougat Base (academic PDF -> markdown)",
|
| 2610 |
+
"family": "nougat",
|
| 2611 |
+
"runtime": "transformers",
|
| 2612 |
+
"modalities": [
|
| 2613 |
+
"text",
|
| 2614 |
+
"vision"
|
| 2615 |
+
],
|
| 2616 |
+
"context_tokens": 4096,
|
| 2617 |
+
"jurisdiction": "NZ",
|
| 2618 |
+
"residency": [
|
| 2619 |
+
"NZ",
|
| 2620 |
+
"AU",
|
| 2621 |
+
"global"
|
| 2622 |
+
],
|
| 2623 |
+
"license_id": "cc-by-4.0",
|
| 2624 |
+
"quantization": "fp32 safetensors",
|
| 2625 |
+
"primary_artifact": "model.safetensors",
|
| 2626 |
+
"active_params_b": null,
|
| 2627 |
+
"total_params_b": 0.35,
|
| 2628 |
+
"quality_rank": 2,
|
| 2629 |
+
"cost_rank": 1,
|
| 2630 |
+
"sovereignty_tier": 3,
|
| 2631 |
+
"supports_tools": false,
|
| 2632 |
+
"supports_json": true,
|
| 2633 |
+
"tags": [
|
| 2634 |
+
"doc-ai",
|
| 2635 |
+
"ocr",
|
| 2636 |
+
"nougat",
|
| 2637 |
+
"pdf",
|
| 2638 |
+
"markdown"
|
| 2639 |
+
],
|
| 2640 |
+
"metadata": {
|
| 2641 |
+
"upstream_repo": "facebook/nougat-base",
|
| 2642 |
+
"release_version": "v0.1.0",
|
| 2643 |
+
"package_state": "weights_mirrored",
|
| 2644 |
+
"public_status": "public and non-gated",
|
| 2645 |
+
"validation_status": "scaffold_verified"
|
| 2646 |
+
}
|
| 2647 |
+
},
|
| 2648 |
+
{
|
| 2649 |
+
"model_id": "lumynax-doc-donut-base",
|
| 2650 |
+
"repo_id": "AbteeXAILab/lumynax-doc-donut-base",
|
| 2651 |
+
"title": "LumynaX Doc Donut Base (document understanding)",
|
| 2652 |
+
"family": "donut",
|
| 2653 |
+
"runtime": "transformers",
|
| 2654 |
+
"modalities": [
|
| 2655 |
+
"text",
|
| 2656 |
+
"vision"
|
| 2657 |
+
],
|
| 2658 |
+
"context_tokens": 1536,
|
| 2659 |
+
"jurisdiction": "NZ",
|
| 2660 |
+
"residency": [
|
| 2661 |
+
"NZ",
|
| 2662 |
+
"AU",
|
| 2663 |
+
"global"
|
| 2664 |
+
],
|
| 2665 |
+
"license_id": "mit",
|
| 2666 |
+
"quantization": "fp32 safetensors",
|
| 2667 |
+
"primary_artifact": "model.safetensors",
|
| 2668 |
+
"active_params_b": null,
|
| 2669 |
+
"total_params_b": 0.2,
|
| 2670 |
+
"quality_rank": 2,
|
| 2671 |
+
"cost_rank": 1,
|
| 2672 |
+
"sovereignty_tier": 3,
|
| 2673 |
+
"supports_tools": false,
|
| 2674 |
+
"supports_json": true,
|
| 2675 |
+
"tags": [
|
| 2676 |
+
"doc-ai",
|
| 2677 |
+
"donut",
|
| 2678 |
+
"document-vqa"
|
| 2679 |
+
],
|
| 2680 |
+
"metadata": {
|
| 2681 |
+
"upstream_repo": "naver-clova-ix/donut-base",
|
| 2682 |
+
"release_version": "v0.1.0",
|
| 2683 |
+
"package_state": "weights_mirrored",
|
| 2684 |
+
"public_status": "public and non-gated",
|
| 2685 |
+
"validation_status": "scaffold_verified"
|
| 2686 |
+
}
|
| 2687 |
+
},
|
| 2688 |
+
{
|
| 2689 |
+
"model_id": "lumynax-ocr-trocr-large-printed",
|
| 2690 |
+
"repo_id": "AbteeXAILab/lumynax-ocr-trocr-large-printed",
|
| 2691 |
+
"title": "LumynaX OCR TrOCR Large Printed",
|
| 2692 |
+
"family": "trocr",
|
| 2693 |
+
"runtime": "transformers",
|
| 2694 |
+
"modalities": [
|
| 2695 |
+
"text",
|
| 2696 |
+
"vision"
|
| 2697 |
+
],
|
| 2698 |
+
"context_tokens": 512,
|
| 2699 |
+
"jurisdiction": "NZ",
|
| 2700 |
+
"residency": [
|
| 2701 |
+
"NZ",
|
| 2702 |
+
"AU",
|
| 2703 |
+
"global"
|
| 2704 |
+
],
|
| 2705 |
+
"license_id": "mit",
|
| 2706 |
+
"quantization": "fp32 safetensors",
|
| 2707 |
+
"primary_artifact": "model.safetensors",
|
| 2708 |
+
"active_params_b": null,
|
| 2709 |
+
"total_params_b": 0.55,
|
| 2710 |
+
"quality_rank": 2,
|
| 2711 |
+
"cost_rank": 2,
|
| 2712 |
+
"sovereignty_tier": 3,
|
| 2713 |
+
"supports_tools": false,
|
| 2714 |
+
"supports_json": false,
|
| 2715 |
+
"tags": [
|
| 2716 |
+
"ocr",
|
| 2717 |
+
"printed",
|
| 2718 |
+
"trocr"
|
| 2719 |
+
],
|
| 2720 |
+
"metadata": {
|
| 2721 |
+
"upstream_repo": "microsoft/trocr-large-printed",
|
| 2722 |
+
"release_version": "v0.1.0",
|
| 2723 |
+
"package_state": "weights_mirrored",
|
| 2724 |
+
"public_status": "public and non-gated",
|
| 2725 |
+
"validation_status": "scaffold_verified"
|
| 2726 |
+
}
|
| 2727 |
+
},
|
| 2728 |
+
{
|
| 2729 |
+
"model_id": "lumynax-ocr-trocr-large-handwritten",
|
| 2730 |
+
"repo_id": "AbteeXAILab/lumynax-ocr-trocr-large-handwritten",
|
| 2731 |
+
"title": "LumynaX OCR TrOCR Large Handwritten",
|
| 2732 |
+
"family": "trocr",
|
| 2733 |
+
"runtime": "transformers",
|
| 2734 |
+
"modalities": [
|
| 2735 |
+
"text",
|
| 2736 |
+
"vision"
|
| 2737 |
+
],
|
| 2738 |
+
"context_tokens": 512,
|
| 2739 |
+
"jurisdiction": "NZ",
|
| 2740 |
+
"residency": [
|
| 2741 |
+
"NZ",
|
| 2742 |
+
"AU",
|
| 2743 |
+
"global"
|
| 2744 |
+
],
|
| 2745 |
+
"license_id": "mit",
|
| 2746 |
+
"quantization": "fp32 safetensors",
|
| 2747 |
+
"primary_artifact": "model.safetensors",
|
| 2748 |
+
"active_params_b": null,
|
| 2749 |
+
"total_params_b": 0.55,
|
| 2750 |
+
"quality_rank": 2,
|
| 2751 |
+
"cost_rank": 2,
|
| 2752 |
+
"sovereignty_tier": 3,
|
| 2753 |
+
"supports_tools": false,
|
| 2754 |
+
"supports_json": false,
|
| 2755 |
+
"tags": [
|
| 2756 |
+
"ocr",
|
| 2757 |
+
"handwritten",
|
| 2758 |
+
"trocr"
|
| 2759 |
+
],
|
| 2760 |
+
"metadata": {
|
| 2761 |
+
"upstream_repo": "microsoft/trocr-large-handwritten",
|
| 2762 |
+
"release_version": "v0.1.0",
|
| 2763 |
+
"package_state": "weights_mirrored",
|
| 2764 |
+
"public_status": "public and non-gated",
|
| 2765 |
+
"validation_status": "scaffold_verified"
|
| 2766 |
+
}
|
| 2767 |
+
},
|
| 2768 |
+
{
|
| 2769 |
+
"model_id": "lumynax-doc-layoutlmv3-base",
|
| 2770 |
+
"repo_id": "AbteeXAILab/lumynax-doc-layoutlmv3-base",
|
| 2771 |
+
"title": "LumynaX Doc LayoutLMv3 Base (document layout+text)",
|
| 2772 |
+
"family": "layoutlm",
|
| 2773 |
+
"runtime": "transformers",
|
| 2774 |
+
"modalities": [
|
| 2775 |
+
"text",
|
| 2776 |
+
"vision"
|
| 2777 |
+
],
|
| 2778 |
+
"context_tokens": 512,
|
| 2779 |
+
"jurisdiction": "NZ",
|
| 2780 |
+
"residency": [
|
| 2781 |
+
"NZ",
|
| 2782 |
+
"AU",
|
| 2783 |
+
"global"
|
| 2784 |
+
],
|
| 2785 |
+
"license_id": "cc-by-nc-4.0",
|
| 2786 |
+
"quantization": "fp32 safetensors",
|
| 2787 |
+
"primary_artifact": "model.safetensors",
|
| 2788 |
+
"active_params_b": null,
|
| 2789 |
+
"total_params_b": 0.13,
|
| 2790 |
+
"quality_rank": 2,
|
| 2791 |
+
"cost_rank": 1,
|
| 2792 |
+
"sovereignty_tier": 3,
|
| 2793 |
+
"supports_tools": false,
|
| 2794 |
+
"supports_json": true,
|
| 2795 |
+
"tags": [
|
| 2796 |
+
"doc-ai",
|
| 2797 |
+
"layout",
|
| 2798 |
+
"layoutlm"
|
| 2799 |
+
],
|
| 2800 |
+
"metadata": {
|
| 2801 |
+
"upstream_repo": "microsoft/layoutlmv3-base",
|
| 2802 |
+
"release_version": "v0.1.0",
|
| 2803 |
+
"package_state": "weights_mirrored",
|
| 2804 |
+
"public_status": "public and non-gated",
|
| 2805 |
+
"validation_status": "scaffold_verified"
|
| 2806 |
+
}
|
| 2807 |
+
},
|
| 2808 |
+
{
|
| 2809 |
+
"model_id": "lumynax-doc-table-transformer-detection",
|
| 2810 |
+
"repo_id": "AbteeXAILab/lumynax-doc-table-transformer-detection",
|
| 2811 |
+
"title": "LumynaX Doc Table Transformer (detection)",
|
| 2812 |
+
"family": "table-transformer",
|
| 2813 |
+
"runtime": "transformers",
|
| 2814 |
+
"modalities": [
|
| 2815 |
+
"vision"
|
| 2816 |
+
],
|
| 2817 |
+
"context_tokens": 0,
|
| 2818 |
+
"jurisdiction": "NZ",
|
| 2819 |
+
"residency": [
|
| 2820 |
+
"NZ",
|
| 2821 |
+
"AU",
|
| 2822 |
+
"global"
|
| 2823 |
+
],
|
| 2824 |
+
"license_id": "mit",
|
| 2825 |
+
"quantization": "fp32 safetensors",
|
| 2826 |
+
"primary_artifact": "model.safetensors",
|
| 2827 |
+
"active_params_b": null,
|
| 2828 |
+
"total_params_b": 0.029,
|
| 2829 |
+
"quality_rank": 2,
|
| 2830 |
+
"cost_rank": 1,
|
| 2831 |
+
"sovereignty_tier": 3,
|
| 2832 |
+
"supports_tools": false,
|
| 2833 |
+
"supports_json": true,
|
| 2834 |
+
"tags": [
|
| 2835 |
+
"doc-ai",
|
| 2836 |
+
"tables",
|
| 2837 |
+
"detection",
|
| 2838 |
+
"detr"
|
| 2839 |
+
],
|
| 2840 |
+
"metadata": {
|
| 2841 |
+
"upstream_repo": "microsoft/table-transformer-detection",
|
| 2842 |
+
"release_version": "v0.1.0",
|
| 2843 |
+
"package_state": "weights_mirrored",
|
| 2844 |
+
"public_status": "public and non-gated",
|
| 2845 |
+
"validation_status": "scaffold_verified"
|
| 2846 |
+
}
|
| 2847 |
+
},
|
| 2848 |
+
{
|
| 2849 |
+
"model_id": "lumynax-embed-nomic-v2-moe",
|
| 2850 |
+
"repo_id": "AbteeXAILab/lumynax-embed-nomic-v2-moe",
|
| 2851 |
+
"title": "LumynaX Embed Nomic v2 MoE (modern retrieval)",
|
| 2852 |
+
"family": "nomic",
|
| 2853 |
+
"runtime": "python_embedding",
|
| 2854 |
+
"modalities": [
|
| 2855 |
+
"text"
|
| 2856 |
+
],
|
| 2857 |
+
"context_tokens": 512,
|
| 2858 |
+
"jurisdiction": "NZ",
|
| 2859 |
+
"residency": [
|
| 2860 |
+
"NZ",
|
| 2861 |
+
"AU",
|
| 2862 |
+
"global"
|
| 2863 |
+
],
|
| 2864 |
+
"license_id": "apache-2.0",
|
| 2865 |
+
"quantization": "fp32 safetensors",
|
| 2866 |
+
"primary_artifact": "model.safetensors",
|
| 2867 |
+
"active_params_b": 0.305,
|
| 2868 |
+
"total_params_b": 0.475,
|
| 2869 |
+
"quality_rank": 1,
|
| 2870 |
+
"cost_rank": 1,
|
| 2871 |
+
"sovereignty_tier": 3,
|
| 2872 |
+
"supports_tools": false,
|
| 2873 |
+
"supports_json": true,
|
| 2874 |
+
"tags": [
|
| 2875 |
+
"embedding",
|
| 2876 |
+
"retrieval",
|
| 2877 |
+
"nomic",
|
| 2878 |
+
"moe",
|
| 2879 |
+
"modern"
|
| 2880 |
+
],
|
| 2881 |
+
"metadata": {
|
| 2882 |
+
"upstream_repo": "nomic-ai/nomic-embed-text-v2-moe",
|
| 2883 |
+
"release_version": "v0.1.0",
|
| 2884 |
+
"package_state": "weights_mirrored",
|
| 2885 |
+
"public_status": "public and non-gated",
|
| 2886 |
+
"validation_status": "scaffold_verified"
|
| 2887 |
+
}
|
| 2888 |
+
},
|
| 2889 |
+
{
|
| 2890 |
+
"model_id": "lumynax-embed-granite-278m-multilingual",
|
| 2891 |
+
"repo_id": "AbteeXAILab/lumynax-embed-granite-278m-multilingual",
|
| 2892 |
+
"title": "LumynaX Embed IBM Granite 278M Multilingual",
|
| 2893 |
+
"family": "granite",
|
| 2894 |
+
"runtime": "python_embedding",
|
| 2895 |
+
"modalities": [
|
| 2896 |
+
"text"
|
| 2897 |
+
],
|
| 2898 |
+
"context_tokens": 512,
|
| 2899 |
+
"jurisdiction": "NZ",
|
| 2900 |
+
"residency": [
|
| 2901 |
+
"NZ",
|
| 2902 |
+
"AU",
|
| 2903 |
+
"global"
|
| 2904 |
+
],
|
| 2905 |
+
"license_id": "apache-2.0",
|
| 2906 |
+
"quantization": "fp32 safetensors",
|
| 2907 |
+
"primary_artifact": "model.safetensors",
|
| 2908 |
+
"active_params_b": null,
|
| 2909 |
+
"total_params_b": 0.278,
|
| 2910 |
+
"quality_rank": 2,
|
| 2911 |
+
"cost_rank": 1,
|
| 2912 |
+
"sovereignty_tier": 3,
|
| 2913 |
+
"supports_tools": false,
|
| 2914 |
+
"supports_json": true,
|
| 2915 |
+
"tags": [
|
| 2916 |
+
"embedding",
|
| 2917 |
+
"retrieval",
|
| 2918 |
+
"granite",
|
| 2919 |
+
"multilingual",
|
| 2920 |
+
"ibm"
|
| 2921 |
+
],
|
| 2922 |
+
"metadata": {
|
| 2923 |
+
"upstream_repo": "ibm-granite/granite-embedding-278m-multilingual",
|
| 2924 |
+
"release_version": "v0.1.0",
|
| 2925 |
+
"package_state": "weights_mirrored",
|
| 2926 |
+
"public_status": "public and non-gated",
|
| 2927 |
+
"validation_status": "scaffold_verified"
|
| 2928 |
+
}
|
| 2929 |
+
}
|
| 2930 |
+
]
|
| 2931 |
+
}
|
configs/provider_aliases.yaml
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
provider_id: abteex-marama
|
| 2 |
+
base_path: /v1
|
| 3 |
+
default_model_alias: lumynax/auto
|
| 4 |
+
aliases:
|
| 5 |
+
lumynax/auto:
|
| 6 |
+
task_type: general
|
| 7 |
+
requires_local: true
|
| 8 |
+
description: Select the best resident LumynaX model for the request.
|
| 9 |
+
lumynax/code:
|
| 10 |
+
task_type: code
|
| 11 |
+
requires_local: true
|
| 12 |
+
requires_json: true
|
| 13 |
+
description: Prefer coder-tagged LumynaX models with tool and JSON support.
|
| 14 |
+
lumynax/reasoning:
|
| 15 |
+
task_type: reasoning
|
| 16 |
+
requires_local: true
|
| 17 |
+
description: Prefer reasoning-tagged models inside residency constraints.
|
| 18 |
+
lumynax/multimodal:
|
| 19 |
+
task_type: multimodal
|
| 20 |
+
requires_local: false
|
| 21 |
+
description: Prefer text-plus-image LumynaX models when policy allows.
|
| 22 |
+
default_route:
|
| 23 |
+
jurisdiction: NZ
|
| 24 |
+
data_sensitivity: internal
|
| 25 |
+
min_context_tokens: 4096
|
| 26 |
+
max_fallbacks: 3
|
| 27 |
+
telemetry:
|
| 28 |
+
retain_prompt_by_default: false
|
| 29 |
+
retain_route_decision_days: 365
|
| 30 |
+
hash_request_payload: true
|
configs/routing_policy.yaml
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
policy_id: lumynax-marama-route-default-v0
|
| 2 |
+
default_jurisdiction: NZ
|
| 3 |
+
default_requires_local: true
|
| 4 |
+
high_sensitivity:
|
| 5 |
+
- personal
|
| 6 |
+
- restricted
|
| 7 |
+
- health
|
| 8 |
+
- iwi
|
| 9 |
+
- taonga
|
| 10 |
+
required_for_high_sensitivity:
|
| 11 |
+
min_sovereignty_tier: 2
|
| 12 |
+
residency_must_match_request_jurisdiction: true
|
| 13 |
+
retain_prompt_by_default: false
|
| 14 |
+
preferred_runtimes:
|
| 15 |
+
- llama_cpp
|
| 16 |
+
- transformers_multimodal
|
| 17 |
+
- python_embedding
|
| 18 |
+
fallbacks:
|
| 19 |
+
max_default_fallbacks: 3
|
| 20 |
+
include_rejection_reasons: true
|
examples/capsule.personal-sovereignty-profile.json
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"capsule_id": "cap-personal-profile-001",
|
| 3 |
+
"subject_id": "operator-local-profile",
|
| 4 |
+
"jurisdiction": "NZ",
|
| 5 |
+
"sensitivity": "personal",
|
| 6 |
+
"allowed_purposes": [
|
| 7 |
+
"personal_memory",
|
| 8 |
+
"coding_assistance",
|
| 9 |
+
"inference"
|
| 10 |
+
],
|
| 11 |
+
"denied_purposes": [
|
| 12 |
+
"ad_training",
|
| 13 |
+
"third_party_resale",
|
| 14 |
+
"public_leaderboard"
|
| 15 |
+
],
|
| 16 |
+
"resident_regions": [
|
| 17 |
+
"NZ"
|
| 18 |
+
],
|
| 19 |
+
"data_classes": [
|
| 20 |
+
"personal",
|
| 21 |
+
"preferences",
|
| 22 |
+
"source_code",
|
| 23 |
+
"runtime_logs"
|
| 24 |
+
],
|
| 25 |
+
"retention_days": 7,
|
| 26 |
+
"export_allowed": false,
|
| 27 |
+
"training_allowed": false,
|
| 28 |
+
"personal_detail_level": "pseudonymous",
|
| 29 |
+
"consent_scopes": [
|
| 30 |
+
"personal_memory",
|
| 31 |
+
"coding_assistance"
|
| 32 |
+
],
|
| 33 |
+
"data_subject_rights": [
|
| 34 |
+
"access",
|
| 35 |
+
"correction",
|
| 36 |
+
"deletion_request",
|
| 37 |
+
"processing_objection"
|
| 38 |
+
],
|
| 39 |
+
"schema_context": "https://schema.org",
|
| 40 |
+
"consent_record": "local-profile-consent-v0",
|
| 41 |
+
"metadata": {
|
| 42 |
+
"storage": "local_encrypted_profile_store",
|
| 43 |
+
"prompt_rule": "summarise preferences without exposing raw personal notes"
|
| 44 |
+
}
|
| 45 |
+
}
|
examples/opencode.marama-route.json
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"$schema": "https://opencode.ai/config.json",
|
| 3 |
+
"provider": {
|
| 4 |
+
"abteex-marama": {
|
| 5 |
+
"npm": "@ai-sdk/openai-compatible",
|
| 6 |
+
"name": "AbteeX MaramaRoute",
|
| 7 |
+
"options": {
|
| 8 |
+
"baseURL": "http://127.0.0.1:8787/v1",
|
| 9 |
+
"apiKey": "{env:ABTEEX_MARAMA_API_KEY}",
|
| 10 |
+
"headers": {
|
| 11 |
+
"X-AbteeX-Tenant": "{env:ABTEEX_TENANT_ID}",
|
| 12 |
+
"X-AbteeX-Workspace-Capsule": "{env:SOVEREIGNCODE_CAPSULE_ID}"
|
| 13 |
+
}
|
| 14 |
+
},
|
| 15 |
+
"models": {
|
| 16 |
+
"lumynax/auto": {
|
| 17 |
+
"name": "LumynaX Auto Sovereign Route"
|
| 18 |
+
},
|
| 19 |
+
"lumynax/code": {
|
| 20 |
+
"name": "LumynaX Code Route"
|
| 21 |
+
},
|
| 22 |
+
"lumynax/reasoning": {
|
| 23 |
+
"name": "LumynaX Reasoning Route"
|
| 24 |
+
}
|
| 25 |
+
}
|
| 26 |
+
}
|
| 27 |
+
}
|
| 28 |
+
}
|
examples/request.code-restricted.json
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"prompt": "Refactor this private Python service and explain the diff.",
|
| 3 |
+
"task_type": "code",
|
| 4 |
+
"modalities": [
|
| 5 |
+
"text"
|
| 6 |
+
],
|
| 7 |
+
"jurisdiction": "NZ",
|
| 8 |
+
"data_sensitivity": "restricted",
|
| 9 |
+
"min_context_tokens": 4096,
|
| 10 |
+
"requires_local": true,
|
| 11 |
+
"requires_tools": false,
|
| 12 |
+
"requires_json": true,
|
| 13 |
+
"max_fallbacks": 3
|
| 14 |
+
}
|
examples/request.openai-chat-code.json
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "lumynax/code",
|
| 3 |
+
"messages": [
|
| 4 |
+
{
|
| 5 |
+
"role": "system",
|
| 6 |
+
"content": "You are a governed coding assistant for a New Zealand workspace."
|
| 7 |
+
},
|
| 8 |
+
{
|
| 9 |
+
"role": "user",
|
| 10 |
+
"content": "Refactor this private Python repository function and return a JSON diff plan."
|
| 11 |
+
}
|
| 12 |
+
],
|
| 13 |
+
"response_format": {
|
| 14 |
+
"type": "json_object"
|
| 15 |
+
},
|
| 16 |
+
"tools": [
|
| 17 |
+
{
|
| 18 |
+
"type": "function",
|
| 19 |
+
"function": {
|
| 20 |
+
"name": "propose_patch",
|
| 21 |
+
"description": "Propose a patch without writing it.",
|
| 22 |
+
"parameters": {
|
| 23 |
+
"type": "object",
|
| 24 |
+
"properties": {
|
| 25 |
+
"files": {
|
| 26 |
+
"type": "array",
|
| 27 |
+
"items": { "type": "string" }
|
| 28 |
+
}
|
| 29 |
+
}
|
| 30 |
+
}
|
| 31 |
+
}
|
| 32 |
+
}
|
| 33 |
+
],
|
| 34 |
+
"route": {
|
| 35 |
+
"jurisdiction": "NZ",
|
| 36 |
+
"data_sensitivity": "restricted",
|
| 37 |
+
"task_type": "code",
|
| 38 |
+
"requires_local": true,
|
| 39 |
+
"requires_tools": true,
|
| 40 |
+
"requires_json": true,
|
| 41 |
+
"min_context_tokens": 4096,
|
| 42 |
+
"max_fallbacks": 3
|
| 43 |
+
}
|
| 44 |
+
}
|
examples/request.personal-memory-read.json
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"actor": "developer",
|
| 3 |
+
"purpose": "personal_memory",
|
| 4 |
+
"action": "read_context",
|
| 5 |
+
"region": "NZ",
|
| 6 |
+
"model_id": "local/lumynax",
|
| 7 |
+
"data_classes": [
|
| 8 |
+
"personal",
|
| 9 |
+
"preferences"
|
| 10 |
+
],
|
| 11 |
+
"tool_name": "personal_profile_reader",
|
| 12 |
+
"writes_files": false,
|
| 13 |
+
"exports_data": false,
|
| 14 |
+
"trains_model": false,
|
| 15 |
+
"human_approved": false,
|
| 16 |
+
"personal_detail_level": "pseudonymous",
|
| 17 |
+
"consent_scope": "personal_memory",
|
| 18 |
+
"requested_retention_days": 7
|
| 19 |
+
}
|
integrations/opencode-compatible-provider.md
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# OpenCode-Compatible Provider Integration
|
| 2 |
+
|
| 3 |
+
## Goal
|
| 4 |
+
|
| 5 |
+
Make AbteeX SovereignCode usable from OpenCode and similar coding agents without
|
| 6 |
+
requiring those tools to understand Data Capsules directly.
|
| 7 |
+
|
| 8 |
+
The integration shape is:
|
| 9 |
+
|
| 10 |
+
```text
|
| 11 |
+
OpenCode
|
| 12 |
+
-> OpenAI-compatible provider config
|
| 13 |
+
-> MaramaRoute gateway `/v1`
|
| 14 |
+
-> SovereignCode policy and tool broker
|
| 15 |
+
-> LumynaX model runtime
|
| 16 |
+
```
|
| 17 |
+
|
| 18 |
+
## Current Compatibility Target
|
| 19 |
+
|
| 20 |
+
OpenCode supports custom OpenAI-compatible providers through
|
| 21 |
+
`@ai-sdk/openai-compatible` and a provider `baseURL`. OpenRouter exposes an
|
| 22 |
+
OpenAI-like chat endpoint at `/api/v1/chat/completions`, with normalized request
|
| 23 |
+
and response payloads. MaramaRoute should therefore expose:
|
| 24 |
+
|
| 25 |
+
- `GET /v1/models`
|
| 26 |
+
- `POST /v1/chat/completions`
|
| 27 |
+
- `POST /v1/route`
|
| 28 |
+
- `GET /v1/route/{decision_id}`
|
| 29 |
+
|
| 30 |
+
References checked on 2026-05-17:
|
| 31 |
+
|
| 32 |
+
- https://opencode.ai/docs/providers
|
| 33 |
+
- https://openrouter.ai/docs/api-reference/overview/
|
| 34 |
+
- https://openrouter.ai/docs/api-reference/chat-completion
|
| 35 |
+
|
| 36 |
+
## OpenCode Provider Config
|
| 37 |
+
|
| 38 |
+
Use `examples/opencode.marama-route.json` as the project-local provider file.
|
| 39 |
+
|
| 40 |
+
The important fields are:
|
| 41 |
+
|
| 42 |
+
| Field | Value |
|
| 43 |
+
| --- | --- |
|
| 44 |
+
| `provider.abteex-marama.npm` | `@ai-sdk/openai-compatible` |
|
| 45 |
+
| `provider.abteex-marama.options.baseURL` | Local or hosted MaramaRoute `/v1` URL |
|
| 46 |
+
| `provider.abteex-marama.options.apiKey` | Environment backed key |
|
| 47 |
+
| `provider.abteex-marama.models` | LumynaX model aliases exposed by MaramaRoute |
|
| 48 |
+
|
| 49 |
+
## SovereignCode Responsibilities
|
| 50 |
+
|
| 51 |
+
OpenCode sends a normal chat request. SovereignCode and MaramaRoute add:
|
| 52 |
+
|
| 53 |
+
- capsule resolution from workspace policy files
|
| 54 |
+
- purpose and personal-detail checks before prompt assembly
|
| 55 |
+
- model routing based on residency, modality, task, and sensitivity
|
| 56 |
+
- visible approval gates before file writes, shell commands, network export, or commit
|
| 57 |
+
- audit records for policy decisions and route decisions
|
| 58 |
+
|
| 59 |
+
## Workspace Files
|
| 60 |
+
|
| 61 |
+
A governed workspace should carry:
|
| 62 |
+
|
| 63 |
+
```text
|
| 64 |
+
.sovereigncode/
|
| 65 |
+
capsule.json
|
| 66 |
+
tenant-policy.yaml
|
| 67 |
+
approvals/
|
| 68 |
+
audit/
|
| 69 |
+
opencode.json
|
| 70 |
+
```
|
| 71 |
+
|
| 72 |
+
The agent can start with `capsule.json` and `opencode.json`. The full tool
|
| 73 |
+
broker can add approvals and audit persistence in the next build stage.
|
| 74 |
+
|
| 75 |
+
## Minimum Viable Flow
|
| 76 |
+
|
| 77 |
+
1. User opens a project in OpenCode.
|
| 78 |
+
2. OpenCode uses the `abteex-marama` provider.
|
| 79 |
+
3. MaramaRoute dry-runs the chat payload and selects a LumynaX model.
|
| 80 |
+
4. SovereignCode checks the workspace Data Capsule before exposing context.
|
| 81 |
+
5. The coding agent proposes a plan.
|
| 82 |
+
6. File writes require a visible diff and an audit record.
|
| 83 |
+
7. Shell, network, commit, and publish actions require explicit approval.
|
| 84 |
+
|
| 85 |
+
## Similar Clients
|
| 86 |
+
|
| 87 |
+
Any client that can point at an OpenAI-compatible endpoint should use the same
|
| 88 |
+
gateway:
|
| 89 |
+
|
| 90 |
+
| Client type | Expected integration |
|
| 91 |
+
| --- | --- |
|
| 92 |
+
| OpenCode | `opencode.json` custom provider |
|
| 93 |
+
| Continue-style IDE assistant | OpenAI-compatible base URL and model ids |
|
| 94 |
+
| Aider-style terminal assistant | OpenAI-compatible base URL and key |
|
| 95 |
+
| Internal agent runner | Direct `/v1/route` and `/v1/chat/completions` calls |
|
| 96 |
+
| Browser console | Same API behind tenant auth |
|
marama_route/__init__.py
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from __future__ import annotations
|
| 2 |
+
|
| 3 |
+
from .gateway import (
|
| 4 |
+
build_chat_route_response,
|
| 5 |
+
build_models_response,
|
| 6 |
+
route_chat_payload,
|
| 7 |
+
routing_request_from_chat_payload,
|
| 8 |
+
)
|
| 9 |
+
from .registry import ModelEndpoint, RoutingRequest, load_model_registry
|
| 10 |
+
from .router import RouteDecision, SovereignModelRouter
|
| 11 |
+
|
| 12 |
+
__all__ = [
|
| 13 |
+
"ModelEndpoint",
|
| 14 |
+
"RouteDecision",
|
| 15 |
+
"RoutingRequest",
|
| 16 |
+
"SovereignModelRouter",
|
| 17 |
+
"build_chat_route_response",
|
| 18 |
+
"build_models_response",
|
| 19 |
+
"load_model_registry",
|
| 20 |
+
"route_chat_payload",
|
| 21 |
+
"routing_request_from_chat_payload",
|
| 22 |
+
]
|
marama_route/cli.py
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from __future__ import annotations
|
| 2 |
+
|
| 3 |
+
import argparse
|
| 4 |
+
import json
|
| 5 |
+
from collections.abc import Sequence
|
| 6 |
+
from pathlib import Path
|
| 7 |
+
from typing import Any
|
| 8 |
+
|
| 9 |
+
from .gateway import build_models_response, route_chat_payload
|
| 10 |
+
from .registry import RoutingRequest, load_model_registry
|
| 11 |
+
from .router import SovereignModelRouter
|
| 12 |
+
|
| 13 |
+
|
| 14 |
+
def _load_json_mapping(path: Path) -> dict[str, Any]:
|
| 15 |
+
payload = json.loads(path.read_text(encoding="utf-8-sig"))
|
| 16 |
+
if not isinstance(payload, dict):
|
| 17 |
+
raise ValueError(f"Expected mapping in {path}")
|
| 18 |
+
return payload
|
| 19 |
+
|
| 20 |
+
|
| 21 |
+
def _route(args: argparse.Namespace) -> int:
|
| 22 |
+
models = load_model_registry(args.registry)
|
| 23 |
+
payload = _load_json_mapping(args.request)
|
| 24 |
+
decision = SovereignModelRouter(models).route(RoutingRequest.from_payload(payload))
|
| 25 |
+
print(json.dumps(decision.to_dict(), indent=2, sort_keys=True))
|
| 26 |
+
return 0 if decision.selected_model is not None else 2
|
| 27 |
+
|
| 28 |
+
|
| 29 |
+
def _models(args: argparse.Namespace) -> int:
|
| 30 |
+
models = load_model_registry(args.registry)
|
| 31 |
+
print(json.dumps(build_models_response(models), indent=2, sort_keys=True))
|
| 32 |
+
return 0
|
| 33 |
+
|
| 34 |
+
|
| 35 |
+
def _chat_dry_run(args: argparse.Namespace) -> int:
|
| 36 |
+
models = load_model_registry(args.registry)
|
| 37 |
+
payload = _load_json_mapping(args.request)
|
| 38 |
+
result = route_chat_payload(payload, models)
|
| 39 |
+
print(json.dumps(result, indent=2, sort_keys=True))
|
| 40 |
+
selected = result["route_decision"]["selected_model"]
|
| 41 |
+
return 0 if selected is not None else 2
|
| 42 |
+
|
| 43 |
+
|
| 44 |
+
def build_parser() -> argparse.ArgumentParser:
|
| 45 |
+
parser = argparse.ArgumentParser(
|
| 46 |
+
prog="lumynax-marama-route",
|
| 47 |
+
description="Route requests across LumynaX sovereign model releases.",
|
| 48 |
+
)
|
| 49 |
+
subparsers = parser.add_subparsers(dest="command")
|
| 50 |
+
route = subparsers.add_parser("route", help="Select a LumynaX model for a request.")
|
| 51 |
+
route.add_argument("--registry", type=Path, required=True, help="MaramaRoute model registry JSON.")
|
| 52 |
+
route.add_argument("--request", type=Path, required=True, help="Routing request JSON.")
|
| 53 |
+
route.set_defaults(handler=_route)
|
| 54 |
+
|
| 55 |
+
models = subparsers.add_parser(
|
| 56 |
+
"models",
|
| 57 |
+
help="Emit an OpenAI-compatible /v1/models response.",
|
| 58 |
+
)
|
| 59 |
+
models.add_argument("--registry", type=Path, required=True, help="MaramaRoute model registry JSON.")
|
| 60 |
+
models.set_defaults(handler=_models)
|
| 61 |
+
|
| 62 |
+
chat = subparsers.add_parser(
|
| 63 |
+
"chat-dry-run",
|
| 64 |
+
help="Route an OpenAI-compatible chat request without invoking a backend.",
|
| 65 |
+
)
|
| 66 |
+
chat.add_argument("--registry", type=Path, required=True, help="MaramaRoute model registry JSON.")
|
| 67 |
+
chat.add_argument("--request", type=Path, required=True, help="OpenAI chat request JSON.")
|
| 68 |
+
chat.set_defaults(handler=_chat_dry_run)
|
| 69 |
+
return parser
|
| 70 |
+
|
| 71 |
+
|
| 72 |
+
def main(argv: Sequence[str] | None = None) -> int:
|
| 73 |
+
parser = build_parser()
|
| 74 |
+
args = parser.parse_args(argv)
|
| 75 |
+
handler = getattr(args, "handler", None)
|
| 76 |
+
if handler is None:
|
| 77 |
+
parser.print_help()
|
| 78 |
+
return 0
|
| 79 |
+
return int(handler(args))
|
| 80 |
+
|
| 81 |
+
|
| 82 |
+
if __name__ == "__main__":
|
| 83 |
+
raise SystemExit(main())
|
marama_route/gateway.py
ADDED
|
@@ -0,0 +1,204 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from __future__ import annotations
|
| 2 |
+
|
| 3 |
+
import hashlib
|
| 4 |
+
import json
|
| 5 |
+
import time
|
| 6 |
+
from typing import Any
|
| 7 |
+
|
| 8 |
+
from .registry import ModelEndpoint, RoutingRequest
|
| 9 |
+
from .router import RouteDecision, SovereignModelRouter
|
| 10 |
+
|
| 11 |
+
|
| 12 |
+
def routing_request_from_chat_payload(payload: dict[str, Any]) -> RoutingRequest:
|
| 13 |
+
"""Translate an OpenAI-compatible chat request into a routing request."""
|
| 14 |
+
|
| 15 |
+
route_options = _mapping(
|
| 16 |
+
payload.get("route")
|
| 17 |
+
or payload.get("routing")
|
| 18 |
+
or _mapping(payload.get("metadata")).get("marama_route"),
|
| 19 |
+
)
|
| 20 |
+
prompt, modalities = _prompt_and_modalities(payload)
|
| 21 |
+
tools = payload.get("tools")
|
| 22 |
+
response_format = _mapping(payload.get("response_format"))
|
| 23 |
+
task_type = str(route_options.get("task_type") or _infer_task_type(prompt, modalities))
|
| 24 |
+
|
| 25 |
+
return RoutingRequest.from_payload(
|
| 26 |
+
{
|
| 27 |
+
"prompt": prompt,
|
| 28 |
+
"task_type": task_type,
|
| 29 |
+
"modalities": sorted(modalities),
|
| 30 |
+
"jurisdiction": route_options.get("jurisdiction", "NZ"),
|
| 31 |
+
"data_sensitivity": route_options.get("data_sensitivity", "internal"),
|
| 32 |
+
"min_context_tokens": route_options.get("min_context_tokens", 4096),
|
| 33 |
+
"requires_local": route_options.get("requires_local", True),
|
| 34 |
+
"requires_tools": bool(tools) or bool(route_options.get("requires_tools")),
|
| 35 |
+
"requires_json": _requires_json(response_format, route_options),
|
| 36 |
+
"license_allowlist": route_options.get("license_allowlist", ()),
|
| 37 |
+
"max_fallbacks": route_options.get("max_fallbacks", 3),
|
| 38 |
+
"metadata": {
|
| 39 |
+
"requested_model": payload.get("model", "auto"),
|
| 40 |
+
"source_protocol": "openai_chat_completions",
|
| 41 |
+
},
|
| 42 |
+
},
|
| 43 |
+
)
|
| 44 |
+
|
| 45 |
+
|
| 46 |
+
def build_models_response(models: tuple[ModelEndpoint, ...]) -> dict[str, Any]:
|
| 47 |
+
"""Return an OpenAI-compatible `/v1/models` listing."""
|
| 48 |
+
|
| 49 |
+
return {
|
| 50 |
+
"object": "list",
|
| 51 |
+
"data": [
|
| 52 |
+
{
|
| 53 |
+
"id": model.model_id,
|
| 54 |
+
"object": "model",
|
| 55 |
+
"created": 0,
|
| 56 |
+
"owned_by": model.repo_id.split("/", maxsplit=1)[0],
|
| 57 |
+
"metadata": {
|
| 58 |
+
"repo_id": model.repo_id,
|
| 59 |
+
"runtime": model.runtime,
|
| 60 |
+
"modalities": list(model.modalities),
|
| 61 |
+
"context_tokens": model.context_tokens,
|
| 62 |
+
"residency": list(model.residency),
|
| 63 |
+
"sovereignty_tier": model.sovereignty_tier,
|
| 64 |
+
"supports_tools": model.supports_tools,
|
| 65 |
+
"supports_json": model.supports_json,
|
| 66 |
+
"tags": list(model.tags),
|
| 67 |
+
},
|
| 68 |
+
}
|
| 69 |
+
for model in models
|
| 70 |
+
],
|
| 71 |
+
}
|
| 72 |
+
|
| 73 |
+
|
| 74 |
+
def build_chat_route_response(
|
| 75 |
+
payload: dict[str, Any],
|
| 76 |
+
decision: RouteDecision,
|
| 77 |
+
) -> dict[str, Any]:
|
| 78 |
+
"""Return a dry-run chat response with route metadata and no generated text."""
|
| 79 |
+
|
| 80 |
+
selected = decision.selected_model
|
| 81 |
+
created = int(time.time())
|
| 82 |
+
request_hash = hashlib.sha256(
|
| 83 |
+
json.dumps(payload, sort_keys=True, default=str).encode("utf-8"),
|
| 84 |
+
).hexdigest()
|
| 85 |
+
model_id = selected.model_id if selected is not None else str(payload.get("model", ""))
|
| 86 |
+
|
| 87 |
+
return {
|
| 88 |
+
"id": f"marama-route-{request_hash[:16]}",
|
| 89 |
+
"object": "chat.completion",
|
| 90 |
+
"created": created,
|
| 91 |
+
"model": model_id,
|
| 92 |
+
"choices": [
|
| 93 |
+
{
|
| 94 |
+
"index": 0,
|
| 95 |
+
"finish_reason": "route_only",
|
| 96 |
+
"message": {
|
| 97 |
+
"role": "assistant",
|
| 98 |
+
"content": "",
|
| 99 |
+
},
|
| 100 |
+
},
|
| 101 |
+
],
|
| 102 |
+
"usage": {
|
| 103 |
+
"prompt_tokens": 0,
|
| 104 |
+
"completion_tokens": 0,
|
| 105 |
+
"total_tokens": 0,
|
| 106 |
+
},
|
| 107 |
+
"marama_route": {
|
| 108 |
+
"dry_run": True,
|
| 109 |
+
"selected_model": selected.to_dict() if selected is not None else None,
|
| 110 |
+
"fallback_models": [model.to_dict() for model in decision.fallback_models],
|
| 111 |
+
"rejected_count": len(decision.rejected),
|
| 112 |
+
"reasons": list(decision.reasons),
|
| 113 |
+
"scores": dict(decision.scores),
|
| 114 |
+
"request_hash": request_hash,
|
| 115 |
+
},
|
| 116 |
+
}
|
| 117 |
+
|
| 118 |
+
|
| 119 |
+
def route_chat_payload(
|
| 120 |
+
payload: dict[str, Any],
|
| 121 |
+
models: tuple[ModelEndpoint, ...],
|
| 122 |
+
) -> dict[str, Any]:
|
| 123 |
+
request = routing_request_from_chat_payload(payload)
|
| 124 |
+
decision = SovereignModelRouter(models).route(request)
|
| 125 |
+
return {
|
| 126 |
+
"routing_request": request.to_dict(),
|
| 127 |
+
"route_decision": decision.to_dict(),
|
| 128 |
+
"chat_completion_response": build_chat_route_response(payload, decision),
|
| 129 |
+
}
|
| 130 |
+
|
| 131 |
+
|
| 132 |
+
def _mapping(value: object) -> dict[str, Any]:
|
| 133 |
+
return dict(value) if isinstance(value, dict) else {}
|
| 134 |
+
|
| 135 |
+
|
| 136 |
+
def _requires_json(
|
| 137 |
+
response_format: dict[str, Any],
|
| 138 |
+
route_options: dict[str, Any],
|
| 139 |
+
) -> bool:
|
| 140 |
+
if bool(route_options.get("requires_json")):
|
| 141 |
+
return True
|
| 142 |
+
response_type = str(response_format.get("type", "")).lower()
|
| 143 |
+
return response_type in {"json_object", "json_schema"}
|
| 144 |
+
|
| 145 |
+
|
| 146 |
+
def _prompt_and_modalities(payload: dict[str, Any]) -> tuple[str, set[str]]:
|
| 147 |
+
modalities = {"text"}
|
| 148 |
+
pieces: list[str] = []
|
| 149 |
+
messages = payload.get("messages")
|
| 150 |
+
if isinstance(messages, list):
|
| 151 |
+
for message in messages:
|
| 152 |
+
if not isinstance(message, dict):
|
| 153 |
+
continue
|
| 154 |
+
content = message.get("content")
|
| 155 |
+
text, content_modalities = _content_text_and_modalities(content)
|
| 156 |
+
pieces.append(text)
|
| 157 |
+
modalities.update(content_modalities)
|
| 158 |
+
elif isinstance(payload.get("prompt"), str):
|
| 159 |
+
pieces.append(str(payload["prompt"]))
|
| 160 |
+
return "\n".join(piece for piece in pieces if piece), modalities
|
| 161 |
+
|
| 162 |
+
|
| 163 |
+
def _content_text_and_modalities(content: object) -> tuple[str, set[str]]:
|
| 164 |
+
if isinstance(content, str):
|
| 165 |
+
return content, {"text"}
|
| 166 |
+
if not isinstance(content, list):
|
| 167 |
+
return "", {"text"}
|
| 168 |
+
|
| 169 |
+
pieces: list[str] = []
|
| 170 |
+
modalities = {"text"}
|
| 171 |
+
for part in content:
|
| 172 |
+
if not isinstance(part, dict):
|
| 173 |
+
continue
|
| 174 |
+
part_type = str(part.get("type", "")).lower()
|
| 175 |
+
if part_type in {"text", "input_text"}:
|
| 176 |
+
pieces.append(str(part.get("text", "")))
|
| 177 |
+
elif part_type in {"image", "image_url", "input_image"}:
|
| 178 |
+
modalities.add("image")
|
| 179 |
+
elif part_type in {"audio", "input_audio"}:
|
| 180 |
+
modalities.add("audio")
|
| 181 |
+
return "\n".join(piece for piece in pieces if piece), modalities
|
| 182 |
+
|
| 183 |
+
|
| 184 |
+
def _infer_task_type(prompt: str, modalities: set[str]) -> str:
|
| 185 |
+
prompt_lower = prompt.lower()
|
| 186 |
+
if "image" in modalities or "vision" in modalities:
|
| 187 |
+
return "multimodal"
|
| 188 |
+
code_markers = (
|
| 189 |
+
"refactor",
|
| 190 |
+
"diff",
|
| 191 |
+
"unit test",
|
| 192 |
+
"python",
|
| 193 |
+
"typescript",
|
| 194 |
+
"javascript",
|
| 195 |
+
"repository",
|
| 196 |
+
"function",
|
| 197 |
+
"class ",
|
| 198 |
+
"stack trace",
|
| 199 |
+
)
|
| 200 |
+
if any(marker in prompt_lower for marker in code_markers):
|
| 201 |
+
return "code"
|
| 202 |
+
if "reason" in prompt_lower or "prove" in prompt_lower:
|
| 203 |
+
return "reasoning"
|
| 204 |
+
return "general"
|
marama_route/registry.py
ADDED
|
@@ -0,0 +1,150 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from __future__ import annotations
|
| 2 |
+
|
| 3 |
+
import json
|
| 4 |
+
from dataclasses import dataclass, field
|
| 5 |
+
from pathlib import Path
|
| 6 |
+
from typing import Any
|
| 7 |
+
|
| 8 |
+
|
| 9 |
+
def _text_tuple(value: object, *, default: tuple[str, ...] = ()) -> tuple[str, ...]:
|
| 10 |
+
if value in (None, ""):
|
| 11 |
+
return default
|
| 12 |
+
if isinstance(value, str):
|
| 13 |
+
return (value,)
|
| 14 |
+
if isinstance(value, (list, tuple, set)):
|
| 15 |
+
return tuple(str(item).strip() for item in value if str(item).strip())
|
| 16 |
+
return (str(value).strip(),)
|
| 17 |
+
|
| 18 |
+
|
| 19 |
+
@dataclass(frozen=True, slots=True)
|
| 20 |
+
class ModelEndpoint:
|
| 21 |
+
model_id: str
|
| 22 |
+
repo_id: str
|
| 23 |
+
family: str
|
| 24 |
+
runtime: str
|
| 25 |
+
modalities: tuple[str, ...] = ("text",)
|
| 26 |
+
context_tokens: int = 4096
|
| 27 |
+
jurisdiction: str = "NZ"
|
| 28 |
+
residency: tuple[str, ...] = ("NZ",)
|
| 29 |
+
license_id: str = "see_model_card"
|
| 30 |
+
quantization: str = "see_manifest"
|
| 31 |
+
primary_artifact: str = ""
|
| 32 |
+
active_params_b: float | None = None
|
| 33 |
+
total_params_b: float | None = None
|
| 34 |
+
quality_rank: int = 5
|
| 35 |
+
cost_rank: int = 5
|
| 36 |
+
sovereignty_tier: int = 2
|
| 37 |
+
supports_tools: bool = False
|
| 38 |
+
supports_json: bool = False
|
| 39 |
+
tags: tuple[str, ...] = ()
|
| 40 |
+
metadata: dict[str, Any] = field(default_factory=dict)
|
| 41 |
+
|
| 42 |
+
@classmethod
|
| 43 |
+
def from_payload(cls, payload: dict[str, Any]) -> ModelEndpoint:
|
| 44 |
+
return cls(
|
| 45 |
+
model_id=str(payload.get("model_id") or payload.get("repo_id") or ""),
|
| 46 |
+
repo_id=str(payload.get("repo_id") or payload.get("model_id") or ""),
|
| 47 |
+
family=str(payload.get("family") or "lumynax"),
|
| 48 |
+
runtime=str(payload.get("runtime") or "llama_cpp"),
|
| 49 |
+
modalities=_text_tuple(payload.get("modalities"), default=("text",)),
|
| 50 |
+
context_tokens=int(payload.get("context_tokens") or 4096),
|
| 51 |
+
jurisdiction=str(payload.get("jurisdiction") or "NZ").upper(),
|
| 52 |
+
residency=tuple(str(item).upper() for item in _text_tuple(payload.get("residency"), default=("NZ",))),
|
| 53 |
+
license_id=str(payload.get("license_id") or "see_model_card"),
|
| 54 |
+
quantization=str(payload.get("quantization") or "see_manifest"),
|
| 55 |
+
primary_artifact=str(payload.get("primary_artifact") or ""),
|
| 56 |
+
active_params_b=(
|
| 57 |
+
float(payload["active_params_b"]) if payload.get("active_params_b") is not None else None
|
| 58 |
+
),
|
| 59 |
+
total_params_b=(
|
| 60 |
+
float(payload["total_params_b"]) if payload.get("total_params_b") is not None else None
|
| 61 |
+
),
|
| 62 |
+
quality_rank=int(payload.get("quality_rank") or 5),
|
| 63 |
+
cost_rank=int(payload.get("cost_rank") or 5),
|
| 64 |
+
sovereignty_tier=int(payload.get("sovereignty_tier") or 2),
|
| 65 |
+
supports_tools=bool(payload.get("supports_tools", False)),
|
| 66 |
+
supports_json=bool(payload.get("supports_json", False)),
|
| 67 |
+
tags=tuple(item.lower() for item in _text_tuple(payload.get("tags"))),
|
| 68 |
+
metadata=dict(payload.get("metadata") or {}),
|
| 69 |
+
)
|
| 70 |
+
|
| 71 |
+
def to_dict(self) -> dict[str, Any]:
|
| 72 |
+
return {
|
| 73 |
+
"model_id": self.model_id,
|
| 74 |
+
"repo_id": self.repo_id,
|
| 75 |
+
"family": self.family,
|
| 76 |
+
"runtime": self.runtime,
|
| 77 |
+
"modalities": list(self.modalities),
|
| 78 |
+
"context_tokens": self.context_tokens,
|
| 79 |
+
"jurisdiction": self.jurisdiction,
|
| 80 |
+
"residency": list(self.residency),
|
| 81 |
+
"license_id": self.license_id,
|
| 82 |
+
"quantization": self.quantization,
|
| 83 |
+
"primary_artifact": self.primary_artifact,
|
| 84 |
+
"active_params_b": self.active_params_b,
|
| 85 |
+
"total_params_b": self.total_params_b,
|
| 86 |
+
"quality_rank": self.quality_rank,
|
| 87 |
+
"cost_rank": self.cost_rank,
|
| 88 |
+
"sovereignty_tier": self.sovereignty_tier,
|
| 89 |
+
"supports_tools": self.supports_tools,
|
| 90 |
+
"supports_json": self.supports_json,
|
| 91 |
+
"tags": list(self.tags),
|
| 92 |
+
"metadata": dict(self.metadata),
|
| 93 |
+
}
|
| 94 |
+
|
| 95 |
+
|
| 96 |
+
@dataclass(frozen=True, slots=True)
|
| 97 |
+
class RoutingRequest:
|
| 98 |
+
prompt: str
|
| 99 |
+
task_type: str = "general"
|
| 100 |
+
modalities: tuple[str, ...] = ("text",)
|
| 101 |
+
jurisdiction: str = "NZ"
|
| 102 |
+
data_sensitivity: str = "internal"
|
| 103 |
+
min_context_tokens: int = 4096
|
| 104 |
+
requires_local: bool = True
|
| 105 |
+
requires_tools: bool = False
|
| 106 |
+
requires_json: bool = False
|
| 107 |
+
license_allowlist: tuple[str, ...] = ()
|
| 108 |
+
max_fallbacks: int = 3
|
| 109 |
+
metadata: dict[str, Any] = field(default_factory=dict)
|
| 110 |
+
|
| 111 |
+
@classmethod
|
| 112 |
+
def from_payload(cls, payload: dict[str, Any]) -> RoutingRequest:
|
| 113 |
+
return cls(
|
| 114 |
+
prompt=str(payload.get("prompt") or ""),
|
| 115 |
+
task_type=str(payload.get("task_type") or "general").lower(),
|
| 116 |
+
modalities=tuple(item.lower() for item in _text_tuple(payload.get("modalities"), default=("text",))),
|
| 117 |
+
jurisdiction=str(payload.get("jurisdiction") or "NZ").upper(),
|
| 118 |
+
data_sensitivity=str(payload.get("data_sensitivity") or "internal").lower(),
|
| 119 |
+
min_context_tokens=int(payload.get("min_context_tokens") or 4096),
|
| 120 |
+
requires_local=bool(payload.get("requires_local", True)),
|
| 121 |
+
requires_tools=bool(payload.get("requires_tools", False)),
|
| 122 |
+
requires_json=bool(payload.get("requires_json", False)),
|
| 123 |
+
license_allowlist=tuple(item.lower() for item in _text_tuple(payload.get("license_allowlist"))),
|
| 124 |
+
max_fallbacks=int(payload.get("max_fallbacks") or 3),
|
| 125 |
+
metadata=dict(payload.get("metadata") or {}),
|
| 126 |
+
)
|
| 127 |
+
|
| 128 |
+
def to_dict(self) -> dict[str, Any]:
|
| 129 |
+
return {
|
| 130 |
+
"prompt": self.prompt,
|
| 131 |
+
"task_type": self.task_type,
|
| 132 |
+
"modalities": list(self.modalities),
|
| 133 |
+
"jurisdiction": self.jurisdiction,
|
| 134 |
+
"data_sensitivity": self.data_sensitivity,
|
| 135 |
+
"min_context_tokens": self.min_context_tokens,
|
| 136 |
+
"requires_local": self.requires_local,
|
| 137 |
+
"requires_tools": self.requires_tools,
|
| 138 |
+
"requires_json": self.requires_json,
|
| 139 |
+
"license_allowlist": list(self.license_allowlist),
|
| 140 |
+
"max_fallbacks": self.max_fallbacks,
|
| 141 |
+
"metadata": dict(self.metadata),
|
| 142 |
+
}
|
| 143 |
+
|
| 144 |
+
|
| 145 |
+
def load_model_registry(path: Path) -> tuple[ModelEndpoint, ...]:
|
| 146 |
+
payload = json.loads(path.read_text(encoding="utf-8-sig"))
|
| 147 |
+
raw_models = payload.get("models") if isinstance(payload, dict) else payload
|
| 148 |
+
if not isinstance(raw_models, list):
|
| 149 |
+
raise ValueError(f"Expected model list in {path}")
|
| 150 |
+
return tuple(ModelEndpoint.from_payload(item) for item in raw_models if isinstance(item, dict))
|
marama_route/router.py
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from __future__ import annotations
|
| 2 |
+
|
| 3 |
+
from dataclasses import dataclass
|
| 4 |
+
from typing import Any
|
| 5 |
+
|
| 6 |
+
from .registry import ModelEndpoint, RoutingRequest
|
| 7 |
+
|
| 8 |
+
HIGH_SENSITIVITY = frozenset({"personal", "restricted", "health", "iwi", "taonga"})
|
| 9 |
+
|
| 10 |
+
|
| 11 |
+
@dataclass(frozen=True, slots=True)
|
| 12 |
+
class RouteDecision:
|
| 13 |
+
selected_model: ModelEndpoint | None
|
| 14 |
+
fallback_models: tuple[ModelEndpoint, ...]
|
| 15 |
+
rejected: tuple[dict[str, str], ...]
|
| 16 |
+
reasons: tuple[str, ...]
|
| 17 |
+
scores: dict[str, float]
|
| 18 |
+
|
| 19 |
+
def to_dict(self) -> dict[str, Any]:
|
| 20 |
+
return {
|
| 21 |
+
"selected_model": self.selected_model.to_dict() if self.selected_model else None,
|
| 22 |
+
"fallback_models": [model.to_dict() for model in self.fallback_models],
|
| 23 |
+
"rejected": list(self.rejected),
|
| 24 |
+
"reasons": list(self.reasons),
|
| 25 |
+
"scores": dict(self.scores),
|
| 26 |
+
}
|
| 27 |
+
|
| 28 |
+
|
| 29 |
+
class SovereignModelRouter:
|
| 30 |
+
def __init__(self, models: tuple[ModelEndpoint, ...]) -> None:
|
| 31 |
+
self.models = models
|
| 32 |
+
|
| 33 |
+
def route(self, request: RoutingRequest) -> RouteDecision:
|
| 34 |
+
accepted: list[ModelEndpoint] = []
|
| 35 |
+
rejected: list[dict[str, str]] = []
|
| 36 |
+
requested_modalities = set(request.modalities)
|
| 37 |
+
license_allowlist = set(request.license_allowlist)
|
| 38 |
+
|
| 39 |
+
for model in self.models:
|
| 40 |
+
model_modalities = set(item.lower() for item in model.modalities)
|
| 41 |
+
if not requested_modalities.issubset(model_modalities):
|
| 42 |
+
rejected.append({"model_id": model.model_id, "reason": "modality_mismatch"})
|
| 43 |
+
continue
|
| 44 |
+
if model.context_tokens < request.min_context_tokens:
|
| 45 |
+
rejected.append({"model_id": model.model_id, "reason": "context_too_small"})
|
| 46 |
+
continue
|
| 47 |
+
if request.requires_tools and not model.supports_tools:
|
| 48 |
+
rejected.append({"model_id": model.model_id, "reason": "tools_required"})
|
| 49 |
+
continue
|
| 50 |
+
if request.requires_json and not model.supports_json:
|
| 51 |
+
rejected.append({"model_id": model.model_id, "reason": "json_required"})
|
| 52 |
+
continue
|
| 53 |
+
if license_allowlist and model.license_id.lower() not in license_allowlist:
|
| 54 |
+
rejected.append({"model_id": model.model_id, "reason": "license_not_allowed"})
|
| 55 |
+
continue
|
| 56 |
+
if request.requires_local and request.jurisdiction not in model.residency:
|
| 57 |
+
rejected.append({"model_id": model.model_id, "reason": "residency_mismatch"})
|
| 58 |
+
continue
|
| 59 |
+
if request.data_sensitivity in HIGH_SENSITIVITY and model.sovereignty_tier < 2:
|
| 60 |
+
rejected.append({"model_id": model.model_id, "reason": "sovereignty_tier_too_low"})
|
| 61 |
+
continue
|
| 62 |
+
accepted.append(model)
|
| 63 |
+
|
| 64 |
+
scores = {model.model_id: self._score(model, request) for model in accepted}
|
| 65 |
+
ranked = tuple(sorted(accepted, key=lambda model: (scores[model.model_id], model.model_id), reverse=True))
|
| 66 |
+
selected = ranked[0] if ranked else None
|
| 67 |
+
fallbacks = ranked[1 : 1 + request.max_fallbacks]
|
| 68 |
+
reasons = self._reasons(selected, request)
|
| 69 |
+
return RouteDecision(
|
| 70 |
+
selected_model=selected,
|
| 71 |
+
fallback_models=fallbacks,
|
| 72 |
+
rejected=tuple(rejected),
|
| 73 |
+
reasons=reasons,
|
| 74 |
+
scores=scores,
|
| 75 |
+
)
|
| 76 |
+
|
| 77 |
+
def _score(self, model: ModelEndpoint, request: RoutingRequest) -> float:
|
| 78 |
+
score = 0.0
|
| 79 |
+
tags = set(model.tags)
|
| 80 |
+
prompt_lower = request.prompt.lower()
|
| 81 |
+
if request.jurisdiction in model.residency:
|
| 82 |
+
score += 8.0
|
| 83 |
+
if request.task_type in tags or request.task_type in model.family.lower():
|
| 84 |
+
score += 7.0
|
| 85 |
+
if request.task_type == "code" and ("coder" in model.model_id or "coder" in tags):
|
| 86 |
+
score += 10.0
|
| 87 |
+
if request.task_type == "reasoning" and ("reasoning" in model.model_id or "reasoning" in tags):
|
| 88 |
+
score += 9.0
|
| 89 |
+
if "iwi" in prompt_lower or "data sovereignty" in prompt_lower:
|
| 90 |
+
score += 3.0 * model.sovereignty_tier
|
| 91 |
+
if "gguf" in model.runtime.lower() or model.runtime == "llama_cpp":
|
| 92 |
+
score += 2.5
|
| 93 |
+
if model.supports_json and request.requires_json:
|
| 94 |
+
score += 3.0
|
| 95 |
+
if model.supports_tools and request.requires_tools:
|
| 96 |
+
score += 3.0
|
| 97 |
+
score += max(0, 10 - model.quality_rank) * 1.7
|
| 98 |
+
score -= model.cost_rank * 0.25
|
| 99 |
+
if model.active_params_b is not None and model.active_params_b <= 8:
|
| 100 |
+
score += 0.5
|
| 101 |
+
return round(score, 4)
|
| 102 |
+
|
| 103 |
+
def _reasons(self, selected: ModelEndpoint | None, request: RoutingRequest) -> tuple[str, ...]:
|
| 104 |
+
if selected is None:
|
| 105 |
+
return ("no model satisfied sovereignty and capability constraints",)
|
| 106 |
+
reasons = [
|
| 107 |
+
f"selected `{selected.model_id}` for task_type `{request.task_type}`",
|
| 108 |
+
f"residency `{request.jurisdiction}` satisfied",
|
| 109 |
+
f"runtime `{selected.runtime}`",
|
| 110 |
+
]
|
| 111 |
+
if request.data_sensitivity in HIGH_SENSITIVITY:
|
| 112 |
+
reasons.append("high-sensitivity routing kept inside sovereign tier constraints")
|
| 113 |
+
return tuple(reasons)
|
policy-packs/nz-personal-sovereignty.yaml
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
policy_id: abx-sovereigncode-nz-personal-sovereignty-v0
|
| 2 |
+
jurisdiction: NZ
|
| 3 |
+
purpose: governed personal, workspace, and community-context coding assistance
|
| 4 |
+
default_residency:
|
| 5 |
+
- NZ
|
| 6 |
+
allowed_personal_detail_levels:
|
| 7 |
+
- none
|
| 8 |
+
- anonymous
|
| 9 |
+
- pseudonymous
|
| 10 |
+
- identifiable
|
| 11 |
+
- sensitive_identifiable
|
| 12 |
+
default_personal_detail_level: pseudonymous
|
| 13 |
+
consent_scopes:
|
| 14 |
+
coding_assistance:
|
| 15 |
+
allowed_actions:
|
| 16 |
+
- read_context
|
| 17 |
+
- propose_patch
|
| 18 |
+
- generate_tests
|
| 19 |
+
blocked_actions_without_approval:
|
| 20 |
+
- write_file
|
| 21 |
+
- execute_shell
|
| 22 |
+
- commit
|
| 23 |
+
- publish
|
| 24 |
+
- network_export
|
| 25 |
+
personal_memory:
|
| 26 |
+
allowed_actions:
|
| 27 |
+
- read_preference
|
| 28 |
+
- summarise_profile
|
| 29 |
+
blocked_actions_without_approval:
|
| 30 |
+
- export_profile
|
| 31 |
+
- train_adapter
|
| 32 |
+
- share_with_third_party
|
| 33 |
+
retention_defaults:
|
| 34 |
+
restricted_code_days: 14
|
| 35 |
+
personal_trace_days: 7
|
| 36 |
+
audit_record_days: 365
|
| 37 |
+
data_subject_rights:
|
| 38 |
+
- access
|
| 39 |
+
- correction
|
| 40 |
+
- deletion_request
|
| 41 |
+
- processing_objection
|
| 42 |
+
obligations:
|
| 43 |
+
- write_immutable_audit_record
|
| 44 |
+
- minimise_personal_detail_in_prompt
|
| 45 |
+
- keep_personal_trace_inside_capsule_retention
|
| 46 |
+
- show_diff_before_write_or_commit
|
| 47 |
+
- route_only_to_resident_runtime
|
| 48 |
+
- require_human_review_for_external_effects
|
| 49 |
+
model_rules:
|
| 50 |
+
high_impact_requires_lumynax_or_local: true
|
| 51 |
+
restricted_requires_nz_residency: true
|
| 52 |
+
public_may_route_to_approved_global: true
|
| 53 |
+
export_rules:
|
| 54 |
+
default_export_allowed: false
|
| 55 |
+
require_export_manifest: true
|
| 56 |
+
require_named_recipient: true
|
| 57 |
+
training_rules:
|
| 58 |
+
default_training_allowed: false
|
| 59 |
+
require_explicit_capsule_training_allowed: true
|
product_blueprint.md
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# AbteeX SovereignCode Product Blueprint
|
| 2 |
+
|
| 3 |
+
## One-Sentence Product
|
| 4 |
+
|
| 5 |
+
SovereignCode is a local-first coding agent for New Zealand teams that need code
|
| 6 |
+
assistance, model routing, personal-data controls, and audit-ready tool use in
|
| 7 |
+
one governed workflow.
|
| 8 |
+
|
| 9 |
+
## Core User Jobs
|
| 10 |
+
|
| 11 |
+
| User | Job | SovereignCode Response |
|
| 12 |
+
| --- | --- | --- |
|
| 13 |
+
| Individual developer | Use an AI coding assistant without exposing private files or personal preferences. | Local capsule, pseudonymous personal profile, resident model route, no training by default. |
|
| 14 |
+
| Startup or SME | Refactor and test private code while keeping customer data out of generic SaaS logs. | Workspace capsule, local route, diff review, audit hash. |
|
| 15 |
+
| Council or public-sector team | Use AI on operational code and documents with retention and residency controls. | Tenant policy pack, NZ residency, approval gates, signed audit export. |
|
| 16 |
+
| Iwi or community data steward | Keep community-held context under explicit purpose and consent boundaries. | High-impact sensitivity, local/LumynaX-only model rule, export denial by default. |
|
| 17 |
+
| Internal platform owner | Give developers one coding assistant with central policy. | OpenAI-compatible provider, CLI planner, future SSO and policy server. |
|
| 18 |
+
|
| 19 |
+
## Product Pillars
|
| 20 |
+
|
| 21 |
+
1. Capsule-first context: every workspace, profile, dataset, and prompt context
|
| 22 |
+
resolves to a Data Capsule before agent work starts.
|
| 23 |
+
2. Personal sovereignty: personal detail is classified before prompt assembly,
|
| 24 |
+
and consent scopes gate how profile context can be used.
|
| 25 |
+
3. Governed autonomy: read, plan, patch, test, shell, network, commit, and
|
| 26 |
+
publish actions are separate tool grants.
|
| 27 |
+
4. Open integration: OpenCode and similar clients connect through MaramaRoute's
|
| 28 |
+
OpenAI-compatible gateway.
|
| 29 |
+
5. Audit without hoarding: records retain decision hashes, obligations, model
|
| 30 |
+
identity, and reasons while prompt retention stays constrained.
|
| 31 |
+
|
| 32 |
+
## Minimum Product Loop
|
| 33 |
+
|
| 34 |
+
```text
|
| 35 |
+
developer asks for a coding task
|
| 36 |
+
-> resolve `.sovereigncode/capsule.json`
|
| 37 |
+
-> evaluate SovereignRequest
|
| 38 |
+
-> build MaramaRoute request
|
| 39 |
+
-> select resident LumynaX model
|
| 40 |
+
-> produce plan
|
| 41 |
+
-> request approval for writes or shell
|
| 42 |
+
-> apply patch
|
| 43 |
+
-> run tests
|
| 44 |
+
-> store audit record
|
| 45 |
+
```
|
| 46 |
+
|
| 47 |
+
## Product Modules To Build Next
|
| 48 |
+
|
| 49 |
+
| Module | MVP Definition | Implementation Notes |
|
| 50 |
+
| --- | --- | --- |
|
| 51 |
+
| Workspace indexer | Reads repo files, ignores secrets/build outputs, tags data classes. | Start with `rg --files`, `.gitignore`, and capsule include/exclude rules. |
|
| 52 |
+
| Tool broker | Wraps file write, shell, git, package install, HTTP, and model calls. | Reuse policy decisions and emit one audit record per effectful tool call. |
|
| 53 |
+
| Terminal UI | Shows plan, selected model, obligations, diff, and test output. | Keep compatible with OpenCode-style terminal use. |
|
| 54 |
+
| Personal profile store | Keeps user preferences and memory under a personal capsule. | Local encrypted file first, tenant vault later. |
|
| 55 |
+
| Audit ledger | Append-only local JSONL with hash chain. | Export signed bundles for enterprise customers. |
|
| 56 |
+
| Tenant policy server | Central policy packs, model allowlists, API keys, quotas. | Only needed after local MVP works. |
|
| 57 |
+
|
| 58 |
+
## Default Plans
|
| 59 |
+
|
| 60 |
+
| Plan | Buyer | Included |
|
| 61 |
+
| --- | --- | --- |
|
| 62 |
+
| Local Developer | individual NZ developer | local capsule, local audit, MaramaRoute provider config |
|
| 63 |
+
| Team Sovereign | startup or SME | shared policy pack, route registry, team audit export |
|
| 64 |
+
| Regulated Workspace | council, health-adjacent, community data project | stronger approval gates, retention controls, signed audit, SSO-ready policy server |
|
| 65 |
+
|
| 66 |
+
## First Non-Negotiables
|
| 67 |
+
|
| 68 |
+
- Never train on a capsule unless `training_allowed` is explicitly true.
|
| 69 |
+
- Never export restricted or personal context unless `export_allowed` is true
|
| 70 |
+
and the request carries human approval.
|
| 71 |
+
- Never route high-impact data to a non-local or non-LumynaX-governed model.
|
| 72 |
+
- Never apply file writes without a visible diff obligation.
|
| 73 |
+
- Never hide selected model identity from the audit record.
|
product_manifest.json
CHANGED
|
@@ -5,15 +5,34 @@
|
|
| 5 |
"family": "LumynaX sovereign products",
|
| 6 |
"stage": "product_scaffold",
|
| 7 |
"positioning": "OpenCode-style local coding agent with Data Capsule sovereignty controls",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 8 |
"primary_modules": [
|
| 9 |
"data_capsule_policy",
|
|
|
|
| 10 |
"tool_broker",
|
| 11 |
"lumynax_runtime_adapter",
|
| 12 |
"audit_ledger",
|
| 13 |
-
"human_review_gate"
|
|
|
|
| 14 |
],
|
| 15 |
"runtime_entrypoints": [
|
| 16 |
-
"python -m tinyluminax.products.sovereigncode.cli"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 17 |
],
|
| 18 |
"brand_system": {
|
| 19 |
"paper": "#fffefa",
|
|
|
|
| 5 |
"family": "LumynaX sovereign products",
|
| 6 |
"stage": "product_scaffold",
|
| 7 |
"positioning": "OpenCode-style local coding agent with Data Capsule sovereignty controls",
|
| 8 |
+
"target_region": "NZ",
|
| 9 |
+
"target_users": [
|
| 10 |
+
"New Zealand developers",
|
| 11 |
+
"regulated SMEs",
|
| 12 |
+
"local government teams",
|
| 13 |
+
"health-adjacent operators",
|
| 14 |
+
"Iwi and community data stewards",
|
| 15 |
+
"privacy-conscious individual developers"
|
| 16 |
+
],
|
| 17 |
"primary_modules": [
|
| 18 |
"data_capsule_policy",
|
| 19 |
+
"personal_detail_consent",
|
| 20 |
"tool_broker",
|
| 21 |
"lumynax_runtime_adapter",
|
| 22 |
"audit_ledger",
|
| 23 |
+
"human_review_gate",
|
| 24 |
+
"opencode_compatible_provider"
|
| 25 |
],
|
| 26 |
"runtime_entrypoints": [
|
| 27 |
+
"python -m tinyluminax.products.sovereigncode.cli evaluate",
|
| 28 |
+
"python -m tinyluminax.products.sovereigncode.cli plan-turn"
|
| 29 |
+
],
|
| 30 |
+
"integration_surfaces": [
|
| 31 |
+
"OpenAI-compatible /v1/chat/completions via MaramaRoute",
|
| 32 |
+
"OpenAI-compatible /v1/models via MaramaRoute",
|
| 33 |
+
"OpenCode custom provider config",
|
| 34 |
+
"local CLI policy evaluator",
|
| 35 |
+
"governed coding-turn planner"
|
| 36 |
],
|
| 37 |
"brand_system": {
|
| 38 |
"paper": "#fffefa",
|
pyproject.toml
CHANGED
|
@@ -4,22 +4,14 @@ build-backend = "setuptools.build_meta"
|
|
| 4 |
|
| 5 |
[project]
|
| 6 |
name = "abteex-sovereigncode"
|
| 7 |
-
version = "0.
|
| 8 |
-
description = "AbteeX SovereignCode
|
| 9 |
readme = "README.md"
|
| 10 |
-
requires-python = ">=3.
|
| 11 |
license = { text = "Apache-2.0" }
|
| 12 |
authors = [{ name = "AbteeX AI Labs" }]
|
| 13 |
-
keywords = ["lumynax", "sovereignty", "data-capsule", "coding-agent", "
|
| 14 |
-
|
| 15 |
-
"License :: OSI Approved :: Apache Software License",
|
| 16 |
-
"Programming Language :: Python :: 3.10",
|
| 17 |
-
"Programming Language :: Python :: 3.11",
|
| 18 |
-
"Programming Language :: Python :: 3.12",
|
| 19 |
-
"Intended Audience :: Developers",
|
| 20 |
-
"Topic :: Software Development :: Libraries",
|
| 21 |
-
]
|
| 22 |
-
dependencies = ["pyyaml>=6.0"]
|
| 23 |
|
| 24 |
[project.urls]
|
| 25 |
Homepage = "https://abteex.com"
|
|
|
|
| 4 |
|
| 5 |
[project]
|
| 6 |
name = "abteex-sovereigncode"
|
| 7 |
+
version = "0.2.0"
|
| 8 |
+
description = "AbteeX SovereignCode: local-first coding agent with Data Capsule sovereignty controls."
|
| 9 |
readme = "README.md"
|
| 10 |
+
requires-python = ">=3.11"
|
| 11 |
license = { text = "Apache-2.0" }
|
| 12 |
authors = [{ name = "AbteeX AI Labs" }]
|
| 13 |
+
keywords = ["lumynax", "sovereignty", "data-capsule", "coding-agent", "opencode", "new-zealand"]
|
| 14 |
+
dependencies = ["PyYAML>=6.0"]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 15 |
|
| 16 |
[project.urls]
|
| 17 |
Homepage = "https://abteex.com"
|
quickstart.py
CHANGED
|
@@ -1,30 +1,41 @@
|
|
| 1 |
-
"""Quickstart for AbteeX SovereignCode.
|
| 2 |
-
|
| 3 |
-
Runs the two example policy evaluations and prints structured decisions and audit records.
|
| 4 |
-
"""
|
| 5 |
from __future__ import annotations
|
| 6 |
|
| 7 |
import json
|
| 8 |
from pathlib import Path
|
| 9 |
|
| 10 |
-
from sovereigncode import
|
| 11 |
|
| 12 |
|
| 13 |
-
ROOT = Path(__file__).parent
|
| 14 |
-
EXAMPLES = ROOT / "examples"
|
| 15 |
-
CONFIGS = ROOT / "configs"
|
| 16 |
|
| 17 |
|
| 18 |
-
def run(
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
policy = load_policy(CONFIGS / "default_policy.yaml")
|
| 22 |
-
decision = evaluate(capsule, request, policy)
|
| 23 |
-
audit = build_audit_record(capsule, request, decision.to_dict())
|
| 24 |
-
print(f"\n=== {label} ===")
|
| 25 |
-
print(json.dumps({"decision": decision.to_dict(), "audit": audit.to_dict()}, indent=2, ensure_ascii=False))
|
| 26 |
|
| 27 |
|
| 28 |
if __name__ == "__main__":
|
| 29 |
-
|
| 30 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Quickstart smoke for AbteeX SovereignCode."""
|
|
|
|
|
|
|
|
|
|
| 2 |
from __future__ import annotations
|
| 3 |
|
| 4 |
import json
|
| 5 |
from pathlib import Path
|
| 6 |
|
| 7 |
+
from sovereigncode.cli import main
|
| 8 |
|
| 9 |
|
| 10 |
+
ROOT = Path(__file__).resolve().parent
|
|
|
|
|
|
|
| 11 |
|
| 12 |
|
| 13 |
+
def run(args: list[str]) -> int:
|
| 14 |
+
print("\n$ python -m sovereigncode.cli " + " ".join(args))
|
| 15 |
+
return main(args)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 16 |
|
| 17 |
|
| 18 |
if __name__ == "__main__":
|
| 19 |
+
checks = [
|
| 20 |
+
[
|
| 21 |
+
"evaluate",
|
| 22 |
+
"--capsule",
|
| 23 |
+
str(ROOT / "examples" / "capsule.restricted-nz-code.json"),
|
| 24 |
+
"--request",
|
| 25 |
+
str(ROOT / "examples" / "request.allowed-local-edit.json"),
|
| 26 |
+
],
|
| 27 |
+
[
|
| 28 |
+
"plan-turn",
|
| 29 |
+
"--capsule",
|
| 30 |
+
str(ROOT / "examples" / "capsule.restricted-nz-code.json"),
|
| 31 |
+
"--request",
|
| 32 |
+
str(ROOT / "examples" / "request.allowed-local-edit.json"),
|
| 33 |
+
"--route-request",
|
| 34 |
+
str(ROOT / "examples" / "request.code-restricted.json"),
|
| 35 |
+
"--registry",
|
| 36 |
+
str(ROOT / "configs" / "lumynax_model_registry.json"),
|
| 37 |
+
],
|
| 38 |
+
]
|
| 39 |
+
exits = [run(item) for item in checks]
|
| 40 |
+
print(json.dumps({"checks": len(exits), "passed": all(code == 0 for code in exits)}, indent=2))
|
| 41 |
+
raise SystemExit(0 if all(code == 0 for code in exits) else 1)
|
requirements.txt
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
|
|
|
|
| 1 |
+
PyYAML>=6.0
|
schemas/data_capsule.schema.json
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
| 3 |
+
"$id": "https://abteex.com/schemas/sovereigncode/data-capsule.schema.json",
|
| 4 |
+
"title": "AbteeX SovereignCode Data Capsule",
|
| 5 |
+
"type": "object",
|
| 6 |
+
"required": ["capsule_id", "subject_id", "jurisdiction", "sensitivity"],
|
| 7 |
+
"additionalProperties": true,
|
| 8 |
+
"properties": {
|
| 9 |
+
"capsule_id": {
|
| 10 |
+
"type": "string",
|
| 11 |
+
"minLength": 1
|
| 12 |
+
},
|
| 13 |
+
"subject_id": {
|
| 14 |
+
"type": "string",
|
| 15 |
+
"minLength": 1
|
| 16 |
+
},
|
| 17 |
+
"jurisdiction": {
|
| 18 |
+
"type": "string",
|
| 19 |
+
"default": "NZ"
|
| 20 |
+
},
|
| 21 |
+
"sensitivity": {
|
| 22 |
+
"type": "string",
|
| 23 |
+
"enum": ["public", "internal", "restricted", "personal", "health", "iwi", "taonga"]
|
| 24 |
+
},
|
| 25 |
+
"allowed_purposes": {
|
| 26 |
+
"type": "array",
|
| 27 |
+
"items": { "type": "string" },
|
| 28 |
+
"default": ["inference", "coding_assistance"]
|
| 29 |
+
},
|
| 30 |
+
"denied_purposes": {
|
| 31 |
+
"type": "array",
|
| 32 |
+
"items": { "type": "string" },
|
| 33 |
+
"default": []
|
| 34 |
+
},
|
| 35 |
+
"resident_regions": {
|
| 36 |
+
"type": "array",
|
| 37 |
+
"items": { "type": "string" },
|
| 38 |
+
"default": ["NZ"]
|
| 39 |
+
},
|
| 40 |
+
"data_classes": {
|
| 41 |
+
"type": "array",
|
| 42 |
+
"items": { "type": "string" },
|
| 43 |
+
"default": ["source_code"]
|
| 44 |
+
},
|
| 45 |
+
"retention_days": {
|
| 46 |
+
"type": "integer",
|
| 47 |
+
"minimum": 0,
|
| 48 |
+
"default": 30
|
| 49 |
+
},
|
| 50 |
+
"export_allowed": {
|
| 51 |
+
"type": "boolean",
|
| 52 |
+
"default": false
|
| 53 |
+
},
|
| 54 |
+
"training_allowed": {
|
| 55 |
+
"type": "boolean",
|
| 56 |
+
"default": false
|
| 57 |
+
},
|
| 58 |
+
"personal_detail_level": {
|
| 59 |
+
"type": "string",
|
| 60 |
+
"enum": ["none", "anonymous", "pseudonymous", "identifiable", "sensitive_identifiable"],
|
| 61 |
+
"default": "none"
|
| 62 |
+
},
|
| 63 |
+
"consent_scopes": {
|
| 64 |
+
"type": "array",
|
| 65 |
+
"items": { "type": "string" },
|
| 66 |
+
"default": []
|
| 67 |
+
},
|
| 68 |
+
"data_subject_rights": {
|
| 69 |
+
"type": "array",
|
| 70 |
+
"items": { "type": "string" },
|
| 71 |
+
"default": ["access", "correction", "deletion_request", "processing_objection"]
|
| 72 |
+
},
|
| 73 |
+
"revoked": {
|
| 74 |
+
"type": "boolean",
|
| 75 |
+
"default": false
|
| 76 |
+
},
|
| 77 |
+
"schema_context": {
|
| 78 |
+
"type": "string",
|
| 79 |
+
"default": "https://schema.org"
|
| 80 |
+
},
|
| 81 |
+
"consent_record": {
|
| 82 |
+
"type": "string"
|
| 83 |
+
},
|
| 84 |
+
"metadata": {
|
| 85 |
+
"type": "object"
|
| 86 |
+
}
|
| 87 |
+
}
|
| 88 |
+
}
|
sovereigncode/__init__.py
CHANGED
|
@@ -1,15 +1,22 @@
|
|
| 1 |
-
|
| 2 |
-
|
| 3 |
-
from .audit import AuditRecord, build_audit_record
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4 |
|
| 5 |
__all__ = [
|
| 6 |
-
"Decision",
|
| 7 |
-
"evaluate",
|
| 8 |
-
"load_capsule",
|
| 9 |
-
"load_policy",
|
| 10 |
-
"load_request",
|
| 11 |
"AuditRecord",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 12 |
"build_audit_record",
|
| 13 |
-
"
|
| 14 |
]
|
| 15 |
-
__version__ = "0.1.0"
|
|
|
|
| 1 |
+
from __future__ import annotations
|
| 2 |
+
|
| 3 |
+
from .audit import AuditRecord, build_audit_record
|
| 4 |
+
from .planner import SovereignCodingTurnPlan, ToolGrant, plan_coding_turn
|
| 5 |
+
from .policy import (
|
| 6 |
+
DataCapsule,
|
| 7 |
+
PolicyDecision,
|
| 8 |
+
SovereignRequest,
|
| 9 |
+
SovereigntyPolicyEngine,
|
| 10 |
+
)
|
| 11 |
|
| 12 |
__all__ = [
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 13 |
"AuditRecord",
|
| 14 |
+
"DataCapsule",
|
| 15 |
+
"PolicyDecision",
|
| 16 |
+
"SovereignRequest",
|
| 17 |
+
"SovereignCodingTurnPlan",
|
| 18 |
+
"SovereigntyPolicyEngine",
|
| 19 |
+
"ToolGrant",
|
| 20 |
"build_audit_record",
|
| 21 |
+
"plan_coding_turn",
|
| 22 |
]
|
|
|
sovereigncode/audit.py
CHANGED
|
@@ -1,51 +1,61 @@
|
|
| 1 |
-
"""Audit ledger primitives.
|
| 2 |
-
|
| 3 |
-
Every policy decision creates a record. Records are hash-stable, append-only,
|
| 4 |
-
and chainable for tamper-evident exports.
|
| 5 |
-
"""
|
| 6 |
from __future__ import annotations
|
| 7 |
|
| 8 |
import hashlib
|
| 9 |
-
import
|
| 10 |
-
from
|
| 11 |
-
from
|
| 12 |
-
from typing import Any, Dict, List
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
def _canonical(obj: Any) -> str:
|
| 16 |
-
return json.dumps(obj, sort_keys=True, separators=(",", ":"), ensure_ascii=False)
|
| 17 |
|
|
|
|
| 18 |
|
| 19 |
-
def request_hash(request: Dict[str, Any]) -> str:
|
| 20 |
-
return hashlib.sha256(_canonical(request).encode("utf-8")).hexdigest()
|
| 21 |
|
| 22 |
-
|
| 23 |
-
@dataclass
|
| 24 |
class AuditRecord:
|
|
|
|
| 25 |
capsule_id: str
|
| 26 |
actor: str
|
| 27 |
purpose: str
|
| 28 |
action: str
|
| 29 |
model_id: str
|
| 30 |
-
|
| 31 |
-
reasons:
|
| 32 |
-
obligations:
|
|
|
|
| 33 |
request_hash: str
|
| 34 |
-
timestamp: str = field(default_factory=lambda: datetime.now(timezone.utc).isoformat(timespec="seconds"))
|
| 35 |
-
|
| 36 |
-
def to_dict(self) -> Dict[str, Any]:
|
| 37 |
-
return asdict(self)
|
| 38 |
-
|
| 39 |
|
| 40 |
-
def
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 41 |
return AuditRecord(
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
|
|
|
|
|
|
|
| 51 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
from __future__ import annotations
|
| 2 |
|
| 3 |
import hashlib
|
| 4 |
+
from dataclasses import dataclass
|
| 5 |
+
from datetime import UTC, datetime
|
| 6 |
+
from typing import Any
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 7 |
|
| 8 |
+
from .policy import DataCapsule, PolicyDecision, SovereignRequest
|
| 9 |
|
|
|
|
|
|
|
| 10 |
|
| 11 |
+
@dataclass(frozen=True, slots=True)
|
|
|
|
| 12 |
class AuditRecord:
|
| 13 |
+
timestamp: str
|
| 14 |
capsule_id: str
|
| 15 |
actor: str
|
| 16 |
purpose: str
|
| 17 |
action: str
|
| 18 |
model_id: str
|
| 19 |
+
allowed: bool
|
| 20 |
+
reasons: tuple[str, ...]
|
| 21 |
+
obligations: tuple[str, ...]
|
| 22 |
+
audit_tags: tuple[str, ...]
|
| 23 |
request_hash: str
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 24 |
|
| 25 |
+
def to_dict(self) -> dict[str, Any]:
|
| 26 |
+
return {
|
| 27 |
+
"timestamp": self.timestamp,
|
| 28 |
+
"capsule_id": self.capsule_id,
|
| 29 |
+
"actor": self.actor,
|
| 30 |
+
"purpose": self.purpose,
|
| 31 |
+
"action": self.action,
|
| 32 |
+
"model_id": self.model_id,
|
| 33 |
+
"allowed": self.allowed,
|
| 34 |
+
"reasons": list(self.reasons),
|
| 35 |
+
"obligations": list(self.obligations),
|
| 36 |
+
"audit_tags": list(self.audit_tags),
|
| 37 |
+
"request_hash": self.request_hash,
|
| 38 |
+
}
|
| 39 |
+
|
| 40 |
+
|
| 41 |
+
def build_audit_record(
|
| 42 |
+
capsule: DataCapsule,
|
| 43 |
+
request: SovereignRequest,
|
| 44 |
+
decision: PolicyDecision,
|
| 45 |
+
) -> AuditRecord:
|
| 46 |
+
digest = hashlib.sha256(
|
| 47 |
+
repr((capsule.to_dict(), request.to_dict(), decision.to_dict())).encode("utf-8"),
|
| 48 |
+
).hexdigest()
|
| 49 |
return AuditRecord(
|
| 50 |
+
timestamp=datetime.now(UTC).isoformat(),
|
| 51 |
+
capsule_id=capsule.capsule_id,
|
| 52 |
+
actor=request.actor,
|
| 53 |
+
purpose=request.purpose,
|
| 54 |
+
action=request.action,
|
| 55 |
+
model_id=request.model_id,
|
| 56 |
+
allowed=decision.allowed,
|
| 57 |
+
reasons=decision.reasons,
|
| 58 |
+
obligations=decision.obligations,
|
| 59 |
+
audit_tags=decision.audit_tags,
|
| 60 |
+
request_hash=digest,
|
| 61 |
)
|
sovereigncode/cli.py
CHANGED
|
@@ -1,47 +1,107 @@
|
|
| 1 |
-
"""SovereignCode CLI: evaluate a request against a capsule and policy."""
|
| 2 |
from __future__ import annotations
|
| 3 |
|
| 4 |
import argparse
|
| 5 |
import json
|
| 6 |
-
import
|
| 7 |
from pathlib import Path
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 8 |
|
| 9 |
from .audit import build_audit_record
|
| 10 |
-
from .
|
|
|
|
| 11 |
|
| 12 |
|
| 13 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 14 |
|
| 15 |
|
| 16 |
-
def
|
| 17 |
-
|
| 18 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
|
| 20 |
-
ev = sub.add_parser("evaluate", help="Evaluate a request against a capsule.")
|
| 21 |
-
ev.add_argument("--capsule", required=True, help="Path to capsule JSON.")
|
| 22 |
-
ev.add_argument("--request", required=True, help="Path to request JSON.")
|
| 23 |
-
ev.add_argument("--policy", default=str(DEFAULT_POLICY), help="Path to policy YAML (default: configs/default_policy.yaml).")
|
| 24 |
-
ev.add_argument("--allow-denied-exit-zero", action="store_true", help="Exit 0 even when the decision is deny (useful for examples).")
|
| 25 |
|
| 26 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 27 |
|
| 28 |
-
if args.cmd == "evaluate":
|
| 29 |
-
capsule = load_capsule(args.capsule)
|
| 30 |
-
request = load_request(args.request)
|
| 31 |
-
policy = load_policy(args.policy)
|
| 32 |
-
decision = evaluate(capsule, request, policy)
|
| 33 |
-
audit = build_audit_record(capsule, request, decision.to_dict())
|
| 34 |
-
out = {
|
| 35 |
-
"decision": decision.to_dict(),
|
| 36 |
-
"audit": audit.to_dict(),
|
| 37 |
-
}
|
| 38 |
-
print(json.dumps(out, indent=2, ensure_ascii=False))
|
| 39 |
-
if not decision.allowed and not args.allow_denied_exit_zero:
|
| 40 |
-
return 2
|
| 41 |
-
return 0
|
| 42 |
|
| 43 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 44 |
|
| 45 |
|
| 46 |
if __name__ == "__main__":
|
| 47 |
-
|
|
|
|
|
|
|
| 1 |
from __future__ import annotations
|
| 2 |
|
| 3 |
import argparse
|
| 4 |
import json
|
| 5 |
+
from collections.abc import Sequence
|
| 6 |
from pathlib import Path
|
| 7 |
+
from typing import Any
|
| 8 |
+
|
| 9 |
+
import yaml
|
| 10 |
+
|
| 11 |
+
from marama_route import RoutingRequest, load_model_registry
|
| 12 |
|
| 13 |
from .audit import build_audit_record
|
| 14 |
+
from .planner import plan_coding_turn
|
| 15 |
+
from .policy import DataCapsule, SovereignRequest, SovereigntyPolicyEngine
|
| 16 |
|
| 17 |
|
| 18 |
+
def _load_mapping(path: Path) -> dict[str, Any]:
|
| 19 |
+
text = path.read_text(encoding="utf-8-sig")
|
| 20 |
+
if path.suffix.lower() == ".json":
|
| 21 |
+
payload = json.loads(text)
|
| 22 |
+
else:
|
| 23 |
+
payload = yaml.safe_load(text)
|
| 24 |
+
if not isinstance(payload, dict):
|
| 25 |
+
raise ValueError(f"Expected mapping in {path}")
|
| 26 |
+
return payload
|
| 27 |
|
| 28 |
|
| 29 |
+
def _evaluate(args: argparse.Namespace) -> int:
|
| 30 |
+
capsule = DataCapsule.from_payload(_load_mapping(args.capsule))
|
| 31 |
+
request = SovereignRequest.from_payload(_load_mapping(args.request))
|
| 32 |
+
decision = SovereigntyPolicyEngine().evaluate(capsule, request)
|
| 33 |
+
payload: dict[str, Any] = {"decision": decision.to_dict()}
|
| 34 |
+
if args.audit:
|
| 35 |
+
payload["audit_record"] = build_audit_record(capsule, request, decision).to_dict()
|
| 36 |
+
print(json.dumps(payload, indent=2, sort_keys=True))
|
| 37 |
+
return 0 if decision.allowed or args.allow_denied_exit_zero else 2
|
| 38 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 39 |
|
| 40 |
+
def _plan_turn(args: argparse.Namespace) -> int:
|
| 41 |
+
capsule = DataCapsule.from_payload(_load_mapping(args.capsule))
|
| 42 |
+
request = SovereignRequest.from_payload(_load_mapping(args.request))
|
| 43 |
+
routing_request = RoutingRequest.from_payload(_load_mapping(args.route_request))
|
| 44 |
+
models = load_model_registry(args.registry)
|
| 45 |
+
plan = plan_coding_turn(capsule, request, routing_request, models)
|
| 46 |
+
print(json.dumps(plan.to_dict(), indent=2, sort_keys=True))
|
| 47 |
+
return 0 if plan.allowed or args.allow_blocked_exit_zero else 2
|
| 48 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 49 |
|
| 50 |
+
def build_parser() -> argparse.ArgumentParser:
|
| 51 |
+
parser = argparse.ArgumentParser(
|
| 52 |
+
prog="abteex-sovereigncode",
|
| 53 |
+
description="Evaluate AbteeX SovereignCode Data Capsule policies.",
|
| 54 |
+
)
|
| 55 |
+
subparsers = parser.add_subparsers(dest="command")
|
| 56 |
+
evaluate = subparsers.add_parser("evaluate", help="Evaluate a governed code/data request.")
|
| 57 |
+
evaluate.add_argument("--capsule", type=Path, required=True, help="Data Capsule JSON/YAML file.")
|
| 58 |
+
evaluate.add_argument("--request", type=Path, required=True, help="Sovereign request JSON/YAML file.")
|
| 59 |
+
evaluate.add_argument("--audit", action=argparse.BooleanOptionalAction, default=True)
|
| 60 |
+
evaluate.add_argument(
|
| 61 |
+
"--allow-denied-exit-zero",
|
| 62 |
+
action=argparse.BooleanOptionalAction,
|
| 63 |
+
default=False,
|
| 64 |
+
help="Return exit code 0 even when policy denies the request.",
|
| 65 |
+
)
|
| 66 |
+
evaluate.set_defaults(handler=_evaluate)
|
| 67 |
+
|
| 68 |
+
plan_turn = subparsers.add_parser(
|
| 69 |
+
"plan-turn",
|
| 70 |
+
help="Plan a governed coding-agent turn with model routing.",
|
| 71 |
+
)
|
| 72 |
+
plan_turn.add_argument("--capsule", type=Path, required=True, help="Data Capsule JSON/YAML file.")
|
| 73 |
+
plan_turn.add_argument("--request", type=Path, required=True, help="Sovereign request JSON/YAML file.")
|
| 74 |
+
plan_turn.add_argument(
|
| 75 |
+
"--route-request",
|
| 76 |
+
type=Path,
|
| 77 |
+
required=True,
|
| 78 |
+
help="MaramaRoute routing request JSON/YAML file.",
|
| 79 |
+
)
|
| 80 |
+
plan_turn.add_argument(
|
| 81 |
+
"--registry",
|
| 82 |
+
type=Path,
|
| 83 |
+
required=True,
|
| 84 |
+
help="MaramaRoute model registry JSON.",
|
| 85 |
+
)
|
| 86 |
+
plan_turn.add_argument(
|
| 87 |
+
"--allow-blocked-exit-zero",
|
| 88 |
+
action=argparse.BooleanOptionalAction,
|
| 89 |
+
default=False,
|
| 90 |
+
help="Return exit code 0 even when the planned turn is blocked.",
|
| 91 |
+
)
|
| 92 |
+
plan_turn.set_defaults(handler=_plan_turn)
|
| 93 |
+
return parser
|
| 94 |
+
|
| 95 |
+
|
| 96 |
+
def main(argv: Sequence[str] | None = None) -> int:
|
| 97 |
+
parser = build_parser()
|
| 98 |
+
args = parser.parse_args(argv)
|
| 99 |
+
handler = getattr(args, "handler", None)
|
| 100 |
+
if handler is None:
|
| 101 |
+
parser.print_help()
|
| 102 |
+
return 0
|
| 103 |
+
return int(handler(args))
|
| 104 |
|
| 105 |
|
| 106 |
if __name__ == "__main__":
|
| 107 |
+
raise SystemExit(main())
|
sovereigncode/planner.py
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from __future__ import annotations
|
| 2 |
+
|
| 3 |
+
from dataclasses import dataclass
|
| 4 |
+
from typing import Any
|
| 5 |
+
|
| 6 |
+
from marama_route import (
|
| 7 |
+
ModelEndpoint,
|
| 8 |
+
RouteDecision,
|
| 9 |
+
RoutingRequest,
|
| 10 |
+
SovereignModelRouter,
|
| 11 |
+
)
|
| 12 |
+
|
| 13 |
+
from .audit import AuditRecord, build_audit_record
|
| 14 |
+
from .policy import (
|
| 15 |
+
DataCapsule,
|
| 16 |
+
PolicyDecision,
|
| 17 |
+
SovereignRequest,
|
| 18 |
+
SovereigntyPolicyEngine,
|
| 19 |
+
)
|
| 20 |
+
|
| 21 |
+
|
| 22 |
+
@dataclass(frozen=True, slots=True)
|
| 23 |
+
class ToolGrant:
|
| 24 |
+
tool: str
|
| 25 |
+
allowed: bool
|
| 26 |
+
reason: str
|
| 27 |
+
|
| 28 |
+
def to_dict(self) -> dict[str, Any]:
|
| 29 |
+
return {
|
| 30 |
+
"tool": self.tool,
|
| 31 |
+
"allowed": self.allowed,
|
| 32 |
+
"reason": self.reason,
|
| 33 |
+
}
|
| 34 |
+
|
| 35 |
+
|
| 36 |
+
@dataclass(frozen=True, slots=True)
|
| 37 |
+
class SovereignCodingTurnPlan:
|
| 38 |
+
allowed: bool
|
| 39 |
+
policy_decision: PolicyDecision
|
| 40 |
+
audit_record: AuditRecord
|
| 41 |
+
route_decision: RouteDecision | None
|
| 42 |
+
tool_grants: tuple[ToolGrant, ...]
|
| 43 |
+
obligations: tuple[str, ...]
|
| 44 |
+
blocked_reasons: tuple[str, ...]
|
| 45 |
+
integration_targets: tuple[str, ...]
|
| 46 |
+
|
| 47 |
+
def to_dict(self) -> dict[str, Any]:
|
| 48 |
+
return {
|
| 49 |
+
"allowed": self.allowed,
|
| 50 |
+
"policy_decision": self.policy_decision.to_dict(),
|
| 51 |
+
"audit_record": self.audit_record.to_dict(),
|
| 52 |
+
"route_decision": (
|
| 53 |
+
self.route_decision.to_dict() if self.route_decision is not None else None
|
| 54 |
+
),
|
| 55 |
+
"tool_grants": [grant.to_dict() for grant in self.tool_grants],
|
| 56 |
+
"obligations": list(self.obligations),
|
| 57 |
+
"blocked_reasons": list(self.blocked_reasons),
|
| 58 |
+
"integration_targets": list(self.integration_targets),
|
| 59 |
+
}
|
| 60 |
+
|
| 61 |
+
|
| 62 |
+
def plan_coding_turn(
|
| 63 |
+
capsule: DataCapsule,
|
| 64 |
+
request: SovereignRequest,
|
| 65 |
+
routing_request: RoutingRequest,
|
| 66 |
+
models: tuple[ModelEndpoint, ...],
|
| 67 |
+
) -> SovereignCodingTurnPlan:
|
| 68 |
+
"""Plan one governed coding-agent turn against policy and model routing."""
|
| 69 |
+
|
| 70 |
+
policy_decision = SovereigntyPolicyEngine().evaluate(capsule, request)
|
| 71 |
+
audit_record = build_audit_record(capsule, request, policy_decision)
|
| 72 |
+
route_decision: RouteDecision | None = None
|
| 73 |
+
blocked_reasons = list(policy_decision.reasons)
|
| 74 |
+
|
| 75 |
+
if policy_decision.allowed:
|
| 76 |
+
route_decision = SovereignModelRouter(models).route(routing_request)
|
| 77 |
+
if route_decision.selected_model is None:
|
| 78 |
+
blocked_reasons.extend(route_decision.reasons)
|
| 79 |
+
|
| 80 |
+
tool_grants = _build_tool_grants(request, policy_decision)
|
| 81 |
+
allowed = policy_decision.allowed and route_decision is not None
|
| 82 |
+
allowed = allowed and route_decision.selected_model is not None
|
| 83 |
+
|
| 84 |
+
return SovereignCodingTurnPlan(
|
| 85 |
+
allowed=allowed,
|
| 86 |
+
policy_decision=policy_decision,
|
| 87 |
+
audit_record=audit_record,
|
| 88 |
+
route_decision=route_decision,
|
| 89 |
+
tool_grants=tool_grants,
|
| 90 |
+
obligations=policy_decision.obligations,
|
| 91 |
+
blocked_reasons=tuple(dict.fromkeys(blocked_reasons)),
|
| 92 |
+
integration_targets=(
|
| 93 |
+
"opencode_openai_compatible_provider",
|
| 94 |
+
"openrouter_style_gateway",
|
| 95 |
+
"local_cli_agent",
|
| 96 |
+
),
|
| 97 |
+
)
|
| 98 |
+
|
| 99 |
+
|
| 100 |
+
def _build_tool_grants(
|
| 101 |
+
request: SovereignRequest,
|
| 102 |
+
decision: PolicyDecision,
|
| 103 |
+
) -> tuple[ToolGrant, ...]:
|
| 104 |
+
if not decision.allowed:
|
| 105 |
+
return (
|
| 106 |
+
ToolGrant("read_workspace", False, "blocked by policy decision"),
|
| 107 |
+
ToolGrant("write_files", False, "blocked by policy decision"),
|
| 108 |
+
ToolGrant("execute_shell", False, "blocked by policy decision"),
|
| 109 |
+
ToolGrant("network_export", False, "blocked by policy decision"),
|
| 110 |
+
)
|
| 111 |
+
|
| 112 |
+
return (
|
| 113 |
+
ToolGrant("read_workspace", True, "policy allows governed context read"),
|
| 114 |
+
ToolGrant(
|
| 115 |
+
"write_files",
|
| 116 |
+
request.writes_files,
|
| 117 |
+
"allowed only with visible diff and audit obligation",
|
| 118 |
+
),
|
| 119 |
+
ToolGrant(
|
| 120 |
+
"execute_shell",
|
| 121 |
+
request.action == "execute_shell" and request.human_approved,
|
| 122 |
+
"requires explicit human approval",
|
| 123 |
+
),
|
| 124 |
+
ToolGrant(
|
| 125 |
+
"network_export",
|
| 126 |
+
request.exports_data and request.human_approved,
|
| 127 |
+
"requires export permission, manifest, and approval",
|
| 128 |
+
),
|
| 129 |
+
)
|
sovereigncode/policy.py
CHANGED
|
@@ -1,115 +1,290 @@
|
|
| 1 |
-
"""Deterministic Data Capsule policy decision point (PDP).
|
| 2 |
-
|
| 3 |
-
Answers, for every sensitive action: can this actor, for this purpose, in this
|
| 4 |
-
region, using this model/tool, touch this capsule?
|
| 5 |
-
|
| 6 |
-
Returns one of three outcomes: allow, deny, or allow_with_obligations.
|
| 7 |
-
"""
|
| 8 |
from __future__ import annotations
|
| 9 |
|
| 10 |
-
import json
|
| 11 |
from dataclasses import dataclass, field
|
| 12 |
-
from
|
| 13 |
-
from typing import Any, Dict, List
|
| 14 |
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
|
| 20 |
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 27 |
|
| 28 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 29 |
return {
|
| 30 |
-
"
|
| 31 |
-
"
|
| 32 |
-
"
|
| 33 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 34 |
}
|
| 35 |
|
| 36 |
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 44 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 45 |
|
| 46 |
-
def load_capsule(path: str | Path) -> Dict[str, Any]:
|
| 47 |
-
return _load_yaml_or_json(Path(path))
|
| 48 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 49 |
|
| 50 |
-
def
|
| 51 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 52 |
|
| 53 |
|
| 54 |
-
|
| 55 |
-
|
| 56 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 57 |
|
| 58 |
-
|
| 59 |
-
|
| 60 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 61 |
|
| 62 |
-
|
| 63 |
-
|
| 64 |
-
|
| 65 |
-
|
|
|
|
|
|
|
| 66 |
|
| 67 |
-
|
| 68 |
-
|
| 69 |
-
reasons.append(f"purpose `{purpose}` is not in capsule.allowed_purposes")
|
| 70 |
-
return Decision(False, "deny", reasons, obligations)
|
| 71 |
|
| 72 |
-
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 77 |
|
| 78 |
-
|
| 79 |
-
|
| 80 |
-
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
|
| 85 |
-
|
| 86 |
-
|
| 87 |
-
|
| 88 |
-
|
| 89 |
-
|
| 90 |
-
if request.get("trains_model"):
|
| 91 |
-
rule = policy.get("training_rule", {})
|
| 92 |
-
if rule.get("requires_capsule_training_allowed") and not capsule.get("training_allowed", False):
|
| 93 |
-
reasons.append("training_rule requires capsule.training_allowed = true")
|
| 94 |
-
return Decision(False, "deny", reasons, obligations)
|
| 95 |
-
|
| 96 |
-
if request.get("exports_data"):
|
| 97 |
-
rule = policy.get("export_rule", {})
|
| 98 |
-
if rule.get("requires_capsule_export_allowed") and not capsule.get("export_allowed", False):
|
| 99 |
-
reasons.append("export_rule requires capsule.export_allowed = true")
|
| 100 |
-
return Decision(False, "deny", reasons, obligations)
|
| 101 |
-
|
| 102 |
-
denied_without_approval = set(policy.get("denied_without_human_approval", []))
|
| 103 |
-
action = request.get("action")
|
| 104 |
-
if action in denied_without_approval and not request.get("human_approved", False):
|
| 105 |
-
reasons.append(f"action `{action}` requires human approval")
|
| 106 |
-
return Decision(False, "deny", reasons, obligations)
|
| 107 |
-
|
| 108 |
-
if request.get("writes_files"):
|
| 109 |
-
obligations.append("show_diff_before_write_or_commit")
|
| 110 |
-
if is_high:
|
| 111 |
-
obligations.append("route_to_local_or_lumynax_model")
|
| 112 |
-
|
| 113 |
-
obligations = sorted(set(obligations))
|
| 114 |
-
reasons.append(f"capsule {capsule.get('capsule_id')} permits purpose `{purpose}` in region `{region}`")
|
| 115 |
-
return Decision(True, "allow_with_obligations" if obligations else "allow", reasons, obligations)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
from __future__ import annotations
|
| 2 |
|
|
|
|
| 3 |
from dataclasses import dataclass, field
|
| 4 |
+
from typing import Any
|
|
|
|
| 5 |
|
| 6 |
+
HIGH_IMPACT_SENSITIVITY = frozenset({"personal", "restricted", "health", "iwi", "taonga"})
|
| 7 |
+
DESTRUCTIVE_ACTIONS = frozenset({"delete_file", "execute_shell", "network_export", "publish", "commit"})
|
| 8 |
+
PERSONAL_DETAIL_LEVELS = {
|
| 9 |
+
"none": 0,
|
| 10 |
+
"anonymous": 1,
|
| 11 |
+
"pseudonymous": 2,
|
| 12 |
+
"identifiable": 3,
|
| 13 |
+
"sensitive_identifiable": 4,
|
| 14 |
+
}
|
| 15 |
|
| 16 |
|
| 17 |
+
def _tuple_of_text(value: object, *, default: tuple[str, ...] = ()) -> tuple[str, ...]:
|
| 18 |
+
if value in (None, ""):
|
| 19 |
+
return default
|
| 20 |
+
if isinstance(value, str):
|
| 21 |
+
return (value,)
|
| 22 |
+
if isinstance(value, (list, tuple, set)):
|
| 23 |
+
return tuple(str(item).strip() for item in value if str(item).strip())
|
| 24 |
+
return (str(value).strip(),)
|
| 25 |
+
|
| 26 |
+
|
| 27 |
+
def _normal(value: str) -> str:
|
| 28 |
+
return value.strip().lower().replace(" ", "_").replace("-", "_")
|
| 29 |
+
|
| 30 |
+
|
| 31 |
+
def _personal_detail_rank(value: str) -> int:
|
| 32 |
+
return PERSONAL_DETAIL_LEVELS.get(_normal(value), 0)
|
| 33 |
|
| 34 |
+
|
| 35 |
+
@dataclass(frozen=True, slots=True)
|
| 36 |
+
class DataCapsule:
|
| 37 |
+
"""Policy wrapper for a governed data subject, dataset, or workspace."""
|
| 38 |
+
|
| 39 |
+
capsule_id: str
|
| 40 |
+
subject_id: str
|
| 41 |
+
jurisdiction: str = "NZ"
|
| 42 |
+
sensitivity: str = "internal"
|
| 43 |
+
allowed_purposes: tuple[str, ...] = ("inference", "coding_assistance")
|
| 44 |
+
denied_purposes: tuple[str, ...] = ()
|
| 45 |
+
resident_regions: tuple[str, ...] = ("NZ",)
|
| 46 |
+
data_classes: tuple[str, ...] = ("source_code",)
|
| 47 |
+
retention_days: int = 30
|
| 48 |
+
export_allowed: bool = False
|
| 49 |
+
training_allowed: bool = False
|
| 50 |
+
personal_detail_level: str = "none"
|
| 51 |
+
consent_scopes: tuple[str, ...] = ()
|
| 52 |
+
data_subject_rights: tuple[str, ...] = (
|
| 53 |
+
"access",
|
| 54 |
+
"correction",
|
| 55 |
+
"deletion_request",
|
| 56 |
+
"processing_objection",
|
| 57 |
+
)
|
| 58 |
+
revoked: bool = False
|
| 59 |
+
schema_context: str = "https://schema.org"
|
| 60 |
+
consent_record: str = ""
|
| 61 |
+
metadata: dict[str, Any] = field(default_factory=dict)
|
| 62 |
+
|
| 63 |
+
@classmethod
|
| 64 |
+
def from_payload(cls, payload: dict[str, Any]) -> DataCapsule:
|
| 65 |
+
return cls(
|
| 66 |
+
capsule_id=str(payload.get("capsule_id") or payload.get("id") or ""),
|
| 67 |
+
subject_id=str(payload.get("subject_id") or payload.get("subject") or ""),
|
| 68 |
+
jurisdiction=str(payload.get("jurisdiction") or "NZ"),
|
| 69 |
+
sensitivity=_normal(str(payload.get("sensitivity") or "internal")),
|
| 70 |
+
allowed_purposes=tuple(_normal(item) for item in _tuple_of_text(payload.get("allowed_purposes"), default=("inference",))),
|
| 71 |
+
denied_purposes=tuple(_normal(item) for item in _tuple_of_text(payload.get("denied_purposes"))),
|
| 72 |
+
resident_regions=tuple(str(item).upper() for item in _tuple_of_text(payload.get("resident_regions"), default=("NZ",))),
|
| 73 |
+
data_classes=tuple(_normal(item) for item in _tuple_of_text(payload.get("data_classes"), default=("source_code",))),
|
| 74 |
+
retention_days=int(payload.get("retention_days") or 30),
|
| 75 |
+
export_allowed=bool(payload.get("export_allowed", False)),
|
| 76 |
+
training_allowed=bool(payload.get("training_allowed", False)),
|
| 77 |
+
personal_detail_level=_normal(
|
| 78 |
+
str(payload.get("personal_detail_level") or "none"),
|
| 79 |
+
),
|
| 80 |
+
consent_scopes=tuple(
|
| 81 |
+
_normal(item) for item in _tuple_of_text(payload.get("consent_scopes"))
|
| 82 |
+
),
|
| 83 |
+
data_subject_rights=tuple(
|
| 84 |
+
_normal(item)
|
| 85 |
+
for item in _tuple_of_text(
|
| 86 |
+
payload.get("data_subject_rights"),
|
| 87 |
+
default=(
|
| 88 |
+
"access",
|
| 89 |
+
"correction",
|
| 90 |
+
"deletion_request",
|
| 91 |
+
"processing_objection",
|
| 92 |
+
),
|
| 93 |
+
)
|
| 94 |
+
),
|
| 95 |
+
revoked=bool(payload.get("revoked", False)),
|
| 96 |
+
schema_context=str(payload.get("schema_context") or "https://schema.org"),
|
| 97 |
+
consent_record=str(payload.get("consent_record") or ""),
|
| 98 |
+
metadata=dict(payload.get("metadata") or {}),
|
| 99 |
+
)
|
| 100 |
+
|
| 101 |
+
def to_dict(self) -> dict[str, Any]:
|
| 102 |
return {
|
| 103 |
+
"capsule_id": self.capsule_id,
|
| 104 |
+
"subject_id": self.subject_id,
|
| 105 |
+
"jurisdiction": self.jurisdiction,
|
| 106 |
+
"sensitivity": self.sensitivity,
|
| 107 |
+
"allowed_purposes": list(self.allowed_purposes),
|
| 108 |
+
"denied_purposes": list(self.denied_purposes),
|
| 109 |
+
"resident_regions": list(self.resident_regions),
|
| 110 |
+
"data_classes": list(self.data_classes),
|
| 111 |
+
"retention_days": self.retention_days,
|
| 112 |
+
"export_allowed": self.export_allowed,
|
| 113 |
+
"training_allowed": self.training_allowed,
|
| 114 |
+
"personal_detail_level": self.personal_detail_level,
|
| 115 |
+
"consent_scopes": list(self.consent_scopes),
|
| 116 |
+
"data_subject_rights": list(self.data_subject_rights),
|
| 117 |
+
"revoked": self.revoked,
|
| 118 |
+
"schema_context": self.schema_context,
|
| 119 |
+
"consent_record": self.consent_record,
|
| 120 |
+
"metadata": dict(self.metadata),
|
| 121 |
}
|
| 122 |
|
| 123 |
|
| 124 |
+
@dataclass(frozen=True, slots=True)
|
| 125 |
+
class SovereignRequest:
|
| 126 |
+
actor: str
|
| 127 |
+
purpose: str
|
| 128 |
+
action: str
|
| 129 |
+
region: str = "NZ"
|
| 130 |
+
model_id: str = "local/lumynax"
|
| 131 |
+
data_classes: tuple[str, ...] = ("source_code",)
|
| 132 |
+
tool_name: str = ""
|
| 133 |
+
writes_files: bool = False
|
| 134 |
+
exports_data: bool = False
|
| 135 |
+
trains_model: bool = False
|
| 136 |
+
human_approved: bool = False
|
| 137 |
+
personal_detail_level: str = "none"
|
| 138 |
+
consent_scope: str = ""
|
| 139 |
+
requested_retention_days: int | None = None
|
| 140 |
+
metadata: dict[str, Any] = field(default_factory=dict)
|
| 141 |
+
|
| 142 |
+
@classmethod
|
| 143 |
+
def from_payload(cls, payload: dict[str, Any]) -> SovereignRequest:
|
| 144 |
+
return cls(
|
| 145 |
+
actor=str(payload.get("actor") or "unknown"),
|
| 146 |
+
purpose=_normal(str(payload.get("purpose") or "inference")),
|
| 147 |
+
action=_normal(str(payload.get("action") or "read_context")),
|
| 148 |
+
region=str(payload.get("region") or "NZ").upper(),
|
| 149 |
+
model_id=str(payload.get("model_id") or "local/lumynax"),
|
| 150 |
+
data_classes=tuple(_normal(item) for item in _tuple_of_text(payload.get("data_classes"), default=("source_code",))),
|
| 151 |
+
tool_name=str(payload.get("tool_name") or ""),
|
| 152 |
+
writes_files=bool(payload.get("writes_files", False)),
|
| 153 |
+
exports_data=bool(payload.get("exports_data", False)),
|
| 154 |
+
trains_model=bool(payload.get("trains_model", False)),
|
| 155 |
+
human_approved=bool(payload.get("human_approved", False)),
|
| 156 |
+
personal_detail_level=_normal(
|
| 157 |
+
str(payload.get("personal_detail_level") or "none"),
|
| 158 |
+
),
|
| 159 |
+
consent_scope=_normal(str(payload.get("consent_scope") or "")),
|
| 160 |
+
requested_retention_days=(
|
| 161 |
+
int(payload["requested_retention_days"])
|
| 162 |
+
if payload.get("requested_retention_days") is not None
|
| 163 |
+
else None
|
| 164 |
+
),
|
| 165 |
+
metadata=dict(payload.get("metadata") or {}),
|
| 166 |
+
)
|
| 167 |
|
| 168 |
+
def to_dict(self) -> dict[str, Any]:
|
| 169 |
+
return {
|
| 170 |
+
"actor": self.actor,
|
| 171 |
+
"purpose": self.purpose,
|
| 172 |
+
"action": self.action,
|
| 173 |
+
"region": self.region,
|
| 174 |
+
"model_id": self.model_id,
|
| 175 |
+
"data_classes": list(self.data_classes),
|
| 176 |
+
"tool_name": self.tool_name,
|
| 177 |
+
"writes_files": self.writes_files,
|
| 178 |
+
"exports_data": self.exports_data,
|
| 179 |
+
"trains_model": self.trains_model,
|
| 180 |
+
"human_approved": self.human_approved,
|
| 181 |
+
"personal_detail_level": self.personal_detail_level,
|
| 182 |
+
"consent_scope": self.consent_scope,
|
| 183 |
+
"requested_retention_days": self.requested_retention_days,
|
| 184 |
+
"metadata": dict(self.metadata),
|
| 185 |
+
}
|
| 186 |
|
|
|
|
|
|
|
| 187 |
|
| 188 |
+
@dataclass(frozen=True, slots=True)
|
| 189 |
+
class PolicyDecision:
|
| 190 |
+
allowed: bool
|
| 191 |
+
reasons: tuple[str, ...]
|
| 192 |
+
obligations: tuple[str, ...]
|
| 193 |
+
audit_tags: tuple[str, ...]
|
| 194 |
|
| 195 |
+
def to_dict(self) -> dict[str, Any]:
|
| 196 |
+
return {
|
| 197 |
+
"allowed": self.allowed,
|
| 198 |
+
"reasons": list(self.reasons),
|
| 199 |
+
"obligations": list(self.obligations),
|
| 200 |
+
"audit_tags": list(self.audit_tags),
|
| 201 |
+
}
|
| 202 |
|
| 203 |
|
| 204 |
+
class SovereigntyPolicyEngine:
|
| 205 |
+
"""Deterministic policy decision point for AbteeX SovereignCode."""
|
| 206 |
|
| 207 |
+
def evaluate(self, capsule: DataCapsule, request: SovereignRequest) -> PolicyDecision:
|
| 208 |
+
reasons: list[str] = []
|
| 209 |
+
obligations: list[str] = [
|
| 210 |
+
"write_immutable_audit_record",
|
| 211 |
+
f"retain_trace_no_more_than_{capsule.retention_days}_days",
|
| 212 |
+
"preserve_capsule_id_in_agent_trace",
|
| 213 |
+
]
|
| 214 |
+
audit_tags: list[str] = [
|
| 215 |
+
f"jurisdiction:{capsule.jurisdiction.upper()}",
|
| 216 |
+
f"sensitivity:{capsule.sensitivity}",
|
| 217 |
+
f"purpose:{request.purpose}",
|
| 218 |
+
]
|
| 219 |
|
| 220 |
+
if capsule.revoked:
|
| 221 |
+
reasons.append("capsule consent has been revoked")
|
| 222 |
+
if request.purpose in capsule.denied_purposes:
|
| 223 |
+
reasons.append(f"purpose `{request.purpose}` is explicitly denied")
|
| 224 |
+
if request.purpose not in capsule.allowed_purposes:
|
| 225 |
+
reasons.append(f"purpose `{request.purpose}` is not in allowed_purposes")
|
| 226 |
+
if request.region.upper() not in capsule.resident_regions:
|
| 227 |
+
reasons.append(f"request region `{request.region}` is outside resident_regions")
|
| 228 |
+
if request.trains_model and not capsule.training_allowed:
|
| 229 |
+
reasons.append("model training is not allowed for this capsule")
|
| 230 |
+
if request.exports_data and not capsule.export_allowed:
|
| 231 |
+
reasons.append("data export is not allowed for this capsule")
|
| 232 |
+
if request.requested_retention_days and request.requested_retention_days > capsule.retention_days:
|
| 233 |
+
reasons.append("requested retention exceeds capsule retention_days")
|
| 234 |
+
if not set(request.data_classes).issubset(set(capsule.data_classes)):
|
| 235 |
+
reasons.append("request data_classes exceed capsule data_classes")
|
| 236 |
+
if _personal_detail_rank(request.personal_detail_level) > _personal_detail_rank(
|
| 237 |
+
capsule.personal_detail_level,
|
| 238 |
+
):
|
| 239 |
+
reasons.append("requested personal_detail_level exceeds capsule consent")
|
| 240 |
+
if (
|
| 241 |
+
request.consent_scope
|
| 242 |
+
and capsule.consent_scopes
|
| 243 |
+
and request.consent_scope not in capsule.consent_scopes
|
| 244 |
+
):
|
| 245 |
+
reasons.append("request consent_scope is not covered by the capsule")
|
| 246 |
|
| 247 |
+
model_is_lumynax_or_local = any(
|
| 248 |
+
marker in request.model_id.lower()
|
| 249 |
+
for marker in ("lumynax", "local", "llama.cpp", "gguf")
|
| 250 |
+
)
|
| 251 |
+
if capsule.sensitivity in HIGH_IMPACT_SENSITIVITY and not model_is_lumynax_or_local:
|
| 252 |
+
reasons.append("high-impact data requires a local or LumynaX-governed model")
|
| 253 |
|
| 254 |
+
if request.action in DESTRUCTIVE_ACTIONS and not request.human_approved:
|
| 255 |
+
reasons.append(f"action `{request.action}` requires human approval")
|
|
|
|
|
|
|
| 256 |
|
| 257 |
+
if request.writes_files:
|
| 258 |
+
obligations.append("show_diff_before_write_or_commit")
|
| 259 |
+
if request.exports_data:
|
| 260 |
+
obligations.append("attach_export_manifest_and_recipient")
|
| 261 |
+
if request.trains_model:
|
| 262 |
+
obligations.append("attach_training_consent_record")
|
| 263 |
+
if capsule.sensitivity in HIGH_IMPACT_SENSITIVITY:
|
| 264 |
+
obligations.extend(
|
| 265 |
+
(
|
| 266 |
+
"redact_unneeded_personal_data",
|
| 267 |
+
"route_only_to_resident_runtime",
|
| 268 |
+
"require_human_review_for_external_effects",
|
| 269 |
+
),
|
| 270 |
+
)
|
| 271 |
+
if "personal" in capsule.data_classes or capsule.sensitivity == "personal":
|
| 272 |
+
obligations.extend(
|
| 273 |
+
(
|
| 274 |
+
"honour_data_subject_access_and_correction",
|
| 275 |
+
"minimise_personal_detail_in_prompt",
|
| 276 |
+
"keep_personal_trace_inside_capsule_retention",
|
| 277 |
+
),
|
| 278 |
+
)
|
| 279 |
|
| 280 |
+
allowed = not reasons
|
| 281 |
+
if not allowed:
|
| 282 |
+
audit_tags.append("decision:deny")
|
| 283 |
+
else:
|
| 284 |
+
audit_tags.append("decision:allow")
|
| 285 |
+
return PolicyDecision(
|
| 286 |
+
allowed=allowed,
|
| 287 |
+
reasons=tuple(reasons),
|
| 288 |
+
obligations=tuple(dict.fromkeys(obligations)),
|
| 289 |
+
audit_tags=tuple(dict.fromkeys(audit_tags)),
|
| 290 |
+
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|