Model references and acquisition
Local processing setup exposes the complete pinned Whisper Tiny and Community-1 choices, verified local snapshot reuse and elected filesystem/S3 destinations. Model acquisition remains durable shared work with byte and file progress.
Exact identities and short references
Downloaded base models declare exact names, model versions, upstream revisions, capabilities, license metadata and every required file's role, URL, SHA-256 and size. Name and version identify one immutable installation. A conflicting manifest for that pair is rejected; changed files require another version. Registration does not imply its bytes are available.
Names, model versions and upstream revisions preserve their exact registered Unicode text, including whitespace-only values and line breaks. Registration does not trim or normalize these immutable identities. Human CLI output quotes these fields and escapes control characters, so a space or line break remains visible; JSON retains the original string. Use the installation UUID when an identity is inconvenient to enter.
Model references accept an installation UUID, base:UUID, speaker:VERSION_UUID,
a workspace alias, or source:NAME/SELECTOR. Aliases use lowercase ASCII names
of 1-64 characters, beginning with a letter and containing letters, digits,
periods, underscores or hyphens. They cannot collide with UUID syntax. Alias
targets declare one operation and exact base, speaker-version or hosted target.
Names are unique within their workspace. Ambiguous or unknown references never
select the first returned version or guess a download URL.
Alias records have stable UUIDs and optimistic revisions. Retarget and remove require the current expected revision. Removal preserves a tombstone so an old edit cannot change a recreated alias; recreation uses the existing ID/revision. Changing an alias affects future submissions, never accepted job elections.
Direct bundle acquisition reports an exact base target with an empty operation;
accepting the bundle does not establish inference compatibility for a task.
Pipeline inspection retains an unavailable reference as a missing selection
with an unresolved target and the intended operation. It reports no model ID,
manifest digest or upstream revision until resolution succeeds.
An alias declared for another operation retains its exact target and reports
the operation mismatch as incompatible. Direct models resolve and pipeline inspection succeed with compatible: false for this inspection, retaining target, alias revision, manifest digest and upstream revision. Execution election still rejects it before acquisition or inference.
insonic models resolve speech-main --operation transcription --json
insonic models resolve base:MODEL_ID --operation transcription --json
insonic models alias list --json
insonic models alias show ALIAS_ID --json
insonic models alias set ALIAS_ID --input alias-update.json --json
insonic models alias remove ALIAS_ID --expected-revision REVISION --json
For example, alias-update.json creates a transcription alias to a registered
installation. Replace the example UUIDs with the selected stable IDs; retargeting
uses the returned positive revision in expected_revision.
{
"expected_revision": 0,
"alias": {
"id": "10000000-0000-4000-8000-000000000051",
"name": "speech-main",
"state": "active",
"target": {
"kind": "base",
"id": "10000000-0000-4000-8000-000000000052",
"operation": "transcription"
}
}
}
Configured discovery
Sources are explicit revisioned workspace records with a unique short name, catalog URL, optional opaque credential UUID and an explicit loopback HTTP exception. Discovery reads bounded metadata and reports declared entries, complete manifests, compatibility and availability separately. A discovered entry is not presented as a verified installed model. Custom manifests remain supported; no mandatory curated-model list is imposed.
insonic models source list --json
insonic models source set SOURCE_ID --input source-update.json --json
insonic models source show SOURCE_ID --json
insonic models discover SOURCE_ID --json
insonic models resolve source:custom/speech:v1 --operation transcription --json
insonic models source remove SOURCE_ID --expected-revision REVISION --json
A source update has expected_revision and a source object containing id,
name, state, url, optional credential_id and local_http. New records use
expected revision zero; updates/removal use the returned revision. Source URLs
and file URLs must follow the configured transport policy: HTTPS by default,
explicit loopback HTTP where permitted, no password/user information or query
credentials, and bounded declared-origin redirects. Saved credential values are not
included in source records, manifests, durable work or status.
Catalog content cannot authorize loopback file downloads. Such files require
an owner-configured loopback source with its local opt-in enabled. An explicit
owner-supplied manifest retains its own local transport option.
The implemented source protocol is a model-catalog document with
schema_version, and up to 128 entries, each containing selector and a
complete manifest. Responses are bounded to 4 MiB. Selectors may represent
tags or branches, but resolution freezes the returned exact bundle and its
declared upstream revision. Catalog providers should supply immutable upstream
revisions wherever available; unknown declarations remain explicit. Every file,
including tokenizer/configuration auxiliaries, still requires SHA-256 and size.
Updating the catalog later cannot change an existing election.
Direct Hugging Face APIs/CDN downloads are not an implemented source adapter. An explicitly configured catalog can describe supported URLs; unsupported provider redirects or formats are diagnosed instead of silently changing the transport policy. Revision-pinned acquisition guidance explains why mutable branches are convenience selectors rather than job identity.
Compatibility before execution
Optional manifest compatibility declares adapter, contract_version,
architecture, runtime_format, and optional sample_rates and channels.
Inspection validates task, required file roles, adapter contract and audio
requirements without loading a model. Available and compatible are different
properties: custom bundles may be registered/acquired while lacking a supported
execution adapter.
Installed inventory includes declared capabilities and compatibility with the default adapter for each operation. Shared selectors use these summaries to label incompatible bundles while retaining exact identity and availability. Reference inspection checks the requested operation; a saved pipeline's inspection also checks its explicitly selected stage adapter.
The current local adapters require contract version 1. faster-whisper
consumes Whisper/CTranslate2 files named config.json, model.bin,
tokenizer.json and vocabulary.txt. pyannote consumes Pyannote/Torch files
named config.yaml, embedding/pytorch_model.bin,
segmentation/pytorch_model.bin, plda/plda.npz and
plda/xvec_transform.npz. Matching is case-sensitive and role paths are confined.
Their mapped engine input is 16000 Hz mono. Older accepted manifests without
explicit compatibility retain their original digests and are checked against
these established role contracts; they are not silently rewritten.
Unsupported task/runtime/architecture/version, missing roles and incompatible audio requirements are diagnosed before inference. Downloading arbitrary weights does not make them executable. A failed local selection does not choose another model, device or hosted provider.
Acquisition and dependent work
insonic models register model.json --json
insonic models acquire model.json --json
insonic work show WORK_ID --json
insonic work wait WORK_ID --timeout-ms 30000 --json
insonic models list --json
insonic models show MODEL_ID --json
insonic models verify MODEL_ID --json
insonic models materialize MODEL_ID --json
Processing/import elections resolve references once, validate compatibility and
freeze exact IDs, complete manifest digests, upstream/adapter identities and
effective settings. Missing selected bundles acquire automatically before
dependent processing. Saved pipeline inspection remains free of acquisition
and inference. Direct processing fields and import's --diarization-model-id
use the same reference grammar; see pipelines and
import.
Acquisition returns durable work immediately. Underlying acquisition is shared by exact workspace/bundle identity; explicit requests and processing consumers retain independently cancellable parent work. Waiting consumers leave worker slots free for acquisition. Work inspection identifies frozen selections, acquisition IDs and phase. A failed/cancelled dependency produces a diagnosed acquisition failure, not a completed pipeline. Retrying the parent repairs its original dependency without following a later alias or source change.
Downloads resume bounded partial transfers, verify all hashes/sizes and publish files before accepting availability. Already available bytes are verified, not trusted by cache filename. Missing/corrupt bytes require exact recovery. Cancelled/stale work cannot publish a late processing result. Cancelling one consumer does not cancel shared acquisition still used by another consumer.
Model show includes response-only registry_state, readiness and verification facts. Existing shared acquisition work adds its exact ID and state; inspection does not invent a work item or change stored availability. Registered resources report not acquired; active acquisition reports acquiring. Availability alone is not a verification performed by the current inspection. Verify/materialize retain these facts even when they fail, distinguishing proven damaged bytes from an unavailable storage backend. Reacquire with the original manifest file, or inspect/retry existing acquisition work; the acquisition operand is not a model UUID.
Model materialization returns an object with verified readiness and a files array. Each entry names its immutable manifest role, model ID/digest, declared size/SHA-256, exact publication ID, local path and lease ID/details. Materialization returns verified local paths with renewable artifact leases.
Release leases after the consumer finishes. Temporary/base caches are separate
from durable speaker profiles and trained artifacts; their cleanup cannot purge
trained output or active readers.
Portability and speaker versions
Artifacts use configured filesystem or generic S3 storage. Exact manifests, aliases, sources and model relationships use portable SQLite/PostgreSQL catalog records with schema migration and snapshot proof validation. Exports contain opaque credential references, not secret values or transient materialization paths. Graph relationships remain projections of catalog authority.
speaker:VERSION_UUID inspection preserves the existing family, producing
speaker, training run, dataset and artifact lineage. Hosted-only targets retain
their explicitly configured provider/remote handle and report that local
downloadable weights are unavailable. Neither an alias nor a retained artifact
fabricates a valid trained output or a runnable unsupported adapter.
Local processing/import model selections require compatible base bundles.
Hosted aliases support identity inspection; executing a hosted route uses the
existing saved pipeline's explicit endpoint, remote model and adapter settings.
Trained speaker references expose immutable output lineage. Compatible embedding
profiles can be elected for roster-constrained identity matching; arbitrary
trained weights require their declared consumer and are not substituted for a
recognition or diarization base model. Speaker-associated training
supports exact version discovery/fetch and revisioned current profile selection.
The Models screen exposes these operations, while Speakers starts dataset creation
and elected training and Library starts matching-only work.
CLI/runtime and desktop share these operations. Models settings support reference configuration/discovery; shared selectors and Jobs distinguish exact identity, availability, compatibility and acquisition. See desktop, the rendered JSON contracts and credentials.
Complete source input
Save this as source-update.json with a fresh source UUID and your elected compatible catalog URL. The example URL identifies the expected resource shape; it supplies no public service or credentials. The catalog must implement the source contract above. Creation returns a revision; edits/removal use that observed value.
<!-- executable-example: source-update.json -->
{
"expected_revision": 0,
"source": {
"id": "cccccccc-cccc-4ccc-8ccc-cccccccccccc",
"name": "custom",
"state": "active",
"url": "https://models.example.org/catalog.json"
}
}
insonic models source set cccccccc-cccc-4ccc-8ccc-cccccccccccc --input source-update.json --json
insonic models source show cccccccc-cccc-4ccc-8ccc-cccccccccccc --json