# atlibs-agent-reference-spa An agent in a browser tab whose tools are atlibs modules as MCP servers. ```sh cargo install --locked --git https://knotless.dev/johnandersen777.bsky.social/atlibs --rev 88b2ba8 atlibs git clone https://knotless.dev/johnandersen777.bsky.social/atlibs-agent-reference-spa cd atlibs-agent-reference-spa npm ci scripts/stage.sh python3 -m http.server 8780 --bind 127.0.0.1 -d dist # http://127.0.0.1:8780/ ``` | what | from | |---|---| | `@publicdomainrelay/atlibs` 0.3.0, `-code-mode` 0.3.0, `-webrtc` 0.3.0 | jsdelivr (`index.html` import map; `package-lock.json` for the tests) | | `@atproto/oauth-client-browser` 0.5.14, `@noble/curves` 2.4.0, `age-encryption` 0.3.1 | esm.sh | | assemblyscript 0.28.20, binaryen 131.0.0-nightly.20260721, long 5.3.2, pico 2.1.1 | jsdelivr | | modules, sessions | bobvmbuilder.bsky.social records, pinned in `atlibs.lock.json` | | module | record CID | |---|---| | `asyncai` | `bafyreieqen4dln6b4tmqfrjrjj2btnjk34b2g4t5zwmkfqyn2gnwsytr5u` | | `ingress` | `bafyreidhsbptjjb4kbzdom2s6fgj47urcne56gcgl4hks254qertg7e3ja` | | `knotless` | `bafyreigkzgwqtubfondk4zoow6dwbbp3g2wjowai3r5ugflamdm3o6gtqa` | | `marque` | `bafyreigtk2moowpnarynnlhle6seiod547wufbivliavdutljs3bydkhli` | | `fedproxy` | `bafyreicllggppbda4seli2iwfcorrzjlob2bv2byynao4obeqxhwzom5wi` | | `cocore-inference` | `bafyreihu3lg26h6dnclaqbguls2ruy5ucvop6wjs7ra3udbkvnj767xdwu` | | `cocore-keys` | `bafyreig6hbygdinpqds27gehfptu5nhc2zoypfl4o56gcwxs4j7lxvqtva` | | `vm-mcp` (the model's VM tools) | `bafyreibtx6dmuht5oyy5asptxjvmdqsdv3i55ey44we6fvhcnrdq3mi6by` | | `requester` (vm-mcp hook default; the page's webrtc signals) | `bafyreibxy3u2vr3opw3faazfbkdynilci225yc3c3xaih3ieuab3wfjvzu` | | `process-mcp` (vm-mcp hook default) | `bafyreibp47v3kvfqqstf67mn7mso6pe4asqwlurf3sn6pkoe34bojbjthm` | | `policy-requester-tangled-vouch` (requester hook default) | `bafyreifhncpmc7wjnn6jxwuwrtqqsyv3cqckcjv7ei3q4smqa5ov36yw3y` | | `user-data` (requester hook default) | `bafyreicijszhjnyrjfrycdevgzij6bib5f6od6mvowik5hhv7xw3wsuype` | | `iroh-user-data` (user-data hook default) | `bafyreia7uwc2p2el77cw5ilm37c2vftqwg47jyqsctslymdb37ncxcmqiu` | Deploy (any static host): ```sh scripts/stage.sh --origin https://you.example/agent/ && rsync -a dist/ you.example:/srv/agent/ ``` Deploy https://atlibs-agent.socialweb.computer/ (`scripts/deploy.sh`: stage for that origin, back up the live dir, tar over ssh to the socialweb.computer gateway, a Caddy `file_server` site): ```sh scripts/deploy.sh ``` Update a module: `atlibs add bobvmbuilder.bsky.social/`, then `scripts/stage.sh`. Servers and defaults: `config.js`. ## Open - co/core's API (cocore.dev/api/v1) allows CORS only from localhost origins, so a deployed page offers custom inference endpoints only; co/core works from `127.0.0.1`. Test (after `scripts/stage.sh`; the page test needs Chrome): ```sh node --test test/*.test.mjs ```