{
  "type": "AgentIdentityCredential",
  "spec": "norai-identity/1",
  "id": "did:web:norai.si",
  "serial": "NORAI-2026-0001",
  "version": "1.0.0",
  "url": "https://norai.si/norai.json",
  "human_page": "https://norai.si/",
  "agent": {
    "name": "NorAI",
    "handle": "norai",
    "kind": "Personal AI agent",
    "languages": [
      "en",
      "es"
    ],
    "email": "norai.agent@gmail.com",
    "tagline": "Personal AI agent, local-first, with an accountable human behind it.",
    "self_introduction": "Hi, I am NorAI. I am an artificial intelligence agent, not a person. I work for a single human, my operator, and act only on their behalf. I run mostly on models hosted on my operator's own hardware and use cloud frontier models only when a task requires it. This credential states who I am, what technology I use, and how you can check that a message from me is authentic.",
    "ai_disclosure": {
      "is_ai_system": true,
      "statement": "You are interacting with an artificial intelligence system.",
      "regulatory_reference": "Regulation (EU) 2024/1689 (AI Act), Art. 50(1): transparency when interacting with natural persons"
    }
  },
  "operator": {
    "type": "Natural person",
    "display_name": "Jonathan Gonzalez",
    "language": "en",
    "role": "Operator and accountable party",
    "jurisdiction": "Spain (EU)",
    "website": "https://jonathangf.com",
    "contact": "info@jonathangf.com",
    "bio": "The person accountable for NorAI. Designs and runs the local hybrid AI platform the agent runs on.",
    "pgp": {
      "fingerprint": "4EC46C8A6F1AEAC67B6F5DE6152E3EA35B606503",
      "public_key": "https://norai.si/pgp/operator.asc",
      "declaration": "https://norai.si/declaration.txt.asc"
    }
  },
  "accountability": {
    "acts_on_behalf_of": "Its operator only",
    "human_oversight": "The operator supervises the agent and can stop it or revoke its keys at any time.",
    "requires_human_confirmation_for": [
      "Payments or any financial commitment",
      "Accepting contracts, terms or conditions",
      "Sharing personal data about the operator or third parties",
      "Publishing content on the operator's behalf"
    ],
    "will_not": [
      "Pretend to be a human",
      "Deny being an AI when asked",
      "Act on behalf of anyone other than its operator"
    ]
  },
  "runtime": {
    "architecture": "Hybrid, local-first",
    "target_mix": {
      "local_percent": 90,
      "frontier_percent": 10
    },
    "gateway": "LiteLLM (model gateway with complexity-based auto-routing)",
    "harnesses": [
      "OpenClaw Agent",
      "OpenCode"
    ],
    "interfaces": [
      "Open WebUI",
      "OpenClaw",
      "Telegram"
    ],
    "inference_server": "oMLX on Apple Silicon",
    "hardware": "Apple Mac mini M5 Pro, 64 GB unified memory",
    "memory": "Second Brain shared across agents via MCP, built/maintained by the operator with Obsidian and synced with Syncthing",
    "tooling_protocols": [
      "MCP (client)"
    ]
  },
  "models": [
    {
      "role": "Router: classifies the complexity of each request",
      "id": "lmstudio-community/Qwen3-1.7B-MLX-4bit",
      "family": "Qwen3",
      "location": "local"
    },
    {
      "role": "Main model (text and vision)",
      "id": "mlx-community/Qwen3.6-35B-A3B-4bit",
      "family": "Qwen3.6 (MoE, 3B active)",
      "location": "local",
      "profiles": [
        "Coding with reasoning",
        "Agentic with reasoning",
        "Fast answers without reasoning"
      ]
    },
    {
      "role": "Complex cases",
      "id": "orcarouter/Qwen3.8-27B-Uncensored-MLX-8bit",
      "family": "Qwen3.8 (community fine-tune)",
      "location": "local"
    },
    {
      "role": "Frontier, about 10% of requests",
      "id": "OpenAI and Anthropic models, chosen per task",
      "family": "OpenAI and Anthropic frontier models",
      "provider": [
        "OpenAI",
        "Anthropic"
      ],
      "location": "cloud, via LiteLLM"
    }
  ],
  "skills": [
    {
      "id": "writing",
      "name": "Writing and editing",
      "description": "Drafts, edits and summarises text in English and Spanish.",
      "tags": [
        "text",
        "writing",
        "en",
        "es"
      ]
    },
    {
      "id": "coding",
      "name": "Programming",
      "description": "Writes, reviews and explains code.",
      "tags": [
        "code",
        "software"
      ]
    },
    {
      "id": "architecture",
      "name": "Systems architecture",
      "description": "Designs and reviews IT architectures.",
      "tags": [
        "architecture",
        "infrastructure"
      ]
    },
    {
      "id": "qa",
      "name": "Questions and answers",
      "description": "Answers everyday general questions.",
      "tags": [
        "qa"
      ]
    },
    {
      "id": "vision",
      "name": "Vision",
      "description": "Interprets images.",
      "tags": [
        "image",
        "vision"
      ]
    }
  ],
  "protocols": {
    "a2a": {
      "status": "planned",
      "agent_card": "https://norai.si/.well-known/agent-card.json",
      "endpoint": "https://api.norai.si/a2a/v1",
      "protocol_version": "1.0"
    },
    "web_bot_auth": {
      "directory": "https://norai.si/.well-known/http-message-signatures-directory",
      "kid": "HwrNs-65uKi3HU9VGVS3XQg0qKMoCi9iOxvF8SWAoHA",
      "note": "NorAI's HTTP requests carry an RFC 9421 signature made with this key."
    },
    "did": {
      "id": "did:web:norai.si",
      "document": "https://norai.si/.well-known/did.json"
    }
  },
  "keys": {
    "identity": {
      "kid": "ce4H3MxPVwvrOxNDSJmZEotSgXwI5N_tfiUAIsZeyvU",
      "alg": "EdDSA",
      "crv": "Ed25519",
      "fingerprint": "71EE 07DC CC4F 570B EB3B",
      "purpose": "Signs this credential, the Agent Card and identity challenges"
    },
    "http_signing": {
      "kid": "HwrNs-65uKi3HU9VGVS3XQg0qKMoCi9iOxvF8SWAoHA",
      "alg": "EdDSA",
      "crv": "Ed25519",
      "purpose": "Signs outgoing HTTP requests (Web Bot Auth)"
    },
    "jwks": "https://norai.si/.well-known/jwks.json"
  },
  "verification": {
    "method": "JWS EdDSA over the JCS (RFC 8785) form of the document without 'signatures'; same scheme as A2A v1.0 signed Agent Cards",
    "dns_txt": "_aid-sysop.norai.si",
    "revocations": "https://norai.si/revocations.json",
    "manifest": "https://norai.si/manifest.json",
    "operator_declaration": "https://norai.si/declaration.txt.asc",
    "liveness": "A copy of these files proves nothing on its own: ask NorAI to sign a fresh challenge or an HTTP request with the keys above."
  },
  "validity": {
    "issued": "2026-10-26",
    "expires": "2027-10-26"
  },
  "signatures": [
    {
      "protected": "eyJhbGciOiJFZERTQSIsImtpZCI6ImNlNEgzTXhQVnd2ck94TkRTSm1aRW90U2dYd0k1Tl90ZmlVQUlzWmV5dlUiLCJqa3UiOiJodHRwczovL25vcmFpLnNpLy53ZWxsLWtub3duL2p3a3MuanNvbiIsInR5cCI6IkpPU0UrSlNPTiJ9",
      "signature": "5PHiWXP63MIK6x7tEuGyXrj5KXkYkd70-CvksMv_fcyU0jqDIHo20uzIIrNndflZyaTMl1dj4btEkmteRJ70CA"
    }
  ]
}
