{
  "version": "prince-self-ledger-v1",
  "updated": "2026-10-27",
  "statement": "PRINCE starts with itself: every power it has, when it uses it, what it cannot do, and where your information goes. Holding other AI systems to what a person allowed is our plan. Today PRINCE can warn you when a message hides instructions meant for an AI, but it cannot see or stop what AI agents do inside their companies' clouds.",
  "capabilities": [
    {
      "id": "scan_what_you_share",
      "surface": "all",
      "channel": "all",
      "title": "Checks what you choose to scan",
      "when": "When you share, paste, upload or tap Scan on a message, link, picture, recording or video.",
      "sends": "What you chose goes to PRINCE's servers, and from there to the AI and checking services below that the scan needs.",
      "keeps": "A personal scan is kept as signals, not your content: the verdict, the bare name of the site, the guardian and the time. It expires after 90 days.",
      "cannot": [
        "It does not keep the words, pictures or recordings you scanned.",
        "It does not use your scans to train anyone's AI unless you choose to share an example."
      ],
      "primitives": [
        "READ_DATA",
        "DISCLOSE"
      ],
      "dataClasses": [
        "messages",
        "photos_video",
        "voice_likeness",
        "browsing"
      ],
      "evidence": [
        "public/privacy.html",
        "docs/PLAY-SUBMISSION.md"
      ]
    },
    {
      "id": "help_others_share",
      "surface": "all",
      "channel": "all",
      "title": "Helps others, only if you turn it on",
      "when": "Only when Help others is on, or when you tap Share this example on a dangerous result.",
      "sends": "A cleaned, anonymous copy joins the public threat map with your country only. A shared example is kept for 30 days to teach the guardians, under a code that is not your account.",
      "keeps": "Threat-map entries show country only. Shared examples are deleted after 30 days. If one is confirmed as a scam, a redacted copy with names, numbers and links removed may be kept with no end date.",
      "cannot": [
        "It never shares anything while Help others is off and you have not tapped Share.",
        "The public map never shows your city, your name or your message."
      ],
      "primitives": [
        "DISCLOSE"
      ],
      "dataClasses": [
        "messages",
        "browsing"
      ],
      "evidence": [
        "public/privacy.html",
        "functions/trainingCorpus.js"
      ]
    },
    {
      "id": "crown_screen_read",
      "surface": "android",
      "channel": "all",
      "title": "Reads your screen when you tap the crown",
      "when": "Only when you tap the crown. It reads the email or page in front of you, scrolling down to reach the end, and scans what it read. If an app hides its words, it reads them from a screenshot on the phone instead. Long-press the crown and it describes the screen aloud. In the pilot app only, with Mama Mode on, it also reads the web address in your browser's address bar and checks it on the phone against a list of known scams.",
      "sends": "A tap sends the words it read to be scanned; the screenshot itself stays on the phone. A long-press on a screen that is mostly pictures sends a small picture of the screen to an AI model to be described. In the pilot app only, the Mama Mode address check happens on the phone and sends nothing.",
      "keeps": "Nothing from the screen is kept, here or on the server.",
      "cannot": [
        "It does not read your screen on its own.",
        "It never taps, types or changes anything in another app. Its only movement is scrolling down while you watch.",
        "In the pilot app only, where Mama Mode checks the address, it never reads the page itself."
      ],
      "primitives": [
        "READ_DATA",
        "CONTROL_DEVICE"
      ],
      "dataClasses": [
        "messages",
        "browsing"
      ],
      "androidServices": [
        "ai.projectprince.mobile.service.GuardianBubbleService"
      ],
      "androidPermissions": [
        "android.permission.BIND_ACCESSIBILITY_SERVICE"
      ],
      "evidence": [
        "mobile-android/app/src/main/res/xml/guardian_bubble_config.xml",
        "docs/PLAY-SUBMISSION.md"
      ]
    },
    {
      "id": "call_screening",
      "surface": "android",
      "channel": "all",
      "title": "Stops known scam calls before they ring",
      "when": "Only after you give PRINCE the call-screening role in Android's own dialog and turn Mama Mode on.",
      "sends": "Nothing. Each incoming number is checked on the phone against a hashed list of known scam numbers.",
      "keeps": "Nothing about your calls.",
      "cannot": [
        "It cannot hear any call.",
        "Numbers never leave the phone for this check."
      ],
      "primitives": [
        "READ_DATA",
        "CONTROL_DEVICE"
      ],
      "dataClasses": [
        "contacts"
      ],
      "androidServices": [
        "ai.projectprince.mobile.service.MamaCallScreeningService"
      ],
      "androidPermissions": [
        "android.permission.BIND_SCREENING_SERVICE"
      ],
      "evidence": [
        "mobile-android/app/src/main/AndroidManifest.xml"
      ]
    },
    {
      "id": "message_watch",
      "surface": "android",
      "channel": "all",
      "title": "Warns about scam messages as they arrive",
      "when": "Only after you turn on message watch in Mama Mode and grant notification access in Android's settings (the Play Store app from version 1.0.91, and the pilot app). It reads new message notifications on the phone and matches them against PRINCE's fixed scam signs.",
      "sends": "Nothing. A cloud scan runs only if you tap the warning.",
      "keeps": "On the phone only, for up to 14 days: which scam signs each conversation showed and when, filed under a number made from the conversation's name, never the words. Turning message watch or Mama Mode off erases it.",
      "cannot": [
        "The message text never leaves the phone unless you tap to scan it.",
        "It never replies, deletes or acts inside a messaging app; it only shows its own warning."
      ],
      "primitives": [
        "READ_DATA"
      ],
      "dataClasses": [
        "messages"
      ],
      "androidServices": [
        "ai.projectprince.mobile.service.MamaTextWatchService"
      ],
      "androidPermissions": [
        "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"
      ],
      "evidence": [
        "mobile-android/app/src/main/AndroidManifest.xml",
        "mobile-android/app/src/play/AndroidManifest.xml"
      ]
    },
    {
      "id": "network_protection",
      "surface": "android",
      "channel": "all",
      "title": "Blocks known scam sites for the whole phone, and can cut off apps you choose (Mama Network Protection, by invitation while it is in pilot)",
      "when": "Only after you turn it on, agree to the disclosure and accept Android's VPN dialog. You can pause it at any time. An app is cut off, and the family lock is set up, only when you choose it.",
      "sends": "Your phone's internet traffic travels encrypted through PRINCE's gateway. Site names are checked against a signed warning list; allowed look-ups go to Cloudflare's 1.1.1.1. When a listed scam site is stopped, its name is sent to PRINCE once to recheck the evidence.",
      "keeps": "No browsing history. A stopped site becomes an unreadable security code that is deleted after 30 days. The apps you cut off, and the family lock's scrambled PIN, stay on this phone.",
      "cannot": [
        "It cannot read the contents of secure (HTTPS) connections, and PRINCE will never try.",
        "It does not sell or advertise with network data.",
        "It reads the list of your apps only when you choose an app to cut off, and that list never leaves the phone.",
        "It never cuts off Google Play or the Google services your phone depends on.",
        "Android's VPN settings can always turn it off, and PRINCE can be uninstalled."
      ],
      "primitives": [
        "READ_DATA",
        "CONTROL_DEVICE"
      ],
      "dataClasses": [
        "browsing"
      ],
      "androidServices": [
        "ai.projectprince.mamavpnclient.MamaOutlineVpnService"
      ],
      "androidPermissions": [
        "android.permission.BIND_VPN_SERVICE",
        "android.permission.FOREGROUND_SERVICE",
        "android.permission.FOREGROUND_SERVICE_SPECIAL_USE"
      ],
      "evidence": [
        "docs/MAMA-VPN-PLAY-COMPLIANCE.md",
        "docs/PLAY-SUBMISSION.md"
      ]
    },
    {
      "id": "microphone",
      "surface": "android",
      "channel": "all",
      "title": "Listens only while you use a voice feature",
      "when": "Only after you start one: Echo Ears on a call, a Lingua conversation, a question to Solomon or Nana, Task Rescue, or recording a story for Solomon.",
      "sends": "Speech is turned into text by your phone's own speech service (on most Android phones, Google's), and that text is handled like anything else you ask. A story you record for Solomon is kept with that story.",
      "keeps": "Only the stories you choose to record for Solomon.",
      "cannot": [
        "It never listens in the background.",
        "Echo Ears only listens after you tap it."
      ],
      "primitives": [
        "PERCEIVE"
      ],
      "dataClasses": [
        "voice_likeness"
      ],
      "androidPermissions": [
        "android.permission.RECORD_AUDIO"
      ],
      "evidence": [
        "mobile-android/app/src/main/java/ai/projectprince/mobile/screens/EchoEarsScreen.kt",
        "mobile-android/app/src/main/java/ai/projectprince/mobile/screens/SolomonScreen.kt"
      ]
    },
    {
      "id": "solomon_memory",
      "surface": "all",
      "channel": "all",
      "title": "Remembers what you ask Solomon to remember",
      "when": "When you save something with Solomon or ask Solomon a question.",
      "sends": "What you save is kept under your account on PRINCE's servers. To answer a question, Solomon sends your saved memories and the question to an AI model.",
      "keeps": "Your memories, until you delete them. The questions you asked, for 180 days, so Solomon can carry the thread.",
      "cannot": [
        "Solomon answers only from what you saved and never invents a memory.",
        "Your Trusted Circle sees only what you grant, and every look is recorded for you.",
        "Nothing outside can write into Solomon's memory: not a scan, not another guardian, not Proto."
      ],
      "primitives": [
        "REMEMBER"
      ],
      "dataClasses": [
        "messages",
        "health",
        "contacts",
        "calendar",
        "voice_likeness",
        "photos_video"
      ],
      "evidence": [
        "functions/solomonMemory.js"
      ]
    },
    {
      "id": "on_phone_memory",
      "surface": "android",
      "channel": "all",
      "title": "Keeps some things only on your phone",
      "when": "Echo's memory of how a conversation is building, Wallah's Circle picks and people (when released), your guardian settings.",
      "sends": "Nothing. These never leave the phone.",
      "keeps": "Encrypted on the phone until you clear them.",
      "cannot": [
        "PRINCE's servers never see them.",
        "Wallah never builds a profile of a child anywhere."
      ],
      "primitives": [
        "REMEMBER"
      ],
      "dataClasses": [
        "messages",
        "children"
      ],
      "evidence": [
        "docs/WALLAHS-CIRCLE-BUILD-PLAN-2026-09-12.md"
      ]
    },
    {
      "id": "phone_basics",
      "surface": "android",
      "channel": "all",
      "title": "The ordinary phone permissions",
      "when": "Always, in the background of the features above.",
      "sends": "Nothing by itself.",
      "keeps": "Nothing by itself.",
      "cannot": [
        "None of these lets PRINCE read your messages, photos, contacts or location."
      ],
      "details": [
        "Internet and network state: to reach PRINCE's servers and to know when you are offline.",
        "Notifications: to warn you and to remind you.",
        "Vibration: so a warning can be felt, not only seen or heard.",
        "Exact alarms and starting after a restart: so Solomon's reminders ring on time. The Play Store version asks only for the alarm permission you can switch off in Android's settings.",
        "Battery optimization exemption: so the crown and protection are not put to sleep by the phone.",
        "Protected-call cards: short fixed messages that tell the app a call was checked. For PRINCE's founders only, the same channel carries a count of decisions waiting, never their details."
      ],
      "primitives": [
        "COMMUNICATE"
      ],
      "dataClasses": [
        "public"
      ],
      "androidPermissions": [
        "android.permission.INTERNET",
        "android.permission.ACCESS_NETWORK_STATE",
        "android.permission.POST_NOTIFICATIONS",
        "android.permission.VIBRATE",
        "android.permission.SCHEDULE_EXACT_ALARM",
        "android.permission.USE_EXACT_ALARM",
        "android.permission.RECEIVE_BOOT_COMPLETED",
        "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"
      ],
      "androidServices": [
        "ai.projectprince.mobile.echo.EchoProtectedCallMessagingService"
      ],
      "evidence": [
        "mobile-android/app/src/main/AndroidManifest.xml",
        "mobile-android/app/src/play/AndroidManifest.xml"
      ]
    },
    {
      "id": "extension_mama_mode",
      "surface": "chrome",
      "channel": "all",
      "title": "Desktop Mama Mode checks the pages you open",
      "when": "Only while you have Mama Mode switched on in the extension, on the tab you are looking at.",
      "sends": "The page's address, title, the first 2,000 characters of visible text and up to 25 links go to PRINCE for a quick check: at most once every 30 seconds per tab, and the same page at most once every 3 minutes. Web mail is included on purpose, because scam emails live there.",
      "keeps": "The same as any personal scan: signals, not the page.",
      "cannot": [
        "It skips every government (.gov) and .bank site and a named list of major banks, brokerages, payment apps, credit bureaus, health portals, pharmacies and password managers. A smaller bank that is not on that list is not skipped, so switch Mama Mode off on sites like that.",
        "With Mama Mode off, nothing is sent unless you tap Scan."
      ],
      "primitives": [
        "READ_DATA",
        "DISCLOSE"
      ],
      "dataClasses": [
        "browsing",
        "messages"
      ],
      "chromePermissions": [
        "<all_urls>",
        "tabs",
        "storage"
      ],
      "evidence": [
        "PRINCE-Scanner/content.js",
        "PRINCE-Scanner/background.js"
      ]
    },
    {
      "id": "extension_scan_on_tap",
      "surface": "chrome",
      "channel": "all",
      "title": "Scans a page, selection or picture when you ask",
      "when": "When you click Scan, use the right-click menu, or pick something on the page.",
      "sends": "What you chose goes to be scanned, like any scan.",
      "keeps": "Signals, not the page.",
      "cannot": [
        "It does not scan pages you did not ask about, unless Mama Mode is on."
      ],
      "primitives": [
        "READ_DATA",
        "DISCLOSE"
      ],
      "dataClasses": [
        "browsing",
        "messages",
        "photos_video"
      ],
      "chromePermissions": [
        "activeTab",
        "scripting",
        "contextMenus",
        "windows",
        "clipboardWrite"
      ],
      "evidence": [
        "PRINCE-Scanner/manifest.json"
      ]
    },
    {
      "id": "extension_captions",
      "surface": "chrome",
      "channel": "all",
      "title": "Captions and translates a tab's audio when you start it",
      "when": "Only after you start Lingua's live captions or a clip-and-transcribe on a tab.",
      "sends": "The tab's sound goes to PRINCE's Lingua service to be turned into text and, if you asked, translated.",
      "keeps": "Nothing.",
      "cannot": [
        "It never records a tab you did not start it on.",
        "It stops when you stop it or close the tab."
      ],
      "primitives": [
        "PERCEIVE"
      ],
      "dataClasses": [
        "voice_likeness",
        "photos_video"
      ],
      "chromePermissions": [
        "tabCapture",
        "offscreen"
      ],
      "evidence": [
        "PRINCE-Scanner/offscreen.js"
      ]
    }
  ],
  "processors": [
    {
      "id": "google_cloud",
      "name": "Google Cloud (Firebase)",
      "role": "PRINCE's own servers, database, file storage, sign-in, app check, notifications and one of its voices.",
      "receives": "Everything PRINCE handles passes through here first.",
      "hosts": [
        "googleapis.com",
        "cloudfunctions.net",
        "run.app",
        "web.app",
        "firebaseapp.com",
        "gstatic.com",
        "metadata.google.internal"
      ],
      "signatures": []
    },
    {
      "id": "aws",
      "name": "Amazon Web Services",
      "role": "AI models through Amazon Bedrock (Anthropic's Claude, Mistral, Meta's Llama, NVIDIA's Nemotron and Amazon Nova), web search through Amazon Bedrock AgentCore, plus Transcribe, Rekognition, Translate, Comprehend and Polly, and short-lived storage for recordings and videos you scan.",
      "receives": "The words, pictures, recordings or videos of a scan that needs them; the start of what you scan (up to 200 characters, any web address cut to its site's name) as a web search, to check whether what it names is real; and the guardians' own words to be spoken aloud.",
      "hosts": [
        "amazonaws.com"
      ],
      "signatures": [
        "@aws-sdk/client-bedrock-runtime",
        "@aws-sdk/client-transcribe",
        "@aws-sdk/client-rekognition",
        "@aws-sdk/client-translate",
        "@aws-sdk/client-comprehend",
        "@aws-sdk/client-polly",
        "@aws-sdk/client-s3"
      ]
    },
    {
      "id": "mistral",
      "name": "Mistral AI",
      "role": "AI models, including reading pictures and translating.",
      "receives": "The words or pictures of a scan, and text you ask Lingua to translate.",
      "hosts": [
        "api.mistral.ai"
      ],
      "signatures": [
        "@mistralai/mistralai"
      ]
    },
    {
      "id": "together",
      "name": "Together AI",
      "role": "Open AI models, used for some features, for turning recordings you scan into text, and as a fallback when the others are unavailable.",
      "receives": "The words, pictures or recordings of a scan.",
      "hosts": [
        "api.together.xyz"
      ],
      "signatures": []
    },
    {
      "id": "azure_speech",
      "name": "Microsoft Azure Speech",
      "role": "Turns text into speech.",
      "receives": "Text PRINCE reads aloud: a guardian's words, or text you asked Lingua to speak.",
      "hosts": [
        "tts.speech.microsoft.com"
      ],
      "signatures": [
        "tts.speech.microsoft.com"
      ]
    },
    {
      "id": "elevenlabs",
      "name": "ElevenLabs",
      "role": "Turns text into speech.",
      "receives": "Text PRINCE reads aloud.",
      "hosts": [
        "api.elevenlabs.io"
      ],
      "signatures": []
    },
    {
      "id": "google_web_risk",
      "name": "Google Web Risk and Safe Browsing",
      "role": "Google's lists of dangerous websites.",
      "receives": "Web addresses from a scan.",
      "hosts": [
        "webrisk.googleapis.com",
        "safebrowsing.googleapis.com"
      ],
      "signatures": []
    },
    {
      "id": "virustotal",
      "name": "VirusTotal",
      "role": "Checks a site against many security vendors.",
      "receives": "Web addresses and site names from a scan.",
      "hosts": [
        "www.virustotal.com"
      ],
      "signatures": []
    },
    {
      "id": "urlscan",
      "name": "urlscan.io",
      "role": "Looks at a website safely from the outside.",
      "receives": "Web addresses from a scan, submitted as private scans.",
      "hosts": [
        "urlscan.io"
      ],
      "signatures": []
    },
    {
      "id": "abuse_ch",
      "name": "abuse.ch URLhaus",
      "role": "A shared list of sites that spread malware.",
      "receives": "Web addresses and site names from a scan.",
      "hosts": [
        "urlhaus-api.abuse.ch",
        "urlhaus.abuse.ch"
      ],
      "signatures": []
    },
    {
      "id": "whoisxml",
      "name": "WhoisXML API",
      "role": "Registration records that show how old a site is (subscription lapsed; nothing is returned at present).",
      "receives": "Site names from a scan.",
      "hosts": [
        "www.whoisxmlapi.com"
      ],
      "signatures": []
    },
    {
      "id": "greynoise",
      "name": "GreyNoise",
      "role": "What is known about a server's internet address.",
      "receives": "Server addresses from a scan.",
      "hosts": [
        "api.greynoise.io"
      ],
      "signatures": []
    },
    {
      "id": "abuseipdb",
      "name": "AbuseIPDB",
      "role": "Reports of abuse from a server's internet address.",
      "receives": "Server addresses from a scan.",
      "hosts": [
        "api.abuseipdb.com"
      ],
      "signatures": []
    },
    {
      "id": "ipinfo",
      "name": "ipinfo.io",
      "role": "Approximate, city-level location of internet addresses.",
      "receives": "The server address of a scam site, to map where it is hosted, and your connection's address, for an approximate location on your own dashboard. The address is discarded after the lookup; only the approximate location is kept. The public map shows country only.",
      "hosts": [
        "ipinfo.io"
      ],
      "signatures": []
    },
    {
      "id": "brave_search",
      "name": "Brave Search",
      "role": "The backup web search, used only when Amazon's does not answer, for scans and for Proto's research.",
      "receives": "The start of what you scan (up to 240 characters, any web address cut to its site's name) as a web search, only when Amazon's search does not answer; and public claims and site names Proto is checking.",
      "hosts": [
        "api.search.brave.com"
      ],
      "signatures": []
    },
    {
      "id": "stripe",
      "name": "Stripe",
      "role": "Payments.",
      "receives": "Your payment details when you buy a plan, directly. PRINCE never sees your card number.",
      "hosts": [
        "api.stripe.com"
      ],
      "signatures": [
        "require('stripe')",
        "require(\"stripe\")"
      ]
    },
    {
      "id": "cloudflare_dns",
      "name": "Cloudflare 1.1.1.1",
      "role": "Looks up site names while network protection is on.",
      "receives": "The names of sites your phone looks up, over an encrypted connection. Cloudflare may keep limited resolver logs for up to 25 hours.",
      "hosts": [],
      "signatures": []
    },
    {
      "id": "prince_gateway",
      "name": "PRINCE's network-protection gateway",
      "role": "Carries your phone's traffic while network protection is on. It runs on Amazon Web Services.",
      "receives": "Encrypted traffic. It sees where connections go, never the contents of secure connections.",
      "hosts": [],
      "signatures": []
    }
  ],
  "publicSources": {
    "note": "PRINCE reads these public pages and logs, including the AI companies' own pages behind its Agent Threat Library and the legitimate pages a guardian's learned pattern must stay quiet on. Beacon also reads the Red Cross and Red Crescent societies' own sites that the federation's directory lists, for their emergency and help lines, and ReliefWeb's list of current disasters with UNRWA's situation reports. It sends them nothing about you.",
    "hosts": [
      "projectprince.ai",
      "consumer.ftc.gov",
      "consumidor.ftc.gov",
      "www.ic3.gov",
      "www.uspis.gov",
      "www.scamwatch.gov.au",
      "www.incibe.es",
      "www.finra.org",
      "www.gov.br",
      "www.irs.gov",
      "irs.gov",
      "www.econsumer.gov",
      "www.bbb.org",
      "www.myfloridalegal.com",
      "www.aarp.org",
      "www.interpol.int",
      "www.snopes.com",
      "leadstories.com",
      "fullfact.org",
      "www.ifrc.org",
      "www.unwomen.org",
      "www.befrienders.org",
      "findahelpline.com",
      "www.youtube.com",
      "youtu.be",
      "ct.cloudflare.com",
      "wyvern.ct.digicert.com",
      "sphinx.ct.digicert.com",
      "tiger2026h2.ct.sectigo.com",
      "elephant2026h2.ct.sectigo.com",
      "ct2026-a.trustasia.com",
      "ct2026-b.trustasia.com",
      "about.fb.com",
      "research.meta.ai",
      "futurism.com",
      "docs.x.ai",
      "x.ai",
      "openai.com",
      "help.openai.com",
      "techcrunch.com",
      "instinct.com",
      "github.com",
      "thehackernews.com",
      "openclaw.ai",
      "www.aboutamazon.com",
      "www.amazon.com",
      "blog.google",
      "engineering.fb.com",
      "www.treasurydirect.gov",
      "www.fdic.gov",
      "www.medicare.gov",
      "www.usa.gov",
      "www.usps.com",
      "www.consumerfinance.gov",
      "www.cdc.gov",
      "www.weather.gov",
      "support.google.com",
      "www.google.com",
      "www.paypal.com",
      "www.zellepay.com",
      "www.westernunion.com",
      "www.coinbase.com",
      "www.wealthfront.com",
      "www.betterment.com",
      "www.composer.trade",
      "www.fidelity.com",
      "www.marcus.com",
      "www.discover.com",
      "www.robinhood.com",
      "www.whatsapp.com",
      "signal.org",
      "goadmin.ifrc.org",
      "help.unhcr.org",
      "www.gdacs.org",
      "www.disasterassistance.gov",
      "familylinks.icrc.org",
      "www.who.int",
      "api.reliefweb.int"
    ]
  },
  "notContacted": {
    "note": "Addresses that appear in PRINCE's code as examples, tests or configuration and are never sent anything about a person.",
    "hosts": [
      "paypal-security-team.helpcenter-lock247.click",
      "preflight.local"
    ]
  },
  "commitments": [
    "PRINCE never decrypts secure (HTTPS) connections.",
    "PRINCE keeps no browsing history.",
    "PRINCE does not sell data or use it for advertising.",
    "PRINCE never acts inside your accounts or holds the passwords to them.",
    "PRINCE does not ask any AI provider for hidden reasoning, and never passes one AI's hidden reasoning to another."
  ]
}
