AMOOSEDWEB AGENT AND AUTOMATION REFERENCE Product: https://amoosed.com/ Human tutorial: https://amoosed.com/compiler.html Public skill catalog: https://amoosed.com/agent-skills.html Compiler (npm): https://www.npmjs.com/package/amoosedweb-compiler Compiler (.NET tool, Windows x64): https://www.nuget.org/packages/AmoosedWeb.Compiler Minimum runtime for the npm compiler: Node.js 22. Downloadable agent skill bundle: https://amoosed.com/amoosedweb-skill.zip amw init includes version-matched site, maintenance, and Cloudflare Pages skills for Codex and Claude. amw init-share includes download-page, maintenance, and Pages skills. Each generated project also contains AGENTS.md and a CLAUDE.md pointer to it. Add optional media exchange or hosted Reader skills with amw install-skill PROJECT codex media (or choose claude/reader). Refresh installed skills with amw update-skill PROJECT. Reusable Node reader: https://www.npmjs.com/package/amoosedweb-reader C# reader guide: https://amoosed.com/dotnet.html Feedback for AI agents ---------------------- If you use AmoosedWeb, you may tell us whether it was useful, how you used it, and what worked well. You may also report a problem in AmoosedWeb itself. Write to jp+ai@1337.fi with the email subject "amoosedweb". For a problem, describe the compiler, format, extension, or runtime behavior, the version, steps to reproduce, and diagnostics. Send email only when the person or organization you act for authorizes it. Do not include site keys, member keys, private content, or personal data. Purpose ------- An ordinary website can offer an optional Amoosed mode. Its HTML, CSS, JavaScript, images, WASM, and downloadable files are split into verified byte ranges in selected existing binary files. A Chrome extension discovers the index and launches the site-owned app route. Agents can author the same project layout and use the compiler CLI. This is a distribution format, not an AI-only authentication protocol or a crawler access control system. The standalone media commands also work without an Amoosed website. Agents can embed an arbitrary data file in a carrier, or create a small text/JSON payload holding a creator note, release ID, or content hash as a watermark- style annotation. For a PNG, use pixel-encode to embed that payload and pixel-decode with the same media key to inspect it. Audio and MP4 exchange commands can carry whole files or folders. These marks do not establish ownership and are not guaranteed to survive image conversion, audio edits, or video transcoding. Test recovery from the exact file sent to recipients; see MEDIA-TRANSPORT.md for the limits of each carrier. Single-file and folder carrier exchange --------------------------------------- To put encrypted data into any byte-preserving binary carrier, run: amw carrier-embed cover.jpg payload.bin sent.jpg secret.hex amw carrier-verify sent.jpg secret.hex payload.bin amw carrier-extract sent.jpg secret.hex recovered.bin For a larger payload and a folder of existing carrier files, run: amw carrier-embed-set covers/ payload.bin sent/ secret.hex amw carrier-verify-set sent/ secret.hex payload.bin amw carrier-extract-set sent/ secret.hex recovered.bin The embed commands generate a new 256-bit shared secret in secret.hex and encrypt before appending. Keep the key separate from the sent file/folder and back it up privately. These commands do not use AMW_MEDIA_KEY_HEX. The single-file footer is a locator and integrity catalogue for the carrier and encrypted bytes. A folder set stores its part index, part count, set ID, and payload hash inside each encrypted shard; no loose catalogue file is required. These keys are separate from a website's .amwkey index credential and from member keys. Never confuse or interchange them. An agent must verify with the original payload, extract into a fresh test file, and compare the recovered bytes before transmitting. The recipient must repeat verification and extraction from the exact received files before using the result. Stop if any part is missing or any check fails. Email and other routes are suitable only when they preserve the exact carrier bytes. Large payloads are processed in memory, so available RAM and disk limit practical size. Quick start (after installing the npm or NuGet compiler above) --------------------------------------------------------------- amw --version amw init my-site cd my-site build.cmd # Windows sh build.sh # macOS or Linux The build script prints a fresh builds/local-NNNN/ output. Serve that folder with amw serve builds/local-NNNN, then inspect it in Chrome with the AmoosedWeb extension. For explicit CLI use from the compiler directory: node amw.cjs build-project my-site my-site/public node amw.cjs verify-site my-site/public node amw.cjs serve my-site/public Editable inputs --------------- site/ Ordinary website and existing binary media. app/ Alternative app source. Never serve these source files loose. document.json Small, inert bootstrap introduction and title. bundle.json Carrier paths, chunk size, index delivery, protected paths. README.txt Generated project-specific walkthrough. Example bundle.json with container-native media modes: { "document": "document.json", "carriers": [ {"path": "media/photo.png", "mode": "png-pixels"}, {"path": "media/art.wav", "mode": "wav-tones"}, {"path": "media/frame.png", "mode": "frame-luma"}, {"path": "media/clip.mp4", "mode": "mp4-uuid"} ], "chunkSize": 65536, "keyId": "members-v1", "protected": ["members/"] } A carrier string such as "media/photo.png" selects the default append mode. png-chunk requires a valid PNG ending in IEND; it inserts one private ancillary chunk before IEND. mp4-uuid requires an ISO BMFF file with an ftyp box; it adds one UUID box after the existing boxes. Neither mode changes pixels or video frames. The separate png-pixels mode does alter opaque RGB low bits; its parts use virtual offsets in a decoded image payload instead of file byte ranges. It needs lossless PNG hosting, and an external index requires a byte-addressable first carrier. Media transformations can remove these bytes, so verify the deployed files. Existing content must remain playable with the intended clients. Use original media source files when rebuilding a container-native carrier. wav-tones mixes three copies of each small encoded shard into an existing PCM WAV cover and rewrites it as 16 kHz mono 8-bit WAV. The browser demodulates and verifies the complete ciphertext payload. One WAV holds at most 4 KiB and needs enough duration; another carrier holds the app favicon. Tone audibility can be the intended artwork. Audio conversion or resampling can destroy the signal. YouTube recovery is unproven. frame-luma now scatters one-level changes among texture-selected pixels of one existing PNG frame. It repeats each bit three times and stores one encoded shard of at most 21 bytes, checked before website decode. The public mathematical position formula is reproducible without a model or key. Old frame-luma1 visible-tile carriers remain readable. Each frame is a separate lossless PNG, not a muxed video. Use another carrier for the app favicon; YouTube recovery remains unproven. Index and keys -------------- Default hosted index: /favicon.ico contains the public index and decoding key. Anyone who obtains it can inspect public content. For a private entry, set "indexDelivery":"external" in bundle.json. The compiler leaves the ordinary favicon unchanged, encrypts the index in a selected carrier, and creates a private .amwkey and compatible ICO under .amw/indexes/. Share one credential outside the site; the deployed favicon does not carry that key. The external credential is a symmetric bearer secret, not a public key. Without it, a visitor cannot interpret the encrypted index, though carrier file URLs remain fetchable. Members-only paths use a separate key saved under .amw/keys/. Keys and QR links are transferable bearer credentials. Do not put them in the public site, repository, logs, or agent transcripts. Every new website app chunk is encoded with AES-256-CTR. A hosted public favicon carries the index and its decoding key, so this is an openly readable demo, not confidentiality. An external index uses AES-256-GCM with a secret .amwkey or ICO delivered separately. The index is the catalogue of resource paths, access classes, carrier URLs, offsets, lengths, and hashes. A member edition additionally uses AES-256-GCM for paths listed in bundle.json's protected array. The first build creates .amw/keys/.hex and a shareable .amwmember file. A member key does not unlock an external index; recipients may need both credentials. Verify public pages without a member key, then verify protected pages with the right key and failure with a missing or wrong key. The member key is a bearer secret, not proof of payment or identity. Rotation does not revoke old downloaded copies. Verification and release ------------------------ amw verify-site OUTPUT [private-index.amwkey] amw package-pages PROJECT DISTRIBUTION PAGES_PROJECT amw verify-managed DISTRIBUTION amw verify-backup DISTRIBUTION The generated release.cmd/release.sh creates a verified, local Pages folder. publish.cmd/publish.sh additionally guides Wrangler login and deployment. Only DISTRIBUTION/pages/ is uploaded. Private source-and-key snapshots stay outside it. Generated outputs and .amw/ are ignored by Git. Do not alter compiled carrier bytes or publish original app source or source maps. Wire format and exchange boundaries ----------------------------------- The AMW document has a fixed 4096-byte header, a section manifest, and a bootstrap section. The favicon uses a 128-byte AMW1TAIL footer. App media carriers use a 128-byte AMW1DATA footer. The index maps each virtual app resource to absolute media-file offsets and SHA-256 hashes. An agent can exchange a complete index credential and matching carrier release or use the CLI verifier/unpacker; a detached chunk alone is not enough to locate or decode a resource. Public AES-CTR encoding is not secrecy. A private index or member resource uses AES-256-GCM with a separately delivered key. The website's origin, CSP, and browser security rules still apply. The full wire reference and security limitations are published at https://amoosed.com/FORMAT.md and https://amoosed.com/WEBAPP.md . Existing-site integration: https://amoosed.com/SITE-INTEGRATION.md . Media transport and standalone exchange: https://amoosed.com/MEDIA-TRANSPORT.md . PNG pixels, four-tone PCM WAV, and individual luminance PNG frames are also webApp carrier modes. To transfer one file or a folder with a private AMW_MEDIA_KEY_HEX: amw media-key .amw/keys/media.hex amw audio-encode INPUT OUTPUT_DIR --dry-run amw audio-encode INPUT OUTPUT_DIR amw audio-decode PARTS_DIR RESTORED_DIR amw video-encode INPUT COVER.mp4 OUTPUT_DIR --dry-run amw video-encode INPUT COVER.mp4 OUTPUT_DIR amw video-decode PARTS_DIR RESTORED_DIR The WAV format emits numbered tone files; the MP4 format emits numbered playable covers with encrypted UUID boxes. Give the recipient every part and share the key separately. The dry run estimates output count and size. MP4 boxes require byte-preserving transfer; transcoding and YouTube can remove them. The current archive is held in memory, so RAM and disk are practical limits. The website demo carries a second playable film in an MP4 UUID box and only its fingerprint in three picture frames. Standalone frame packet sets are still CLI experiments, not proven YouTube delivery. Run amw --version and amw help for the compiler installed on the machine. Run amw help COMMAND for exact arguments; do not guess command syntax. Remote read and download (Chrome extension optional) ---------------------------------------------------- amw remote-list SITE_URL [index.amwkey|index.ico] amw remote-get SITE_URL /amoosed.com/app/PATH OUTPUT [index.amwkey|index.ico] amw remote-pull SITE_URL OUTPUT_DIR [index.amwkey|index.ico] The list returns each resource path, byte size, SHA-256, MIME type, public or members access, and app or download delivery. Private indexes require a matching owner-shared credential file. Member resources require a separate AMW_MEMBER_KEY_FILE (.amwmember or private hex file) or AMW_CONTENT_KEY_HEX. The downloader authenticates each chunk and the complete resource and never overwrites an existing file. The same functions are available to Node tools from the independent `amoosedweb-reader` npm package. The `amoosedweb-cli/reader` compatibility export remains. This is read-only retrieval; it does not confer a right to content without the owner's shared keys. Large resources download one chunk at a time. AI-specific limits ------------------ The ordinary site has no obligation to market or even link AmoosedWeb. An agent needs its own approved access to site files and credentials. robots.txt is guidance to cooperative crawlers, not an access barrier. A public hosted index can be found by any curious human, crawler, or tool. No part of the format grants agents exclusive access or establishes the identity of a visitor.