[{"data":1,"prerenderedAt":484},["ShallowReactive",2],{"products":3},[4,121,218,282,371],{"id":5,"title":6,"bench":7,"body":8,"brand":6,"claim":105,"description":14,"extension":106,"handoff":107,"listed":108,"meta":109,"movement":110,"navigation":108,"order":111,"path":112,"receipt":7,"receiptLabel":7,"receiptStatus":113,"retired":7,"seo":114,"state":94,"stem":115,"substrate":116,"__hash__":120},"products\u002Fproducts\u002Fsweetrust.md","SweeTrust",null,{"type":9,"value":10,"toc":100},"minimark",[11,15,37,40,45,74],[12,13,14],"p",{},"An agent asks to do something. Three packages decide what happens next.",[12,16,17,24,25,30,31,36],{},[18,19,20],"strong",{},[21,22,23],"code",{},"mandate"," holds the authority a person granted — what may be spent, on what, until\nwhen. ",[18,26,27],{},[21,28,29],{},"gate"," is the enforcement point every action passes through; nothing reaches a\nsink without clearing it. ",[18,32,33],{},[21,34,35],{},"verify"," produces the record afterwards, in a form that does\nnot require trusting the person who produced it.",[12,38,39],{},"The interesting part is not the refusal. It is the moment before it — when authority runs\nout and a human has to be asked. That ask is an interface problem, and it is the one this\nwhole site is about.",[41,42,44],"h2",{"id":43},"state-built-and-tested-nothing-published","State — built and tested, nothing published",[12,46,47,48,51,52,54,55,57,58,60,61,64,65,69,70,73],{},"One package, ",[21,49,50],{},"sweetrust@0.3.0",", with ",[21,53,23],{},", ",[21,56,29],{}," and ",[21,59,35],{}," as subpath exports.\nThey were three separate packages until 2026-07-30, and each of them still stands alone;\nwhat changed is that you install one thing instead of assembling three. An adversarial\npass on 2026-07-25 found and fixed ",[18,62,63],{},"eleven fail-open defects",", several of which\nmattered: ancestry erasure that defeated a scoping rule, an empty fold returning the\n",[66,67,68],"em",{},"strongest"," claim rather than the weakest, a sink operation that threw and left no record\nat all. Coverage today is ",[18,71,72],{},"169 tests, all passing"," — mandate 71, gate 59, verify 34,\nand five on the barrel that keeps the three re-exports from silently colliding.",[12,75,76,79,80,83,84,87,88,91,92,95,96,99],{},[18,77,78],{},"None of this is publicly checkable yet."," The monorepo is private and nothing is on npm\n— ",[21,81,82],{},"npm view"," returns 404 for ",[21,85,86],{},"sweetrust"," and for each of the older ",[21,89,90],{},"@sweetrust\u002F*"," names. That is why this page says ",[66,93,94],{},"built","\nrather than ",[66,97,98],{},"shipped",", and why the card carries no receipt. The distinction is the point:\na claim a visitor cannot verify is a claim this site does not make.",{"title":101,"searchDepth":102,"depth":102,"links":103},"",2,[104],{"id":43,"depth":102,"text":44},"A deny-by-default capability firewall for AI agents — gate, mandate, verify.","md","The agent reaches the edge of its authority. What does the person see, and can they decide from it alone?",true,{},"trust",1,"\u002Fproducts\u002Fsweetrust","none-yet",{"title":6,"description":14},"products\u002Fsweetrust",[117,118,119],"TypeScript","Sui","Move","UIIUK_jueVdgGsTFqNIlZrvzSCddIXGrt24UdeUFY7M",{"id":122,"title":123,"bench":23,"body":124,"brand":123,"claim":201,"description":128,"extension":106,"handoff":202,"listed":108,"meta":203,"movement":204,"navigation":108,"order":102,"path":205,"receipt":206,"receiptLabel":207,"receiptStatus":208,"retired":209,"seo":212,"state":213,"stem":214,"substrate":215,"__hash__":217},"products\u002Fproducts\u002Fsweefi.md","SweeFi",{"type":9,"value":125,"toc":197},[126,129,165,169,172,176],[12,127,128],{},"The commerce vertical. A sibling of SweeTrust rather than a layer on top of it — the\nhierarchy is deliberate, and the reasoning is in ADR-0011: the first non-commerce vertical\nwould otherwise force a second rename.",[12,130,131,132,57,135,138,139,142,143,57,146,149,150,54,153,156,157,160,161,164],{},"Nine packages, published and installable: ",[21,133,134],{},"@sweefi\u002Fsui",[21,136,137],{},"@sweefi\u002Fsolana"," for the\nchain-native implementations, ",[21,140,141],{},"@sweefi\u002Fhono"," for the server middleware,\n",[21,144,145],{},"@sweefi\u002Freact",[21,147,148],{},"@sweefi\u002Fvue"," for the client surfaces, plus ",[21,151,152],{},"cli",[21,154,155],{},"mcp",",\n",[21,158,159],{},"ap2-adapter",", and ",[21,162,163],{},"ui-core",". AP2-compatible on purpose — interop first.",[41,166,168],{"id":167},"the-handoff","The handoff",[12,170,171],{},"Every payment an agent wants to make is a question someone already answered, or a question\nthat has to be asked now. The design work is in telling those two apart fast enough that\nthe second case does not feel like an interruption — and in making a mid-session revoke\nland before the next call goes out, not after.",[41,173,175],{"id":174},"state-published","State — published",[12,177,178,180,181,184,185,188,189,192,193,196],{},[21,179,134],{}," is at ",[18,182,183],{},"0.4.2",", ten versions since ",[18,186,187],{},"2026-04-26",". The others range from\n",[21,190,191],{},"0.1.2"," to ",[21,194,195],{},"0.3.4",". Public repo, public registry, dated: verifiable without asking me.",{"title":101,"searchDepth":102,"depth":102,"links":198},[199,200],{"id":167,"depth":102,"text":168},{"id":174,"depth":102,"text":175},"A payment SDK that refuses any spend a person didn't authorize.","Granting and revoking an agent's spending authority — the approval surface, and the revoke that has to work mid-session.",{},"commerce","\u002Fproducts\u002Fsweefi","https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@sweefi\u002Fsui","@sweefi\u002Fsui v0.4.2 on npm — deprecated Sept 2026","public",{"date":210,"line":211},"2026-09-25","Retired September 2026 in favor of x402, the open standard.",{"title":123,"description":128},"published","products\u002Fsweefi",[117,118,216],"Solana","ZkgWUaiH-ecbY0f7QKJDhkWppR4jxxuEwSMyp_mXZ3g",{"id":219,"title":220,"bench":221,"body":222,"brand":220,"claim":270,"description":226,"extension":106,"handoff":271,"listed":108,"meta":272,"movement":204,"navigation":108,"order":273,"path":274,"receipt":275,"receiptLabel":276,"receiptStatus":208,"retired":277,"seo":278,"state":213,"stem":279,"substrate":280,"__hash__":281},"products\u002Fproducts\u002Fs402.md","s402","dissector",{"type":9,"value":223,"toc":266},[224,227,234,240,242,248,251,253,263],[12,225,226],{},"HTTP has had a status code for \"you must pay for this\" since 1997, and almost nobody\nimplemented it, because there was never a payer who could act on it unattended. Agents are\nthat payer.",[12,228,229,230,233],{},"s402 is the protocol layer: an agent requests a resource, receives a ",[21,231,232],{},"402"," that states its\nown price, and settles. On Sui the settlement is a programmable transaction block, so the\npayment and the delivery commit or fail together — there is no window where one has\nhappened and the other has not.",[12,235,236,237,239],{},"The protocol itself is chain-agnostic, and Solana is supported through\n",[21,238,137],{},". Sui is where it goes deepest for one reason rather than by\npreference: atomicity between payment and delivery is a property the chain either hands\nyou or it does not, and a protocol cannot manufacture it on a chain that withholds it.",[41,241,168],{"id":167},[12,243,244,245],{},"The design question is not how to pay. It is ",[18,246,247],{},"which prices a person needs to see.",[12,249,250],{},"A protocol that asks about every cent is unusable; one that asks about nothing is a\nliability. The authority has to be granted ahead of time in a shape a person can actually\nreason about — a budget, a scope, a horizon — so that the common case is silent and the\nexceptional case is legible. Getting that boundary right is interface work, not protocol\nwork, and it is the part that decides whether anyone trusts it.",[41,252,175],{"id":174},[12,254,255,258,259,262],{},[18,256,257],{},"v0.9.0",", on npm since ",[18,260,261],{},"2026-02-16",". Installable now.",[12,264,265],{},"s402 is a protocol name rather than a brand tier: it is a specification that SweeFi\nimplements and SweeTrust enforces.",{"title":101,"searchDepth":102,"depth":102,"links":267},[268,269],{"id":167,"depth":102,"text":168},{"id":174,"depth":102,"text":175},"HTTP 402 has waited since 1997 for a payer. Agents are it.","An agent meets a paywall it was not told about. Consenting to a price at machine speed, without a person in the loop for every cent.",{},3,"\u002Fproducts\u002Fs402","https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fs402","s402 v0.9.0 on npm — deprecated Sept 2026",{"date":210,"line":211},{"title":220,"description":226},"products\u002Fs402",[117,118],"8bjLeWoTBq-u6pg7UBwJDMbwimuhh1kcuhxQSzSU-r4",{"id":283,"title":284,"bench":7,"body":285,"brand":284,"claim":356,"description":357,"extension":106,"handoff":358,"listed":359,"meta":360,"movement":361,"navigation":108,"order":362,"path":363,"receipt":364,"receiptLabel":365,"receiptStatus":208,"retired":7,"seo":366,"state":213,"stem":367,"substrate":368,"__hash__":370},"products\u002Fproducts\u002Fcolada-db.md","colada-db",{"type":9,"value":286,"toc":351},[287,298,302,309,316,318,329,333,344],[12,288,289,290,293,294,297],{},"The memory layer. Every other product on this page is about what an agent is ",[66,291,292],{},"allowed","\nto do; this one is about what it and the person around it can ",[66,295,296],{},"remember",", and whether\nthose two memories agree.",[41,299,301],{"id":300},"the-problem-it-exists-for","The problem it exists for",[12,303,304,305,308],{},"The same record arrives from four places at once — a fetch, a websocket push, an\noptimistic local edit, and an agent writing on your behalf — and the app has to stay\ncorrect. The usual answer is a cache keyed by request, which means the same entity lives\nin four places under four keys and drifts in all four. A ",[18,306,307],{},"normalized"," store keeps one\ncopy of each entity and lets every view read from it, so \"correct\" is a property of the\nstore rather than a discipline every feature has to remember.",[12,310,311,312,315],{},"Durability is pluggable on purpose. IndexedDB is the default because it is everywhere;\nthe ",[18,313,314],{},"OPFS SQLite"," lane exists because once a working set stops fitting comfortably in\nmemory, the honest answer is a real query engine and not a bigger object.",[41,317,168],{"id":167},[12,319,320,321,324,325,328],{},"This is where the memory layer stops being a storage question. When an agent and a person\nwrite to the same record, someone has to lose, and the interesting design work is entirely\nin the losing: whether the person is told, how quickly, and whether the interface shows a\n",[66,322,323],{},"pending"," state that is actually pending rather than one that is optimistic and lying.\nLab law 05 — ",[18,326,327],{},"state is never claimed before it is true"," — was written from this problem.",[41,330,332],{"id":331},"state-published-and-early","State — published, and early",[12,334,335,336,339,340,343],{},"Version ",[18,337,338],{},"0.1.0",", published ",[18,341,342],{},"2 August 2026",". One version, which is the honest number:\nthe repo is public and installable today, the API will move, and nothing here should be\nread as a stable release. Twenty-four pull requests have gone into it so far.",[12,345,346,347,350],{},"It began as a normalizing cache plugin for Vue's ",[18,348,349],{},"Pinia Colada"," — three of those\npatches were merged into the library itself by its maintainer, a Vue core team member —\nand became its own repository when the storage layer turned out to be the larger half of\nthe problem.",{"title":101,"searchDepth":102,"depth":102,"links":352},[353,354,355],{"id":300,"depth":102,"text":301},{"id":167,"depth":102,"text":168},{"id":331,"depth":102,"text":332},"Local-first memory for retrieval-augmented agents.","The memory layer. Every other product on this page is about what an agent is allowed\nto do; this one is about what it and the person around it can remember, and whether\nthose two memories agree.","An agent writes to the same record a person is editing. Who wins, and when does the person find out?",false,{},"data",4,"\u002Fproducts\u002Fcolada-db","https:\u002F\u002Fgithub.com\u002FDanny-Devs\u002Fcolada-db","colada-db 0.1.0 on npm — public repo, published 2 Aug 2026",{"title":284,"description":357},"products\u002Fcolada-db",[117,369,314],"IndexedDB","-0vtWkbUTBsbewLNw7W95a-ZkO8-XyKWXDBacD1Nz6w",{"id":372,"title":373,"bench":374,"body":375,"brand":373,"claim":472,"description":473,"extension":106,"handoff":474,"listed":108,"meta":475,"movement":476,"navigation":108,"order":477,"path":478,"receipt":7,"receiptLabel":7,"receiptStatus":113,"retired":7,"seo":479,"state":480,"stem":481,"substrate":482,"__hash__":483},"products\u002Fproducts\u002Fsweeai.md","SweeAI","agent",{"type":9,"value":376,"toc":467},[377,403,410,417,421,435,438,440,443,447,458],[12,378,379,380,383,384,387,388,391,392,395,396,399,400,402],{},"SweeAI is the product; the company is ",[18,381,382],{},"Swee",". Underneath the product sits ",[18,385,386],{},"SweeOS",", the orchestration layer —\nthe glue and the scheduling, the part that runs agents. SweeOS ",[66,389,390],{},"hosts"," a harness, and the\ndefault resident one is ",[18,393,394],{},"SweeHarness","; it ",[66,397,398],{},"calls"," ",[18,401,6],{}," for enforcement.",[12,404,405,406,409],{},"That second arrow only points one way, and it is the whole reason the hierarchy is worth\nwriting down rather than just drawing. Orchestration may ask the trust kernel whether an\naction is permitted. It may not reconfigure the answer. The tempting simplification — the\nOS is the OS, so it owns everything — is right about the glue and wrong about the cage,\nbecause ",[18,407,408],{},"a guard the guarded thing controls is not a guard."," SweeTrust never depends on\nSweeOS, and SweeOS may not widen its own authority.",[12,411,412,413,416],{},"Listing this card at all is a deliberate choice, and it is the honest one: ",[18,414,415],{},"the\norchestration layer is not built."," There is no execution engine, and that omission is a\ndecision rather than a gap — an ADR concluded it should be bought. The supervision client is\ndesigned through the skeleton plane and no further. The adoption flow, which is the actual\nthesis, has not been started.",[41,418,420],{"id":419},"what-is-real","What is real",[12,422,423,424,426,427,430,431,434],{},"The monorepo, and the discipline inside it. One package, ",[21,425,50],{},", carrying\nthree primitives with ",[18,428,429],{},"177 passing tests"," between them, arrived at by a pass that found\neleven fail-open defects in code that already looked finished. Two of those eleven were\n",[18,432,433],{},"the same defect shape in different primitives"," — an empty fold returning the strongest\npossible claim instead of the weakest. That is a blind spot with a signature, and it is now something to grep for.",[12,436,437],{},"That is harness engineering rather than product engineering, which is why it belongs on this\nsite at all.",[41,439,168],{"id":167},[12,441,442],{},"A fleet of agents produces a supervision problem long before it produces a scaling problem.\nTen concurrent runs generate more status than a person can read, and the useful surface is\nnot a dashboard — it is a queue of things that genuinely need a human, ranked, arriving\nsomewhere a person already looks. Designing that queue is the thesis. It is unbuilt, and\nthis page says so.",[41,444,446],{"id":445},"state-designed-nothing-public","State — designed, nothing public",[12,448,449,450,453,454,457],{},"The card says ",[18,451,452],{},"designed"," rather than built, and the distinction is the point. Real code\nexists in the monorepo and it is described above; the ",[66,455,456],{},"orchestration layer this card is\nnamed for"," does not. Claiming \"built\" would have let one true fact — the packages are real —\nstand in as the answer to a different question, which is the exact move the rest of this site\nexists to refuse.",[12,459,460,463,464,466],{},[21,461,462],{},"sweeai\u002Fmonorepo"," is private and ",[21,465,90],{}," is unpublished, so a visitor can verify none\nof it. Hence no receipt.",{"title":101,"searchDepth":102,"depth":102,"links":468},[469,470,471],{"id":419,"depth":102,"text":420},{"id":167,"depth":102,"text":168},{"id":445,"depth":102,"text":446},"The supervision layer for a fleet of agents.","SweeAI is the product; the company is Swee. Underneath the product sits SweeOS, the orchestration layer —\nthe glue and the scheduling, the part that runs agents. SweeOS hosts a harness, and the\ndefault resident one is SweeHarness; it calls SweeTrust for enforcement.","Supervising a fleet. Of N runs happening right now, which one needs you — and can you tell from a phone?",{},"orchestration",5,"\u002Fproducts\u002Fsweeai",{"title":373,"description":473},"specced","products\u002Fsweeai",[117,118],"kk9J6dsb5IG6sa9IKHnlKVexp5W5IOdrgCFx1ULxIZo",1790479752215]