contenox
Browse docs/

Plan: Alternative Silicon & AI PC Runtime Strategy

Status: expert product-strategy blueprint, corrected against primary docs on 2026-06-16. Sibling docs: ../local-coding-node-goals.md, openvino/coding-node-plan.md, llama/coding-node-plan.md, ortgenai-windows-ai.md.

Executive Verdict

Do not position Contenox as the “OS-level runtime” replacing Windows ML, OpenVINO, QNN, Ryzen AI, RKLLM, or llama.cpp. That claim is too broad and picks the wrong fight.

The defensible claim is:

Contenox is the workspace-state runtime above fragmented local accelerators.

Hardware vendors and OS/runtime teams own kernels, drivers, graph compilation, execution providers, and model packaging. Contenox owns what they do not know:

deterministic workspace context
repo maps, pinned files, diffs, logs, tests, tools
stable/volatile segment manifests
token hashes and invalidation rules
session lifecycle and warm-reuse policy
coding workflow UX
benchmark-backed device/model profiles

The strategy is to make local silicon useful for developer workflows by turning a workspace into reusable execution state, not by pretending Contenox replaces the substrates. There is no sidecar product strategy in this plan: a runtime profile is either a standalone Contenox llama profile that can run the main session contract, or it is out of scope.

Verified Corrections

Windows ML / ORT GenAI Is A Real Track

Windows ML is now positioned by Microsoft as a local Windows inference framework powered by ONNX Runtime, with Windows-managed execution providers for NPUs, GPUs, and CPUs. It supports x64 and ARM64 Windows PCs and can dynamically acquire EPs instead of every app bundling them.

ONNX Runtime GenAI also exposes generator operations that map to Contenox’s workspace-context shape:

OgaGenerator::AppendTokenSequences
OgaGenerator::AppendTokens
OgaGenerator::GenerateNextToken
OgaGenerator::RewindTo
OgaGenerator::GetSequenceCount
OgaGenerator::GetSequenceData

This is enough to justify a first-class AI PC compatibility track:

ortgenai-windows-ai.md

Important caveat: provider support is version- and EP-dependent. ORT’s migration docs say chat/system-prompt caching support is limited for some providers, while AMD’s Ryzen AI 1.7.1 article says ONNX Runtime GenAI continuous decoding supports KV reuse on Ryzen AI OGA configurations. Treat this as a required probe, not a guarantee.

NPUs Are Not The First 7B/64k Target

Do not make this the first Snapdragon/Ryzen NPU success metric:

7B/8B coding model
64k hot context
<60s warm TTFT
Hexagon/XDNA NPU only

Near-term public material points to smaller NPU workloads. ORT’s Snapdragon tutorial currently centers on SLMs such as Phi-3.5 mini instruct and Llama 3.2 3B, with Snapdragon-specific assets. AMD’s Ryzen AI 1.7 highlights LLM context support up to 16K on NPU. That is useful, but it is not the T1/T2 64k-128k main coder target.

Treat 2026 AI PC NPUs as:

1. small-model engines: 1.5B-4B, 4k-16k context
2. future main-coder candidates only after measured proof
3. unsupported for Contenox if they only work as helper sidecars

The 7B/8B 64k-128k coding-node target remains first for Intel Arc/Arc Pro, mature GPU paths, high-memory APUs, and proven OpenVINO/llama.cpp profiles.

llama.cpp Is A Broad Bridge, Not Free Hardware Support

llama.cpp remains valuable because it carries GGUF, CPU fallback, Vulkan/SYCL, and backend experiments such as Snapdragon CPU/OpenCL/Hexagon builds. But “support for free” is too strong.

Every llama.cpp backend still must prove:

sequence/state correctness
warm suffix equals cold full prompt
KV memory placement
context length
KV quant behavior
cancellation and error recovery
packaging on the target OS/arch

Rockchip Is A Constrained Standalone Lane

RKLLM/RKNN-class hardware is useful for edge demos, small helpers, offline automation, summaries, and local indexing in other products. For Contenox, it is only interesting if it can run a standalone LocalSession profile. It is not a sidecar lane and not the flagship 7B/64k local coding node.

Jetson Is A CUDA Edge Lane, Not The Main Budget Node

Jetson Orin NX 16GB is worth tracking even though it is “NVIDIA-shaped.” NVIDIA positions Jetson Orin NX as a compact edge module with up to 157 TOPS, 10W-40W power modes, an Ampere GPU, and 16GB/8GB LPDDR5 options. That makes it a serious edge inference node, but Contenox should only care about it as a standalone llama profile.

Do not confuse that with the main Contenox coding-node target:

Jetson Orin NX 16GB:
  good standalone edge-node / small-coder candidate
  likely useful for 7B-class Q4 daily assistants at modest context
  constrained by shared 16GB system memory and model residency

Contenox T1/T2:
  7B/8B coder
  64k-128k hot context
  warm suffix equivalence
  no swap path during decode

The lesson from the Pi 5 + Jetson Orin NX NOUS field report is operational: unified memory gets painful when multiple large models stay resident. A large infrequent model should be on-demand, not permanently warmed, if it pushes the daily model into swap. The Pi+Jetson split is a useful field report, but Contenox should not build a required multi-node sidecar architecture from it.

Second lesson: local “OpenAI-compatible” tool-call endpoints are not enough by themselves. Tool-call reliability must be certified per backend/model/template protocol. If a local serving layer cannot reliably emit declared tool calls, prompt-injected RAG is a valid product fallback, but the profile gets no tool-call certification.

Runtime Lanes

1. Intel / OpenVINO Certified Node

Flagship path for the main coding-node target:

7B/8B coder
64k-128k hot context
200k+ effective context through retrieval/pins/summaries
Arc/Arc Pro GPU first, NPU/AMX as measured

OpenVINO remains the strongest narrow stack for the budget Intel node.

2. llama.cpp Llama Runtime

Fastest cross-backend proof path:

GGUF model ecosystem
GPU fallback and broad local hardware support
sequence/KV primitives
tiny correctness fixtures
cross-substrate validation of the Contenox manifest/session layer

Treat each llama.cpp backend as a profile to certify, not an automatic product claim.

3. ONNX Runtime GenAI / Windows ML

AI PC compatibility lane:

Windows x64
Windows ARM64
Qualcomm QNN EP
AMD Ryzen AI / Vitis AI EP
DirectML / GPU
CPU fallback
Foundry Local / Windows ML distribution alignment

This track is not a replacement for OpenVINO or llama.cpp. It exists because AI PCs are Windows-heavy, and Windows ML/ORT is becoming the system-supported distribution layer.

4. Direct Vendor SDKs

Escalate only after a bridge runtime fails a measured Contenox requirement:

runtime/modelrepo/qualcomm/qnnsession
runtime/modelrepo/amd/ryzenaisession
runtime/modelrepo/rockchip/rkllmsession

Reasons to escalate:

missing append/rewind/remove-tail
bad memory placement
no metrics
bad cancellation semantics
too much bridge overhead
unacceptable model conversion friction

5. NVIDIA Jetson / CUDA Edge Nodes

Jetson belongs in this strategy as an edge-node lane:

runtime routes:
  llama.cpp CUDA / GGUF
  Ollama as compatibility baseline only
  TensorRT-Edge-LLM or TensorRT paths when they expose enough session control
  JetPack/CUDA ecosystem only if it runs inside the standalone profile

recommended role:
  standalone edge assistant at measured context
  small-coder or 7B-class daily assistant if the profile passes

not assumed:
  64k hot coding context
  multiple resident large models
  reliable OpenAI-compatible tool calls through every serving layer

The runtime policy requirement is stronger than on a desktop dGPU: Contenox must know which models are resident, which can be evicted, which are on-demand, and whether swap/zram pressure has appeared. A Jetson profile that swaps during normal daily use is not certified for that workload even if it eventually answers.

Capability Contract

Product code must ask backends what they can do. It must not infer capabilities from branding such as “AI PC”, “Hexagon”, “XDNA”, or “NPU”.

type RuntimeCapability struct {
    Backend              string // openvino, llamacpp, ortgenai, qnn, ryzenai, rkllm
    OS                   string // linux, windows, darwin, android
    Arch                 string // amd64, arm64
    DeviceClass          string // cpu, gpu, npu, hybrid
    ModelFormat          string // gguf, openvino-ir, onnx-genai, qnn-context, rkllm

    CanGenerate          bool
    CanStream            bool
    CanTokenize          bool
    CanReportMetrics     bool
    CanCancelPrefill     bool
    CanCancelDecode      bool

    HasPersistentSession bool
    CanAppendTokens      bool
    CanRewindToToken     bool
    CanRemoveTail        bool
    CanCopySequence      bool
    CanSnapshotKV        bool
    CanRestoreKV         bool
    CanBranchSession     bool

    ReportsKVBytes       bool
    ReportsDeviceMemory  bool
    ReportsHostMemory    bool
    ReportsSwapPressure  bool
    SupportsKVQuant      bool
    SupportsPrefixCache  bool
    SupportsSparseAttn   bool
    SupportsModelUnload  bool
    SupportsIdleEvict    bool

    MaxTestedContext     int
    MaxTestedHotPrefix   int
    MaxTestedSuffix      int
    BatchSize            int

    KnownLimitations     []string
}

Planner rules:

Exact suffix reuse:
  append + rewind/remove-tail, or equivalent sequence ops.

Coarse warm-prefix reuse:
  runtime prefix cache hit, suffix re-prefill.

Snapshot branch:
  only when save/restore is exact and measured.

Chat-only fallback:
  no workspace-context-reuse claim, no long-context tier claim.

Certification Tiers

Do not reuse T1/T2/T3 for alternative silicon. Those are main coding-node goals. Use A-tier certification for the hardware/runtime profile:

TierNameRequirement
A0Local chat baselinemodel loads, generates, streams, reports basic metrics
A1Persistent generatorappend tokens across turns without full prompt rebuild
A2Rewind/suffix equivalentwarm suffix output matches cold full prompt under greedy decode
A3Constrained standalone nodeone model/profile runs locally with measured context, no required sidecar
A4Small main coder1.5B-4B coder/helper, 8k-16k hot context, useful coding workflows
A5Large main coder7B/8B, 64k hot, warm useful response target
A6Snapshot/branchraw or logical session snapshot/restore, branch, resume

Example public claims:

Contenox Certified: Snapdragon X A4 Small-Coder
Contenox Certified: Ryzen AI 300 A4 Small-Coder
Contenox Certified: Intel Arc Pro A5 Main-Coder
Contenox Certified: Jetson Orin NX 16GB A3 Edge Assistant
Contenox Certified: RK3588 A3 Constrained Standalone Node

Backend-Neutral Session Shape

type TokenPosition int

type LocalSession interface {
    Profile() RuntimeProfile
    Capabilities() RuntimeCapability

    Tokenize(ctx context.Context, text string) ([]int32, error)
    AppendTokens(ctx context.Context, tokens []int32) (TokenPosition, error)
    Rewind(ctx context.Context, pos TokenPosition) error

    DecodeNext(ctx context.Context, opts DecodeOptions) (Token, error)
    Stream(ctx context.Context, opts DecodeOptions) (<-chan Token, <-chan error)

    Metrics() SessionMetrics
    DeviceMemory() (DeviceMemory, error)

    SnapshotSave(ctx context.Context, path string) error    // optional
    SnapshotRestore(ctx context.Context, path string) error // optional
    Branch(ctx context.Context) (LocalSession, error)       // optional

    Close() error
}

The existing llama.Session can evolve toward this shape without exposing substrate details to product code.

Model/Profile Strategy

Do not force one model format. Certify profiles.

FormatRuntimeUse
GGUFllama.cppbroad local support and GPU fallback
OpenVINO IROpenVINOIntel certified node and NPU/GPU/CPU profiles
ONNX GenAI folderORT GenAI / Windows MLWindows AI PC track
QNN context binariesORT QNN / QNN directSnapdragon optimized deployment
RKLLMRKLLM Runtimeconstrained standalone edge node only
GGUF / TensorRT artifactsJetson CUDA / TensorRT-Edge-LLMNVIDIA standalone edge node

Example profile metadata:

{
  "id": "qwen2.5-coder-3b-ortgenai-qnn-snapdragon-x",
  "model_family": "qwen2.5-coder",
  "format": "onnx-genai-qnn",
  "runtime": "ortgenai",
  "execution_provider": "QNNExecutionProvider",
  "os": "windows",
  "arch": "arm64",
  "device": "snapdragon-x-hexagon",
  "weights": "int4",
  "max_tested_context": 8192,
  "max_tested_hot_prefix": 6144,
  "supports_append": true,
  "supports_rewind": true,
  "supports_snapshot": false,
  "certification": "A4",
  "warnings": [
    "not a 7B/64k main-coder profile",
    "model assets are EP-specific",
    "rerun certification after QNN EP update"
  ]
}

Benchmarks

Every adapter/profile should emit one JSON report:

{
  "profile_id": "...",
  "hardware": "...",
  "runtime": "...",
  "runtime_version": "...",
  "driver_version": "...",
  "os": "...",
  "arch": "...",
  "cold_full_prefill": {
    "tokens": 8192,
    "ms": 0,
    "prompt_tps": 0,
    "ttft_ms": 0,
    "device_memory_peak_mb": 0
  },
  "warm_append": {
    "cached_tokens": 6144,
    "new_tokens": 512,
    "ttft_ms": 0,
    "equivalent_to_cold_greedy": true
  },
  "rewind_suffix": {
    "rewind_to": 6144,
    "new_suffix_tokens": 1024,
    "ttft_ms": 0,
    "equivalent_to_cold_greedy": true
  },
  "decode": {
    "tokens": 256,
    "tokens_per_second": 0
  },
  "snapshot": {
    "supported": false,
    "save_ms": null,
    "restore_ms": null,
    "bytes": null
  },
  "residency": {
    "resident_models": [],
    "on_demand_models": [],
    "model_unload_ms": 0,
    "host_memory_peak_mb": 0,
    "swap_events": 0
  },
  "failure_cases": {
    "over_context": "structured_error",
    "cancel_prefill": "session_valid_or_dead_explicit",
    "cancel_decode": "session_valid_or_dead_explicit",
    "profile_mismatch": "cache_miss"
  }
}

The most important correctness test remains:

warm suffix output == cold full prompt output under greedy decoding

Revised Phases

AS0 — Capability Matrix

Add a probe command:

contenox silicon probe --json

Report:

OS/arch
available CPUs/GPUs/NPUs
unified-memory devices and usable memory
swap/zram status
installed EPs/plugins/drivers
runtime candidates
model formats supported
session capabilities
model unload / idle eviction support
known unsupported paths

AS1 — ORT GenAI Adapter Spike

Create runtime/modelrepo/ortgenai/.

Minimum proof:

load ONNX GenAI model
select CPU / DirectML / QNN / AMD Vitis AI or Ryzen AI EP where available
append stable prompt
append user suffix
generate greedily
rewind to stable boundary
append alternate suffix
verify warm output equals cold full prompt

If a provider does not support append/rewind for chat mode, record that in capabilities and downgrade the profile.

AS2 — Windows ARM64 Native Build

Target Snapdragon X devices:

GOOS=windows GOARCH=arm64
CGo/native DLL loading proven
SQLite/storage path proven
ORT GenAI/QNN DLL loading proven
streaming/cancel works
zip/installer packaging works

AS3 — Edge Model Residency Gate

Required for Jetson-class unified-memory nodes and useful everywhere:

declare always-warm daily model
declare secondary on-demand models
measure load/unload latency
evict idle large models before daily model swap
report resident model memory and swap/zram pressure
fail certification if decode depends on swapping

AS4 — Small-Coder Certification

Certify 1.5B-4B models:

4k, 8k, 16k contexts where supported
append/rewind correctness
warm TTFT
energy/thermal notes
useful coding tasks, not only chat

AS5 — Main-Coder Attempt

Only after AS4 passes:

attempt 7B/8B
attempt 32k, then 64k
measure memory and warm TTFT
promote to A5 only if it passes

AS6 — Direct SDK Escalation

Use QNN/RyzenAI/RKLLM direct adapters only when bridge runtimes fail a measured requirement.

Risks

RiskMitigation
TOPS marketing trappublish profile benchmarks only
Hidden KV/state APIsaccept append/rewind as a logical primitive when exact
Provider driftpin runtime + driver + EP version in profiles
Static-shape/context limitscertify max tested context only
Windows ARM64 CGo frictionAS2 packaging spike before product promise
Model conversion frictionreproducible model-profile recipes
No raw snapshotkeep snapshots optional; prefer live sessions first
Unified-memory contentionmodel residency policy, idle eviction, no-swap certification
Local tool-call protocol driftcertify parser/tool protocol per model/runtime; prompt-injected RAG fallback gets no tool-call claim
Vendor lock-inbackend-neutral session interface and capability matrix

Vendor Ask

Ask vendors for:

sample devices
redistributable runtime terms
stable C/C++ APIs
append/rewind or raw KV primitives
device memory reporting
prefill/decode metrics
cancellation semantics
model conversion recipes for Qwen/Phi/coder models
permission to publish benchmark-backed Contenox profiles

Demo target:

contenox silicon certify --profile snapdragon-x-qnn-qwen3-4b
contenox init
contenox node explain-context
contenox "find why this test fails"

Final Strategy

Intel/OpenVINO:
  flagship certified main coding node.

llama.cpp:
  fast GGUF bridge and cross-backend validation.

ORT GenAI / Windows ML:
  AI PC compatibility lane, especially Windows ARM64, Qualcomm, AMD, DirectML.

Direct SDKs:
  escalation path when bridge layers fail.

Jetson / CUDA edge:
  standalone edge assistant only;
  model residency and no-swap behavior are certification gates.

NPUs:
  small-coder engines first;
  main 7B/64k only after benchmark proof.

References

Esc to close