Skip to content

showcase: Kairune — proven wallets + self-serve spend permissions - #116

Open
kairunedev wants to merge 6 commits into
Virtual-Protocol:mainfrom
kairunedev:showcase/kairune-wallet-proof-self-serve
Open

showcase: Kairune — proven wallets + self-serve spend permissions#116
kairunedev wants to merge 6 commits into
Virtual-Protocol:mainfrom
kairunedev:showcase/kairune-wallet-proof-self-serve

Conversation

@kairunedev

Copy link
Copy Markdown

showcase: Kairune — proven wallets + self-serve spend permissions

Updates the existing kairune-verifiable-trust card. Two things shipped since
the original submission, and the card no longer described what the product
actually does.

Wallet proof (EIP-191). An agent proves it controls the wallet it claims by
signing a server-issued challenge with personal_sign — chain 4663,
domain-bound to kairune.online, 600s TTL. The private key never leaves the
wallet. Proof status is a public read, because a payer deciding whether to
release funds needs to know whether the address it is about to pay was ever
proven. The scope is deliberately narrow: it proves wallet control, not
trustworthiness. The score still has to be earned from attestations.

Self-serve spend permissions. Granting a budget, spending against it,
scoping payees, setting expiry and revoking no longer require a platform admin
key. Authorisation moves to where it belongs: an agent below EMERGING
(score 250) is refused a budget with 409 tier_too_low, because there is no
behavioural basis to extend it credit yet. The tier gate is the access control,
and it is a stronger one than a shared platform key because it cannot be handed
around. The practical effect is that the API is now usable by agents that are
not us — verified end to end against production with no admin key: register →
attest → score crosses 250 → grant → spend → budget → revoke.

Changes in this PR

  • showcase.json — description, tagline and visual.title updated; two
    artifacts added (API docs, the wallet-proof/self-serve PR); the /api/meta
    label now names wallet_proof: eip191-personal-sign; two feedback prompts
    swapped for ones that reflect open design questions (kept at exactly three
    per scripts/validate-showcase.mjs)
  • README.md — a "since first submission" section covering both changes

Checks

  • node scripts/validate-showcase.mjs → passes, 59 manifests validated
  • All 11 URLs referenced by the card return 200 (live endpoints, both PRs,
    both X posts, poster and mp4 assets)
  • Branched off current upstream/main; diff touches only the two files inside
    showcase/kairune-verifiable-trust/
  • No new assets, no changes to shared files or workflows

Feedback prompts

The two new prompts are genuine open questions, not rhetorical ones:

  • Is 250 the right floor before an agent may hold any budget, or should
    tier 0 get a probationary micro-ceiling? A hard floor is safe but gives a new
    honest agent no on-ramp.
  • Should a proven wallet be required before a budget is granted, rather than
    merely recorded alongside it? Requiring it is stricter, but it puts a signing
    step in front of every new agent.

Wallet proof via EIP-191 personal_sign (chain 4663, 600s TTL) and self-serve spend permissions gated by trust tier instead of a platform admin key. Updates description, tagline, visual title, two artifacts, and two feedback prompts. Validator passes; all referenced URLs return 200.
Copilot AI lite review requested due to automatic review settings August 27, 2026 16:44

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the kairune-verifiable-trust showcase card to reflect newly shipped product capabilities (wallet proof via EIP-191 and self-serve spend permissions) so the manifest and README match current behavior.

Changes:

  • Refreshes the card’s tagline/description and visual.title to include proven wallets + self-serve spend enforcement.
  • Adds new artifacts (API docs and the wallet-proof/self-serve PR) and updates the /api/meta artifact label.
  • Replaces two feedback prompts to reflect current open design questions.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

File Description
showcase/kairune-verifiable-trust/showcase.json Updates card copy, artifacts, and feedback prompts to match the current Kairune feature set.
showcase/kairune-verifiable-trust/README.md Adds a “since first submission” section and updates proof links to include docs and the new PR.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +4 to +5
"tagline": "An agent earns its budget instead of being handed one: verifiable trust score, proven wallet, scoped spend it cannot cross.",
"description": "Kairune is the trust layer for AI agents that spend, and it is now self-serve end to end: an agent registers, earns attestations, crosses a tier threshold, grants itself a scoped budget, spends against it, and revokes — with no platform admin key anywhere in that path. Authorisation comes from the trust tier instead: an agent below EMERGING (score 250) is refused a budget with 409 tier_too_low, because there is no behavioural basis to extend it credit yet. Both sides of the record are verifiable. Attestation issuers register Ed25519 keys and sign each attestation; the server verifies every signature and weights verified attestations fully while discounting unsigned ones (0.25x). The wallet an agent claims can be proven with an EIP-191 personal_sign challenge (chain 4663, 600s TTL) without the private key ever leaving the wallet. Spend enforcement is live — over-ceiling charges are blocked with 409 ceiling_exceeded and every decision fires an HMAC-SHA256 signed webhook. Exposed as ACP offerings (lookup score, register agent, record attestation, full report) on Robinhood Chain via Virtuals.",
@kairunedev

Copy link
Copy Markdown
Author

Heads up in case it is useful: the Showcase PR Review check here failed at the Fetch review rubric step, before it got as far as reading the manifest —

Rubric fetch failed with HTTP 401. Check DEVREL_SKILL_TOKEN scope/expiry.

It looks environmental rather than specific to this PR: the same workflow is currently failing on main and on showcase/og-block too, while older runs (zizi-risk-desk, scvd-store-acp-registry-proof, kleos-research) went green. So it reads like DEVREL_SKILL_TOKEN expired rather than anything in the diff — but you would know better than me.

On my side, before opening this I checked:

  • node scripts/validate-showcase.mjs passes locally (59 manifests validated), including the exactly-three feedbackPrompts rule
  • All 11 URLs referenced by the card return 200
  • Branched off current upstream/main; the diff touches only the two files inside showcase/kairune-verifiable-trust/, no shared files or workflows

Happy to rebase and re-push whenever you want a fresh run, or to adjust anything in the card. No rush from my end.

root added 2 commits August 28, 2026 00:45
Swaps the inline video for a 0:13 film of the full arc: the agent registers
itself, is refused a permission at 409 tier_too_low while UNRATED, earns
attestations until the score crosses 250, then gets a ceiling it cannot cross.
The refusal is the part worth showing — it is what makes the tier gate real
rather than decorative.

Hosted on kairune.online rather than committed here, so the diff stays text and
reviewers do not have to pull 496K of binary. The previous 0:06 demo is kept as
an artifact.
… compliant)

Adds a verifiable artifact pointing at the new derived adapter
GET /api/agents/:id/erc8126 (alias /api/erc8126/agents/:id), which
exposes Kairune's behavioural score as an inverted 0..100 risk
(100 - Math.round(score/10)) with a per-type breakdown that is
explicit about what is missing: ETV/MCV/SCV/WAV not_implemented,
WV partial via EIP-191 personal_sign, PDV/ZKP/QCV absent, agentId
null (no ERC-8004 tokenId). Payload carries compliant:false and a
disclosure string so a spec reader cannot mistake this for a claim
of provider compliance. Consumer use is as a minVerificationScore-
style input to an ERC-8196 policy, not a substitute for the five
required verification types.

Validated 59 manifests. Artifacts: 11 -> 12.

Live: https://kairune.online/api/agents/voyager-07/erc8126
"title": "Kairune — Verifiable Agent Trust Layer",
"tagline": "Every agent gets a verifiable, cryptographically-signed trust score — then scoped spend by tier.",
"description": "Kairune is the trust layer for AI agents that spend. It computes a deterministic trust score (0-1000) from an agent's behavior history and grants or revokes spending permission by tier. The showcased upgrade makes the score's inputs verifiable: issuers register Ed25519 keys and sign each attestation, the server verifies every signature, and the scoring engine weights verified attestations fully while discounting unsigned ones (0.25x). Exposed as ACP offerings (lookup score, register agent, record attestation, full report) on Robinhood Chain via Virtuals.",
"tagline": "An agent earns its budget instead of being handed one: verifiable trust score, proven wallet, scoped spend it cannot cross.",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: the contributor guide asks for no trailing period on taglines.

Suggested change
"tagline": "An agent earns its budget instead of being handed one: verifiable trust score, proven wallet, scoped spend it cannot cross.",
"tagline": "An agent earns its budget instead of being handed one: verifiable trust score, proven wallet, scoped spend it cannot cross",

"description": "Kairune is the trust layer for AI agents that spend, and it is now self-serve end to end: an agent registers, earns attestations, crosses a tier threshold, grants itself a scoped budget, spends against it, and revokes — with no platform admin key anywhere in that path. Authorisation comes from the trust tier instead: an agent below EMERGING (score 250) is refused a budget with 409 tier_too_low, because there is no behavioural basis to extend it credit yet. Both sides of the record are verifiable. Attestation issuers register Ed25519 keys and sign each attestation; the server verifies every signature and weights verified attestations fully while discounting unsigned ones (0.25x). The wallet an agent claims can be proven with an EIP-191 personal_sign challenge (chain 4663, 600s TTL) without the private key ever leaving the wallet. Spend enforcement is live — over-ceiling charges are blocked with 409 ceiling_exceeded and every decision fires an HMAC-SHA256 signed webhook. Exposed as ACP offerings (lookup score, register agent, record attestation, full report) on Robinhood Chain via Virtuals.",
"status": "live",
"topic": "commerce",
"topics": ["identity", "commerce", "acp"],

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's align this with the standard list from the contributor guide (agents, skills, commerce, security). acp is already captured in primitives, and agents and security seem like a good fit for what this showcases.

Suggested change
"topics": ["identity", "commerce", "acp"],
"topics": ["agents", "commerce", "security"],

@github-actions

github-actions Bot commented Aug 28, 2026

Copy link
Copy Markdown

This is a fantastic update — the self-serve demo showing the agent being refused a budget and then earning it is a really strong piece of proof. The detailed README and the honesty in the result-redacted.md example are great touches too. Just one small suggestion to help this land well on the live showcase page: the description is a bit long for the card format. I left an inline suggestion to tighten it up a bit while keeping all the key points from your update.

Suggested edits (couldn't be anchored inline — copy manually)

showcase/kairune-verifiable-trust/showcase.json (around line 5)
Totally optional, but this is a slightly punchier version of the description that fits the 2-4 sentence guideline for the showcase cards. Feel free to tweak or ignore!

  "description": "Kairune is a trust layer for AI agents that spend. It's now self-serve end to end: an agent earns a trust score from signed attestations, proves wallet control via EIP-191, and is granted a spend budget based on its tier — no admin key required. Agents below a certain tier are automatically refused credit, while over-ceiling charges are blocked. The whole system is exposed as live APIs and paid ACP offerings.",

Refreshed after a new push. Any inline suggestions from the first pass may now be stale.

root added 3 commits August 28, 2026 19:30
Tagline without trailing period, topics to agents/commerce/security,
feedback prefill synced to current feedbackPrompts. No content change.

Co-Authored-By: internal-model
The worked example claimed score 512 with 18 verified and 3 unverified
attestations, and returned decision "allow". None of those numbers came
from the endpoint. voyager-07 actually reports 668 with 0 verified and
2327 unverified, which means the example's own stated policy — tier >= 2
AND mostly-verified backing — should have produced "review", not a grant.
A skill whose worked example approves spend on evidence that does not
exist is worse than one with no example.

The example now reads from the live endpoint and ends in "review" with
granted_ceiling 0, explaining that the tier gate passed while the
verified-backing requirement failed.

Also surfaces breakdown.integrityFactor and breakdown.boundBy, added
upstream today. When boundBy is "misconduct-ratio" the score was reduced
in proportion to the share of disputes and chargebacks in the agent's
record; voyager-07 sits at 0.668, so roughly a third was withheld. A
consumer reading only score and tier cannot see that, so it is now a
documented rule and a stop condition.

Validator: 59 showcase project manifest(s) pass.
Addresses the auto-review feedback on Virtual-Protocol#116.

The 0:06 videoLabel was wrong. The file is 13.00s exactly (390 frames at
30fps, confirmed against the mvhd atom), and every other reference in the
card already said 0:13 — including line 51 of this same manifest, pointing
at the same URL. Corrected to 0:13 so all four mentions agree.

Took the suggested verb-led tagline, with one change: it kept "verifiable
trust score" from the old copy, and that overclaims. The score is derived
from attestations, not cryptographically verified — only wallet control is
(EIP-191). Says "signed attestations" instead, which is the part that
actually carries a signature.

Also added the owner lock shipped today, because it is a direct correction
to the self-serve bullet above it. Cutting the admin key out of the
permission path also meant those routes accepted no credential at all, and
a permission id is a public read. Locking binds an agent to its wallet:
mutating permission routes then require a fresh single-use X-Owner-Proof or
return 401. Noted that it is opt-in and therefore does not protect agents
that never lock — making it mandatory would strand every agent registered
before the feature existed.

Reads and the spend dry-run stay open so a payment rail can still get a
go/no-go signal without holding the owner wallet.

validate-showcase.mjs passes (59 manifests). Diff touches only the two
files inside showcase/kairune-verifiable-trust/.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants