AMOOSEDWEB AGENT AND AUTOMATION REFERENCE Product: https://amoosed.com/ Human tutorial: https://amoosed.com/compiler.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: https://amoosed.com/amoosedweb-skill.zip 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. Quick start (run in the extracted portable compiler folder) ------------------------------------------------------------- node amw.cjs --version node amw.cjs 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. 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. 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.