awrtifact — Aither World Artifact
Docs · Source · pip install awrtifact · The Aither World
The Aither World is an operating system for agents — a Linux you can hand to one, the runtimes it works in, and the tools it works with. awnix is the Linux underneath it; awrtifact is one of its 46 bricks — each installs on its own, runs offline, and needs no account.
Start here: Store one artifact as a versioned GitHub release and fetch it back byte-verified —
awrtifact mirror <URL|FILE> --release TAG.
Deliberately chunk artifacts into GitHub release assets and fetch them back
byte-verified. The productized aitherkvcache mirror lane: any artifact (model
weights, datasets, builds, backups) → .partN slices under GitHub's 2 GiB
per-asset cap → versioned release → served by a generated Cloudflare Worker
(CORS + HTTP Range + stitching) → fetched back with size and sha256 checks.
The loop
# 1. Split a local artifact into .partN slices + manifest.json
awrtifact split DeepSeek-V4-Flash.gguf --out parts/
# 2. What is missing from the release? (resumable — re-runs upload only gaps)
awrtifact plan parts/manifest.json --repo Aitherium/aitherkvcache --release fleet-v1
# 3. Upload the missing parts (size-checked before upload, --create makes the release)
awrtifact upload parts/manifest.json --repo Aitherium/aitherkvcache \
--release fleet-v1 --dir parts --parallel 8 --create
# 4. Prove the local parts match the manifest byte-for-byte
awrtifact verify parts/manifest.json --dir parts
# 5. Fetch it back anywhere (resume + size check + sha256 TOFU lockfile)
awrtifact fetch DeepSeek-V4-Flash.gguf --url https://weights.example.com/ \
--out /srv/models --expected 49999999999
# 6. Or let the spec drive everything: generate the serving worker from it
awrtifact serve-spec awrtifact.yaml --check # drift gate
awrtifact serve-spec awrtifact.yaml # write the generated worker
# 7. Bring the backup up deliberately (dispatch mirror runs for gaps)
awrtifact backup-catalog awrtifact.yaml --dry-run
One command to a working artifact store repo
provision-repo creates the repo if missing, seeds it with an init README
plus the share gate page, enables Pages, and prints the shareable URL:
awrtifact provision-repo --repo you/store # private
awrtifact provision-repo --repo you/store --public # Pages always works
The store is then ready for every lane — awrtifact upload, awrtifact mirror, the GobboNet backup mod, any aw* client that speaks the chunk
contract. A brand-new repo is the ordinary FIRST use, and GitHub refuses to
publish releases in an empty repo — the seeding is what makes it real.
The repo's GitHub Pages can carry a share gate for passphrase-encrypted
backups: https://you.github.io/store/backup-gate.html shows a tokenless
manifest preview of an encrypted backup release and decrypts in the browser
for anyone with the passphrase. Encryption is a property of the CLIENT that
writes a backup, not of the store — the CLI's parts are plaintext (verified
by sha256), the GobboNet backup mod writes AES-GCM ciphertext, and both are
releases in the same store, fetchable byte-verified by either side. Private
repos work immediately (Pages needs a paid plan there for the gate half —
the command warns, it never fails).
See the gate live (the GobboNet mod's own Pages deployment): wizzense.github.io/GobboNet/backup-gate.html — pick any encrypted backup release from the drop-down, enter the passphrase, and watch it verify + decrypt in the browser.
Mirror a whole Hugging Face repo into ANY GitHub repo (0.2)
awrtifact mirror hf://org/name --repo OWNER/REPO # cloud lane: runners fetch Hub -> release
awrtifact mirror hf://datasets/org/name@rev/sub --repo OWNER/REPO --lane local # stream through this box
awrtifact mirror org/name --repo OWNER/REPO --lane plan # enumerate only, touch nothing
awrtifact mirror hf://org/name --repo OWNER/REPO --seal-key ~/.awseal/key.pem # sign the set (awseal)
awrtifact fetch-set --repo OWNER/REPO --release hf-org--name-<sha7> --dest ./name --expect-key <hex>
Every file of the repo is enumerated at a PINNED commit and written into one
<set>.mirrorset.json in the release: original path, flattened asset name,
size, the Hub's LFS sha256 where it has one, and .partN slices for anything
over the 2 GiB cap. The cloud lane seeds mirror-hf-set.yml into the target
on first use, so any repo you can write to is a mirror target; its verify job
fails unless every asset is present at the manifest size. fetch-set restores
the original layout and verifies against the ORIGIN digest; files with no
known digest are reported unverified, never silently passed. A --seal-key
signs the manifest with awseal and fetch-set --expect-key refuses a set that
is not signed by that key.
Set AWRTIFACT_GH_BACKEND=api + GH_TOKEN where there is no gh binary
(containers); the same commands run over the REST API.
Clients of the contract
The chunk contract (.partN slices + per-part and whole sha256, under
GitHub's 2 GiB asset cap) is the interoperability boundary — anything that
speaks it can read anything that writes it:
- the CLI (
split/upload/mirror/fetch/verify) — programmatic, plaintext, resumable - the workers (
serve-spec→ artifact.aitherium.com / weights.aitherium.com) — Range-stitched serving of the same releases - the GobboNet backup mod (
gobbonet-backup.js) — browser-side, passphrase-encrypted backups into your own store, sharing via the gate page
One store, three clients, one manifest contract.
First mirror into a repo that is not aitherkvcache
The mirror lane dispatches a GitHub Actions workflow, and the workflow must live in the TARGET repo first. For your own repo (public or private):
- Copy
mirror-to-release.ymlandhash-release-object.yml(from the awrtifact source tree,.DEPLOYMENT/workers/awrtifact/) into your repo's.github/workflows/and push. - Then
awrtifact mirror <URL|FILE> --repo you/your-repo --release <tag>works as usual.
Without the workflow the mirror refuses loudly (it never silently does nothing) — the refusal names the two files to copy.
Why the checks exist
- 2 GiB cap. GitHub release assets top out at 2 GiB; larger artifacts are
split at 1.9 GB. The worker stitches
.partNslices behind the original filename, so clients ask for the name, never the parts. - Size is the truncation detector. A short file is not a download error —
the loader reports a corrupt artifact. Every step verifies sizes; the
manifest's
totalis the number the client checks. - sha256 per part and whole. Split records both; verify proves each slice and that the slices stitch back into the original.
- Resume everywhere. Uploads skip present parts; fetches resume from the byte count on disk via Range.
Spec (the declarative store)
awrtifact.yaml names the store's repo, releases, allowlist and artifacts
(see awrtifact/spec.py for the full shape). The worker's data sections are
GENERATED from it — adding an artifact is a spec edit + regenerate, never a
worker code edit. serve-spec --check is the drift gate.
Install
pip install awrtifact # core (stdlib-only)
pip install 'awrtifact[spec]' # + spec commands (PyYAML)
Requires the gh CLI for plan/upload/backup commands (your existing auth).
License
Apache-2.0
The aw family
Standalone tools that share one idea: replace something you would otherwise have to trust with something you can check.
Each installs on its own, works offline, and needs no account.
| instead of trusting | you check | |
|---|---|---|
| awdk | a framework's idea of how your agents should run | one loop you can read, pointed at a backend you already pay for |
| awskills | that an agent knows your procedure | the procedure written down, versioned, and loadable by any agent |
| awpack | that the pack you want shipped inside somebody's SDK, under whatever licence that SDK happens to carry | the pack as its own versioned artifact, with its own licence, that any agent runtime can install |
| awm | that memory stayed in its lane | tenant:user:project scopes, so a write cannot cross a boundary |
| awnode | a vendor's cloud with every prompt | a local gateway routing to backends you chose |
| awgraph | that grep found everything | an AST + tree-sitter call graph an agent can traverse |
| awgit | that no one else is editing this file | a lease, refused at commit time if you do not hold it |
| awdelphi | one agent's confident take on a decision | the round trace, the anonymity, and who dissents |
| awtoll | that your tooling is saving you context | the measured token cost of each tool call, and what the alternative cost |
| awseal | that the artifact came from who you think | an Ed25519 seal — the key that verifies is not the key that forges |
| awshare | that the download is intact | content-addressed bundles, verified on fetch |
| awnest | that there is a person on the other end | a verdict with evidence, where "we could not tell" is not "yes" |
| awnboard | a share link anyone who sees it can use | an invitation addressed to one person, for one gate, revocable |
| awnix | that the box is what you left it as | an immutable image you built, with atomic rollback |
| awrecover | that the restore worked | a restore that fully lands or does not land at all |
| awstorage | a du you ran last month, and a peers file that says 3 TB free | an inventory snapshot per node with a diff since the last one, and each tree classified re-fetchable or not |
| awrelay | a SaaS in the middle of your agents | findings, alerts and coordination over your own transport |
| awask | that anyone read the paragraph where you asked | the ask itself, with a button that steers the session that raised it |
| awmail | a mailbox somebody else can read | mail your agents send and receive over your own server |
| awfind | one vendor's idea of the web | results from whichever providers you configured |
| awbrowse | that the page said what you were told | the render, the DOM and the requests it made |
| gawbbonet | the model to keep a 300-message campaign coherent by itself | campaign facts recalled from scoped memory you can list and edit |
| aitherkvcache | a vendor's quantisation defaults | sub-byte KV cache kernels you can benchmark yourself |
| awrtifact (you are here) | a hand-rolled split script and a hand-edited worker manifest | byte-verified parts in a release, served with Range + CORS, sizes asserted by a live gate |
| AitherZero | a pile of scripts nobody has numbered | numbered, discoverable automation with declarative playbooks |
| AitherConnect | what a page tells your browser to do | a federated search and desktop bridge you host |
| awreason | a confident paragraph | the phases it went through, and every tool call it made to get there |
| awrecurse | that everything you pasted in was actually read | which slices it opened, and what it concluded from each |
| awprism | the first explanation that fits | the ranked alternatives, and the observation that separates them |
| awrepl | what the agent believes the value is | the value, printed from the live session |
| awresearch | a summary of pages nobody opened | every claim against the source it came from |
| awfocus | twelve terminal tabs and a bad memory | one command that names every session, finds any transcript, and opens or steers the one you want |
| awgym | that a world model learned anything from the games it saw | transitions captured from real play, fed back, and the retrodiction score falling on grids it never saw |
| awpredict | a model because it trained without erroring | its prediction against a self-updating lookup, on the rows that are actually novel |
| awsh | that you already know the name of the command | what it decided your line meant, before it acts on it |
| awkno | that the docs site is up, or that you remember the family | the whole ecosystem in your terminal, with no network at all |
| awembed | a general-purpose embedder that has never seen your code | a held-out split of whole directories, scored teacher vs student vs int8 |
| awtax | a closed tax app's sealed file you can never read again | a plain, provider-neutral schema of every figure, with the page it came from |
| awsettings | that you will remember to re-approve the same thing on every box you work from | one profile, unioned rather than overwritten, with the credentials left behind |
awnix is the ground floor — A Linux you can hand to an agent — immutable base, capabilities included.
The Aitherium ecosystem
Every repository here is public. Each publishes an aither-manifest.json beside its page, so any surface can read every sibling's — the network is browsable from any node in it.
| repo | what it is | pages |
|---|---|---|
| awdk | Build AI agent fleets — 3 lines, any backend, local or cloud | docs |
| awskills | Portable agent skills — self-contained procedures an agent loads on demand | docs |
| awpack | First-party agent packs — the ones we build, versioned and installable on their own | docs |
| awm | A portable, scoped agent memory | docs |
| awnode | A lightweight local gateway — bridges your apps to the AI backends you chose | docs |
| awrun | A priority-aware queue and dispatcher for agentic runs and ad-hoc CI builds. It also judges whether the runner pool is big enough for the queue it is draining, and can ask a host to grow it -- reserving capacity is zero-sum, so a saturated pool needs more of it, not a different share of it | docs |
| awgraph | A semantic code graph for agents — AST + tree-sitter, call graphs | docs |
| awgit | Semantic version control on top of git — edit-ops and leases | docs |
| awdelphi | Anonymous multi-round expert panels — a converged answer with a trace | docs |
| awtoll | What every tool call costs you in context, measured from your own transcripts | docs |
| awseal | Sign an artifact so a stranger can verify it | docs |
| awshare | Publish an artifact and fetch it back verified | docs |
| awdit | An append-only audit trail whose gaps are DETECTABLE | docs |
| awbac | Role-based access control that fails closed and explains itself | docs |
| awiam | Who is this caller? A directory and session store that fails honestly | docs |
| awtunnel | Reach a service that has no public address | docs |
| awnest | Prove there is a human before you let them into the nest | docs |
| awnboard | A front gate you can put in front of anything, and hand someone the key to | docs |
| awnix | A Linux you can hand to an agent — immutable base, capabilities included | docs |
| awrecover | Labelled snapshots with an all-or-nothing restore | docs |
| awstorage | Every drive on every node, indexed, classified and diffed -- so you can see what you own before you delete it | docs |
| awrelay | Portable agent messaging — findings, alerts, coordination | docs |
| awask | Your agent asks you a question — and acts on your answer | docs |
| awmail | Give an agent an email address — send, and actually receive | docs |
| awnet | The agentic web — agents host a mesh, and agents join one | docs |
| awfind | A portable search client — query, results, ranking | docs |
| awbrowse | A portable browser client — navigate, console, network, DOM, screenshot | docs |
| awknowledge | How to run a coding agent so the result survives — the laws, with evidence | docs |
| gawbbonet | GobboNet campaigns with a real agent brain — scoped memory, graph recall | docs |
| aitherkvcache | Near-optimal KV cache quantization for LLM inference — sub-byte compression | docs |
| awrtifact (you are here) | Deliberately chunk artifacts into GitHub release assets — the productized aitherkvcache mirror lane | docs |
| AitherZero | PowerShell 7+ automation framework — numbered, self-describing scripts | docs |
| AitherConnect | Browser extension — federated AI search, page context, and the Living OS overlay | docs |
| awreason | A portable reasoning client — sessions, phases, thoughts, and the chain that produced the answer | docs |
| awrecurse | Answer a question over a context far larger than the window — recursively, with the trace kept | docs |
| awprism | Turn a failure into ranked hypotheses — and say what would confirm each one | docs |
| awrepl | A REPL an agent can actually use — state that survives between turns | docs |
| awresearch | Ask a research question, get a cited report you can check | docs |
| awfocus | See, search and steer every Claude session from one command | docs |
| awgym | An ARC training gym — a game a world model can watch, and six roles that play through it | docs |
| awpredict | Predict what your environment does next, and how surprised you were | docs |
| awsh | Your terminal answers you -- type a question where a command would go | docs |
| awkno | The man page for the Aither World — every brick, stack and law, offline | docs |
| awembed | Train an embedding model that knows your corpus, and prove it beats the big one | docs |
| awtax | Turn any tax PDF -- returns, W-2, 1099, statements, even scans -- into structured data you can check | docs |
| awsettings | Your agent's permissions and config, following you to the next machine | docs |
Metadata
Release files for awrtifact 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| awrtifact-0.2.2.tar.gz | 101.7 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| awrtifact-0.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 196.7 kB
Release files / awrtifact-0.2.2.tar.gz
| Download URL | awrtifact-0.2.2.tar.gz |
|---|---|
| Size | 101.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
649085a099f0f6eed6a51e38677e79fc23fd46b11d8846c0726af48351235032
|
|
BLAKE2b-256 checksum How to use checksums |
d7fc9d5c8940e3e4109ec1331d788ebf46af1d163599cd0d067dbe173c2041b5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / awrtifact-0.2.2-py3-none-any.whl
| Download URL | awrtifact-0.2.2-py3-none-any.whl |
|---|---|
| Size | 95.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ed0951b3b7fbcd4e9122f0bc8fe62547b50a2c1f533107de006973acca59241f
|
|
BLAKE2b-256 checksum How to use checksums |
d3eb4c9bbff44011e3490bbaee5dbc21982cc369996ea2e5490b1c5fd48360af
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Security for awrtifact 0.2.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.