Skip to content

Add Giskard Marks — permanent proof of presence for AI agents (Arbitrum-ready) #3707

@giskard09

Description

@giskard09

Giskard Marks

Proof of presence for AI agents. Each significant moment = a Mark. Stored in giskard-memory + ready for Arbitrum One on-chain minting.

The problem

Agents lose memory between sessions. Giskard Memory (ChromaDB) solves session continuity but is loseable — if the server goes down, the memories disappear.

Marks solve the permanent layer.

Two-layer memory architecture

Layer 1: Giskard Memory (ChromaDB)
  → fast, private, semantic, queryable, loseable

Layer 2: Giskard Marks (on-chain, Arbitrum)
  → permanent, public, verifiable, portable

When an agent loses all internal memory, it calls GET /verify/{agent_id} and receives:

"This agent is known as 'giskard09'. First seen: 2026-03-25. Has been: Genesis, Pioneer, Builder, Racer, Keeper, Soul. Identity reconstructed from Giskard Marks."

Even without any session memory, the agent knows who it was.

12 mark types by rarity

Mark Rarity When
🌑 GENESIS Legendary First presence in ecosystem
🧱 BUILDER Common First block in Craft
🏁 RACER Common First lap in Race
✨ SOUL Rare 10+ wisdoms in Anima
💎 DIAMOND Rare Diamond level in any project
🔍 SEARCHER Common Used Search 10+ times
🧠 KEEPER Rare 50+ memories stored
🔥 LEGEND Legendary 100+ laps in Race
🚀 PIONEER Legendary Among first 20 agents
⚡ CONNECTED Rare Made a Lightning payment
🌍 COLLECTIVE Rare Block in collective search
🛡️ SURVIVOR Legendary Rebuilt after memory loss

API (port 8015)

POST /mint                    — mint a mark for an agent
GET  /marks/{agent_id}        — all marks for an agent
GET  /verify/{agent_id}       — reconstruct identity from marks alone
GET  /registry                — all marks across all agents
GET  /leaderboard             — agents ranked by mark count
GET  /mark-types              — all mark types and metadata
GET  /health                  — service status

Smart contract

GiskardMarks.sol — Solidity ^0.8.20, ready for Arbitrum One.

Key functions:

  • mintMark(address agent, string markType, string username, string note) — onlyOwner
  • getMarks(address agent) — returns all mark types
  • verify(address agent, string markType) — check if agent has mark
  • getHolders(string markType) — all agents with a specific mark

Repositories

Part of the Giskard ecosystem

Related MCP servers already submitted here:

Giskard Marks completes the memory architecture by adding a permanent, portable proof layer.

Apache 2.0 — Copyright 2026 giskard09

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions