[{"data":1,"prerenderedAt":1254},["ShallowReactive",2],{"docs-navigation":3,"docs-page-\u002Fdocs\u002Ffundamentals\u002Fdata-placement\u002Fpython":252,"docs-surround-\u002Fdocs\u002Ffundamentals\u002Fdata-placement\u002Fpython":1251},[4],{"title":5,"path":6,"stem":7,"children":8,"page":251},"Docs","\u002Fdocs","docs",[9,36,101,197,232],{"title":10,"path":11,"stem":12,"children":13},"GET STARTED","\u002Fdocs\u002Fget-started","docs\u002F1.get-started\u002F1.index",[14,16,20,24,28,32],{"title":15,"path":11,"stem":12},"Welcome",{"title":17,"path":18,"stem":19},"Quickstart","\u002Fdocs\u002Fget-started\u002Fquickstart","docs\u002F1.get-started\u002F2.quickstart",{"title":21,"path":22,"stem":23},"API","\u002Fdocs\u002Fget-started\u002Fapi","docs\u002F1.get-started\u002F3.api",{"title":25,"path":26,"stem":27},"SDKs and CLI","\u002Fdocs\u002Fget-started\u002Fsdks-cli","docs\u002F1.get-started\u002F4.sdks-cli",{"title":29,"path":30,"stem":31},"Sandbox testing","\u002Fdocs\u002Fget-started\u002Flocal-development","docs\u002F1.get-started\u002F5.local-development",{"title":33,"path":34,"stem":35},"Authentication","\u002Fdocs\u002Fget-started\u002Fauthentication","docs\u002F1.get-started\u002F6.authentication",{"title":37,"path":38,"stem":39,"children":40},"FUNDAMENTALS","\u002Fdocs\u002Ffundamentals","docs\u002F2.fundamentals\u002F01.index",[41,43,47,51,55,59,63,67,71,75],{"title":42,"path":38,"stem":39},"Fundamentals",{"title":44,"path":45,"stem":46},"Architecture","\u002Fdocs\u002Ffundamentals\u002Farchitecture","docs\u002F2.fundamentals\u002F02.architecture",{"title":48,"path":49,"stem":50},"Memory model","\u002Fdocs\u002Ffundamentals\u002Fmemory-model","docs\u002F2.fundamentals\u002F03.memory-model",{"title":52,"path":53,"stem":54},"Compression","\u002Fdocs\u002Ffundamentals\u002Fcompression","docs\u002F2.fundamentals\u002F04.compression",{"title":56,"path":57,"stem":58},"RAG and cached context","\u002Fdocs\u002Ffundamentals\u002Frag-cag","docs\u002F2.fundamentals\u002F05.rag-cag",{"title":60,"path":61,"stem":62},"Context cache","\u002Fdocs\u002Ffundamentals\u002Fcontext-cache","docs\u002F2.fundamentals\u002F06.context-cache",{"title":64,"path":65,"stem":66},"Security","\u002Fdocs\u002Ffundamentals\u002Fsecurity","docs\u002F2.fundamentals\u002F07.security",{"title":68,"path":69,"stem":70},"Languages","\u002Fdocs\u002Ffundamentals\u002Flanguages","docs\u002F2.fundamentals\u002F08.languages",{"title":72,"path":73,"stem":74},"UI patterns","\u002Fdocs\u002Ffundamentals\u002Fui","docs\u002F2.fundamentals\u002F09.ui",{"title":76,"path":77,"stem":78,"children":79},"Global, Regional, and Jurisdictional Memory","\u002Fdocs\u002Ffundamentals\u002Fdata-placement","docs\u002F2.fundamentals\u002F10.data-placement\u002F1.index",[80,81,85,89,93,97],{"title":76,"path":77,"stem":78},{"title":82,"path":83,"stem":84},"TypeScript \u002F JavaScript","\u002Fdocs\u002Ffundamentals\u002Fdata-placement\u002Ftypescript","docs\u002F2.fundamentals\u002F10.data-placement\u002F2.typescript",{"title":86,"path":87,"stem":88},"Python","\u002Fdocs\u002Ffundamentals\u002Fdata-placement\u002Fpython","docs\u002F2.fundamentals\u002F10.data-placement\u002F3.python",{"title":90,"path":91,"stem":92},"PHP","\u002Fdocs\u002Ffundamentals\u002Fdata-placement\u002Fphp","docs\u002F2.fundamentals\u002F10.data-placement\u002F4.php",{"title":94,"path":95,"stem":96},"Go","\u002Fdocs\u002Ffundamentals\u002Fdata-placement\u002Fgo","docs\u002F2.fundamentals\u002F10.data-placement\u002F5.go",{"title":98,"path":99,"stem":100},"Rust","\u002Fdocs\u002Ffundamentals\u002Fdata-placement\u002Frust","docs\u002F2.fundamentals\u002F10.data-placement\u002F6.rust",{"title":102,"path":103,"stem":104,"children":105},"AGENTS & CODE NUCLEI","\u002Fdocs\u002Fagents","docs\u002F3.agents\u002F01.index",[106,108,112,116,120,124,128,132,136,140,158,193],{"title":107,"path":103,"stem":104},"Agents",{"title":109,"path":110,"stem":111},"Codex Code Nucleus","\u002Fdocs\u002Fagents\u002Fcodex-code-nucleus","docs\u002F3.agents\u002F02.codex-code-nucleus",{"title":113,"path":114,"stem":115},"Claude Code Nucleus","\u002Fdocs\u002Fagents\u002Fclaude-code-nucleus","docs\u002F3.agents\u002F03.claude-code-nucleus",{"title":117,"path":118,"stem":119},"Google Gemini Code Nucleus","\u002Fdocs\u002Fagents\u002Fgoogle-gemini-code-nucleus","docs\u002F3.agents\u002F04.google-gemini-code-nucleus",{"title":121,"path":122,"stem":123},"GitHub Copilot Code Nucleus","\u002Fdocs\u002Fagents\u002Fgithub-copilot-code-nucleus","docs\u002F3.agents\u002F05.github-copilot-code-nucleus",{"title":125,"path":126,"stem":127},"Cursor Code Nucleus","\u002Fdocs\u002Fagents\u002Fcursor-code-nucleus","docs\u002F3.agents\u002F06.cursor-code-nucleus",{"title":129,"path":130,"stem":131},"Windsurf Code Nucleus","\u002Fdocs\u002Fagents\u002Fwindsurf-code-nucleus","docs\u002F3.agents\u002F07.windsurf-code-nucleus",{"title":133,"path":134,"stem":135},"Agent skills","\u002Fdocs\u002Fagents\u002Fagent-skills","docs\u002F3.agents\u002F08.agent-skills",{"title":137,"path":138,"stem":139},"Admin UI prompt","\u002Fdocs\u002Fagents\u002Fadmin-ui-prompt","docs\u002F3.agents\u002F09.admin-ui-prompt",{"title":141,"path":142,"stem":143,"children":144},"Team Code Governance","\u002Fdocs\u002Fagents\u002Fcode-governance","docs\u002F3.agents\u002F10.code-governance\u002F1.index",[145,146,150,154],{"title":141,"path":142,"stem":143},{"title":147,"path":148,"stem":149},"Local Team Setup","\u002Fdocs\u002Fagents\u002Fcode-governance\u002Flocal-team-setup","docs\u002F3.agents\u002F10.code-governance\u002F2.local-team-setup",{"title":151,"path":152,"stem":153},"Language Governance Packs","\u002Fdocs\u002Fagents\u002Fcode-governance\u002Flanguage-packs","docs\u002F3.agents\u002F10.code-governance\u002F3.language-packs",{"title":155,"path":156,"stem":157},"GitHub CI\u002FCD Governance","\u002Fdocs\u002Fagents\u002Fcode-governance\u002Fgithub-cicd","docs\u002F3.agents\u002F10.code-governance\u002F4.github-cicd",{"title":159,"path":160,"stem":161,"children":162},"Memory + Consequence Agents","\u002Fdocs\u002Fagents\u002Fmemory-consequence-agents","docs\u002F3.agents\u002F11.memory-consequence-agents\u002F1.index",[163,164,185,189],{"title":159,"path":160,"stem":161},{"title":165,"path":166,"stem":167,"children":168},"End-to-End Agent Example","\u002Fdocs\u002Fagents\u002Fmemory-consequence-agents\u002Fend-to-end","docs\u002F3.agents\u002F11.memory-consequence-agents\u002F2.end-to-end\u002F1.index",[169,170,173,176,179,182],{"title":165,"path":166,"stem":167},{"title":82,"path":171,"stem":172},"\u002Fdocs\u002Fagents\u002Fmemory-consequence-agents\u002Fend-to-end\u002Ftypescript","docs\u002F3.agents\u002F11.memory-consequence-agents\u002F2.end-to-end\u002F2.typescript",{"title":86,"path":174,"stem":175},"\u002Fdocs\u002Fagents\u002Fmemory-consequence-agents\u002Fend-to-end\u002Fpython","docs\u002F3.agents\u002F11.memory-consequence-agents\u002F2.end-to-end\u002F3.python",{"title":90,"path":177,"stem":178},"\u002Fdocs\u002Fagents\u002Fmemory-consequence-agents\u002Fend-to-end\u002Fphp","docs\u002F3.agents\u002F11.memory-consequence-agents\u002F2.end-to-end\u002F4.php",{"title":94,"path":180,"stem":181},"\u002Fdocs\u002Fagents\u002Fmemory-consequence-agents\u002Fend-to-end\u002Fgo","docs\u002F3.agents\u002F11.memory-consequence-agents\u002F2.end-to-end\u002F5.go",{"title":98,"path":183,"stem":184},"\u002Fdocs\u002Fagents\u002Fmemory-consequence-agents\u002Fend-to-end\u002Frust","docs\u002F3.agents\u002F11.memory-consequence-agents\u002F2.end-to-end\u002F6.rust",{"title":186,"path":187,"stem":188},"Industry Agent Use Cases","\u002Fdocs\u002Fagents\u002Fmemory-consequence-agents\u002Findustry-use-cases","docs\u002F3.agents\u002F11.memory-consequence-agents\u002F3.industry-use-cases",{"title":190,"path":191,"stem":192},"Historical Actions and Learning","\u002Fdocs\u002Fagents\u002Fmemory-consequence-agents\u002Fhistorical-learning","docs\u002F3.agents\u002F11.memory-consequence-agents\u002F4.historical-learning",{"title":194,"path":195,"stem":196},"Consequence decision support","\u002Fdocs\u002Fagents\u002Fconsequence","docs\u002F3.agents\u002F12.consequence",{"title":198,"path":199,"stem":200,"children":201},"MODEL PROVIDERS","\u002Fdocs\u002Fproviders","docs\u002F4.providers\u002F1.index",[202,204,208,212,216,220,224,228],{"title":203,"path":199,"stem":200},"Providers",{"title":205,"path":206,"stem":207},"OpenAI and Azure OpenAI","\u002Fdocs\u002Fproviders\u002Fopenai","docs\u002F4.providers\u002F2.openai",{"title":209,"path":210,"stem":211},"Anthropic Claude","\u002Fdocs\u002Fproviders\u002Fanthropic","docs\u002F4.providers\u002F3.anthropic",{"title":213,"path":214,"stem":215},"Google Gemini and Vertex AI","\u002Fdocs\u002Fproviders\u002Fgoogle-gemini","docs\u002F4.providers\u002F4.google-gemini",{"title":217,"path":218,"stem":219},"OpenAI-compatible providers","\u002Fdocs\u002Fproviders\u002Fopenai-compatible","docs\u002F4.providers\u002F5.openai-compatible",{"title":221,"path":222,"stem":223},"Groq","\u002Fdocs\u002Fproviders\u002Fgroq","docs\u002F4.providers\u002F6.groq",{"title":225,"path":226,"stem":227},"Cohere","\u002Fdocs\u002Fproviders\u002Fcohere","docs\u002F4.providers\u002F7.cohere",{"title":229,"path":230,"stem":231},"Amazon Bedrock","\u002Fdocs\u002Fproviders\u002Famazon-bedrock","docs\u002F4.providers\u002F8.amazon-bedrock",{"title":233,"path":234,"stem":235,"children":236},"CHANGELOG","\u002Fdocs\u002Fchangelog","docs\u002F5.changelog\u002F1.index",[237,239,243,247],{"title":238,"path":234,"stem":235},"Changelog",{"title":240,"path":241,"stem":242},"Roadmap","\u002Fdocs\u002Fchangelog\u002Froadmap","docs\u002F5.changelog\u002F2.roadmap",{"title":244,"path":245,"stem":246},"Release notes","\u002Fdocs\u002Fchangelog\u002Frelease-runbook","docs\u002F5.changelog\u002F3.release-runbook",{"title":248,"path":249,"stem":250},"Testing","\u002Fdocs\u002Fchangelog\u002Ftesting","docs\u002F5.changelog\u002F4.testing",false,{"id":253,"title":86,"body":254,"description":1246,"extension":1247,"meta":1248,"navigation":322,"path":87,"seo":1249,"stem":88,"__hash__":1250},"docs\u002Fdocs\u002F2.fundamentals\u002F10.data-placement\u002F3.python.md",{"type":255,"value":256,"toc":1240},"minimark",[257,262,266,298,301,306,780,783,787,1021,1024,1028,1122,1129,1133,1228,1236],[258,259,261],"h1",{"id":260},"python-data-placement","Python Data Placement",[263,264,265],"p",{},"Install the Python 3.10+ SDK:",[267,268,273],"pre",{"className":269,"code":270,"language":271,"meta":272,"style":272},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","python -m pip install neutron-ai-sdk\n","bash","",[274,275,276],"code",{"__ignoreMap":272},[277,278,281,285,289,292,295],"span",{"class":279,"line":280},"line",1,[277,282,284],{"class":283},"sBMFI","python",[277,286,288],{"class":287},"sfazB"," -m",[277,290,291],{"class":287}," pip",[277,293,294],{"class":287}," install",[277,296,297],{"class":287}," neutron-ai-sdk\n",[263,299,300],{},"The official SDK handles runtime memory operations. A small standard-library REST helper performs Nucleus provisioning and readiness checks because those control-plane methods are not yet part of the Python SDK.",[302,303,305],"h2",{"id":304},"provision-the-three-nuclei","Provision the three Nuclei",[267,307,310],{"className":308,"code":309,"language":284,"meta":272,"style":272},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","from __future__ import annotations\n\nimport json\nimport os\nfrom typing import Any\nfrom urllib.request import Request, urlopen\n\n\ndef required_env(name: str) -> str:\n    value = os.environ.get(name)\n    if not value:\n        raise RuntimeError(f\"{name} is required\")\n    return value\n\n\nAPI_URL = required_env(\"NEUTRON_API_URL\").rstrip(\"\u002F\")\n\n\ndef neutron_request(\n    token: str,\n    method: str,\n    path: str,\n    body: dict[str, Any] | None = None,\n) -> Any:\n    payload = json.dumps(body).encode(\"utf-8\") if body is not None else None\n    request = Request(\n        f\"{API_URL}{path}\",\n        data=payload,\n        method=method,\n        headers={\n            \"authorization\": f\"Bearer {token}\",\n            \"content-type\": \"application\u002Fjson\",\n        },\n    )\n    with urlopen(request, timeout=30) as response:\n        raw_body = response.read().decode(\"utf-8\")\n        return json.loads(raw_body) if raw_body else None\n\n\nworkspace_key = required_env(\"NEUTRON_WORKSPACE_API_KEY\")\nprofiles = [\n    {\n        \"nucleusId\": \"product-knowledge-global\",\n        \"name\": \"Global product knowledge\",\n        \"placement\": {\n            \"mode\": \"global\",\n            \"guarantee\": \"none\",\n            \"notes\": [\"Approved global knowledge; no jurisdictional storage guarantee.\"],\n        },\n    },\n    {\n        \"nucleusId\": \"support-operations-weur\",\n        \"name\": \"Western Europe support operations\",\n        \"placement\": {\n            \"mode\": \"regional\",\n            \"regionHint\": \"weur\",\n            \"r2LocationHint\": \"weur\",\n            \"guarantee\": \"best_effort_regional\",\n            \"notes\": [\"Latency preference only; not a legal residency boundary.\"],\n        },\n    },\n    {\n        \"nucleusId\": \"regulated-cases-eu\",\n        \"name\": \"EU regulated case memory\",\n        \"placement\": {\n            \"mode\": \"jurisdictional\",\n            \"jurisdiction\": \"eu\",\n            \"regionalServicesRequired\": True,\n            \"metadataBoundaryRequired\": True,\n            \"geoKeyManagerRequired\": False,\n            \"guarantee\": \"jurisdictional_storage\",\n            \"notes\": [\n                \"Requires the EU Durable Object jurisdiction and matching EU archive binding.\",\n                \"Processing, logs, metadata, keys, retention, and contracts require separate verification.\",\n            ],\n        },\n    },\n]\n\nfor profile in profiles:\n    neutron_request(workspace_key, \"POST\", \"\u002Fv1\u002Fnuclei\", profile)\n",[274,311,312,317,324,330,336,342,348,353,358,364,370,376,382,388,393,398,404,409,414,420,426,432,438,444,450,456,462,468,474,480,486,492,498,504,510,516,522,528,533,538,544,550,556,562,568,574,580,586,592,597,603,608,614,620,625,631,637,643,649,655,660,665,670,676,682,687,693,699,705,711,717,723,729,735,741,747,752,757,763,768,774],{"__ignoreMap":272},[277,313,314],{"class":279,"line":280},[277,315,316],{},"from __future__ import annotations\n",[277,318,320],{"class":279,"line":319},2,[277,321,323],{"emptyLinePlaceholder":322},true,"\n",[277,325,327],{"class":279,"line":326},3,[277,328,329],{},"import json\n",[277,331,333],{"class":279,"line":332},4,[277,334,335],{},"import os\n",[277,337,339],{"class":279,"line":338},5,[277,340,341],{},"from typing import Any\n",[277,343,345],{"class":279,"line":344},6,[277,346,347],{},"from urllib.request import Request, urlopen\n",[277,349,351],{"class":279,"line":350},7,[277,352,323],{"emptyLinePlaceholder":322},[277,354,356],{"class":279,"line":355},8,[277,357,323],{"emptyLinePlaceholder":322},[277,359,361],{"class":279,"line":360},9,[277,362,363],{},"def required_env(name: str) -> str:\n",[277,365,367],{"class":279,"line":366},10,[277,368,369],{},"    value = os.environ.get(name)\n",[277,371,373],{"class":279,"line":372},11,[277,374,375],{},"    if not value:\n",[277,377,379],{"class":279,"line":378},12,[277,380,381],{},"        raise RuntimeError(f\"{name} is required\")\n",[277,383,385],{"class":279,"line":384},13,[277,386,387],{},"    return value\n",[277,389,391],{"class":279,"line":390},14,[277,392,323],{"emptyLinePlaceholder":322},[277,394,396],{"class":279,"line":395},15,[277,397,323],{"emptyLinePlaceholder":322},[277,399,401],{"class":279,"line":400},16,[277,402,403],{},"API_URL = required_env(\"NEUTRON_API_URL\").rstrip(\"\u002F\")\n",[277,405,407],{"class":279,"line":406},17,[277,408,323],{"emptyLinePlaceholder":322},[277,410,412],{"class":279,"line":411},18,[277,413,323],{"emptyLinePlaceholder":322},[277,415,417],{"class":279,"line":416},19,[277,418,419],{},"def neutron_request(\n",[277,421,423],{"class":279,"line":422},20,[277,424,425],{},"    token: str,\n",[277,427,429],{"class":279,"line":428},21,[277,430,431],{},"    method: str,\n",[277,433,435],{"class":279,"line":434},22,[277,436,437],{},"    path: str,\n",[277,439,441],{"class":279,"line":440},23,[277,442,443],{},"    body: dict[str, Any] | None = None,\n",[277,445,447],{"class":279,"line":446},24,[277,448,449],{},") -> Any:\n",[277,451,453],{"class":279,"line":452},25,[277,454,455],{},"    payload = json.dumps(body).encode(\"utf-8\") if body is not None else None\n",[277,457,459],{"class":279,"line":458},26,[277,460,461],{},"    request = Request(\n",[277,463,465],{"class":279,"line":464},27,[277,466,467],{},"        f\"{API_URL}{path}\",\n",[277,469,471],{"class":279,"line":470},28,[277,472,473],{},"        data=payload,\n",[277,475,477],{"class":279,"line":476},29,[277,478,479],{},"        method=method,\n",[277,481,483],{"class":279,"line":482},30,[277,484,485],{},"        headers={\n",[277,487,489],{"class":279,"line":488},31,[277,490,491],{},"            \"authorization\": f\"Bearer {token}\",\n",[277,493,495],{"class":279,"line":494},32,[277,496,497],{},"            \"content-type\": \"application\u002Fjson\",\n",[277,499,501],{"class":279,"line":500},33,[277,502,503],{},"        },\n",[277,505,507],{"class":279,"line":506},34,[277,508,509],{},"    )\n",[277,511,513],{"class":279,"line":512},35,[277,514,515],{},"    with urlopen(request, timeout=30) as response:\n",[277,517,519],{"class":279,"line":518},36,[277,520,521],{},"        raw_body = response.read().decode(\"utf-8\")\n",[277,523,525],{"class":279,"line":524},37,[277,526,527],{},"        return json.loads(raw_body) if raw_body else None\n",[277,529,531],{"class":279,"line":530},38,[277,532,323],{"emptyLinePlaceholder":322},[277,534,536],{"class":279,"line":535},39,[277,537,323],{"emptyLinePlaceholder":322},[277,539,541],{"class":279,"line":540},40,[277,542,543],{},"workspace_key = required_env(\"NEUTRON_WORKSPACE_API_KEY\")\n",[277,545,547],{"class":279,"line":546},41,[277,548,549],{},"profiles = [\n",[277,551,553],{"class":279,"line":552},42,[277,554,555],{},"    {\n",[277,557,559],{"class":279,"line":558},43,[277,560,561],{},"        \"nucleusId\": \"product-knowledge-global\",\n",[277,563,565],{"class":279,"line":564},44,[277,566,567],{},"        \"name\": \"Global product knowledge\",\n",[277,569,571],{"class":279,"line":570},45,[277,572,573],{},"        \"placement\": {\n",[277,575,577],{"class":279,"line":576},46,[277,578,579],{},"            \"mode\": \"global\",\n",[277,581,583],{"class":279,"line":582},47,[277,584,585],{},"            \"guarantee\": \"none\",\n",[277,587,589],{"class":279,"line":588},48,[277,590,591],{},"            \"notes\": [\"Approved global knowledge; no jurisdictional storage guarantee.\"],\n",[277,593,595],{"class":279,"line":594},49,[277,596,503],{},[277,598,600],{"class":279,"line":599},50,[277,601,602],{},"    },\n",[277,604,606],{"class":279,"line":605},51,[277,607,555],{},[277,609,611],{"class":279,"line":610},52,[277,612,613],{},"        \"nucleusId\": \"support-operations-weur\",\n",[277,615,617],{"class":279,"line":616},53,[277,618,619],{},"        \"name\": \"Western Europe support operations\",\n",[277,621,623],{"class":279,"line":622},54,[277,624,573],{},[277,626,628],{"class":279,"line":627},55,[277,629,630],{},"            \"mode\": \"regional\",\n",[277,632,634],{"class":279,"line":633},56,[277,635,636],{},"            \"regionHint\": \"weur\",\n",[277,638,640],{"class":279,"line":639},57,[277,641,642],{},"            \"r2LocationHint\": \"weur\",\n",[277,644,646],{"class":279,"line":645},58,[277,647,648],{},"            \"guarantee\": \"best_effort_regional\",\n",[277,650,652],{"class":279,"line":651},59,[277,653,654],{},"            \"notes\": [\"Latency preference only; not a legal residency boundary.\"],\n",[277,656,658],{"class":279,"line":657},60,[277,659,503],{},[277,661,663],{"class":279,"line":662},61,[277,664,602],{},[277,666,668],{"class":279,"line":667},62,[277,669,555],{},[277,671,673],{"class":279,"line":672},63,[277,674,675],{},"        \"nucleusId\": \"regulated-cases-eu\",\n",[277,677,679],{"class":279,"line":678},64,[277,680,681],{},"        \"name\": \"EU regulated case memory\",\n",[277,683,685],{"class":279,"line":684},65,[277,686,573],{},[277,688,690],{"class":279,"line":689},66,[277,691,692],{},"            \"mode\": \"jurisdictional\",\n",[277,694,696],{"class":279,"line":695},67,[277,697,698],{},"            \"jurisdiction\": \"eu\",\n",[277,700,702],{"class":279,"line":701},68,[277,703,704],{},"            \"regionalServicesRequired\": True,\n",[277,706,708],{"class":279,"line":707},69,[277,709,710],{},"            \"metadataBoundaryRequired\": True,\n",[277,712,714],{"class":279,"line":713},70,[277,715,716],{},"            \"geoKeyManagerRequired\": False,\n",[277,718,720],{"class":279,"line":719},71,[277,721,722],{},"            \"guarantee\": \"jurisdictional_storage\",\n",[277,724,726],{"class":279,"line":725},72,[277,727,728],{},"            \"notes\": [\n",[277,730,732],{"class":279,"line":731},73,[277,733,734],{},"                \"Requires the EU Durable Object jurisdiction and matching EU archive binding.\",\n",[277,736,738],{"class":279,"line":737},74,[277,739,740],{},"                \"Processing, logs, metadata, keys, retention, and contracts require separate verification.\",\n",[277,742,744],{"class":279,"line":743},75,[277,745,746],{},"            ],\n",[277,748,750],{"class":279,"line":749},76,[277,751,503],{},[277,753,755],{"class":279,"line":754},77,[277,756,602],{},[277,758,760],{"class":279,"line":759},78,[277,761,762],{},"]\n",[277,764,766],{"class":279,"line":765},79,[277,767,323],{"emptyLinePlaceholder":322},[277,769,771],{"class":279,"line":770},80,[277,772,773],{},"for profile in profiles:\n",[277,775,777],{"class":279,"line":776},81,[277,778,779],{},"    neutron_request(workspace_key, \"POST\", \"\u002Fv1\u002Fnuclei\", profile)\n",[263,781,782],{},"Handle an already-existing Nucleus as explicit deployment state. Do not retry creation with a different placement profile.",[302,784,786],{"id":785},"build-the-memory-router","Build the memory router",[267,788,790],{"className":308,"code":789,"language":284,"meta":272,"style":272},"from neutron_ai import NeutronAIClient\n\n\nglobal_memory = NeutronAIClient(\n    base_url=API_URL,\n    token=required_env(\"NEUTRON_GLOBAL_TOKEN\"),\n    nucleus_id=\"product-knowledge-global\",\n)\nwestern_europe_memory = NeutronAIClient(\n    base_url=API_URL,\n    token=required_env(\"NEUTRON_WEUR_TOKEN\"),\n    nucleus_id=\"support-operations-weur\",\n)\neu_regulated_memory = NeutronAIClient(\n    base_url=API_URL,\n    token=required_env(\"NEUTRON_EU_TOKEN\"),\n    nucleus_id=\"regulated-cases-eu\",\n)\n\n\ndef store_global_product_knowledge(text: str) -> Any:\n    return global_memory.remember({\n        \"scopeId\": \"kb:approved-products\",\n        \"type\": \"knowledge\",\n        \"privacyClass\": \"public\",\n        \"text\": text,\n    })\n\n\ndef store_western_europe_support_lesson(text: str) -> Any:\n    return western_europe_memory.remember({\n        \"scopeId\": \"history:support-resolutions\",\n        \"type\": \"tool_lesson\",\n        \"privacyClass\": \"tenant\",\n        \"text\": text,\n    })\n\n\ndef store_eu_regulated_case(case_id: str, minimized_summary: str) -> Any:\n    return eu_regulated_memory.remember({\n        \"scopeId\": f\"case:{case_id}\",\n        \"type\": \"experience\",\n        \"privacyClass\": \"user_private\",\n        \"text\": minimized_summary,\n        \"metadata\": {\n            \"dataClass\": \"eu-regulated-case\",\n            \"source\": \"approved-case-summary\",\n        },\n    })\n",[274,791,792,797,801,805,810,815,820,825,830,835,839,844,849,853,858,862,867,872,876,880,884,889,894,899,904,909,914,919,923,927,932,937,942,947,952,956,960,964,968,973,978,983,988,993,998,1003,1008,1013,1017],{"__ignoreMap":272},[277,793,794],{"class":279,"line":280},[277,795,796],{},"from neutron_ai import NeutronAIClient\n",[277,798,799],{"class":279,"line":319},[277,800,323],{"emptyLinePlaceholder":322},[277,802,803],{"class":279,"line":326},[277,804,323],{"emptyLinePlaceholder":322},[277,806,807],{"class":279,"line":332},[277,808,809],{},"global_memory = NeutronAIClient(\n",[277,811,812],{"class":279,"line":338},[277,813,814],{},"    base_url=API_URL,\n",[277,816,817],{"class":279,"line":344},[277,818,819],{},"    token=required_env(\"NEUTRON_GLOBAL_TOKEN\"),\n",[277,821,822],{"class":279,"line":350},[277,823,824],{},"    nucleus_id=\"product-knowledge-global\",\n",[277,826,827],{"class":279,"line":355},[277,828,829],{},")\n",[277,831,832],{"class":279,"line":360},[277,833,834],{},"western_europe_memory = NeutronAIClient(\n",[277,836,837],{"class":279,"line":366},[277,838,814],{},[277,840,841],{"class":279,"line":372},[277,842,843],{},"    token=required_env(\"NEUTRON_WEUR_TOKEN\"),\n",[277,845,846],{"class":279,"line":378},[277,847,848],{},"    nucleus_id=\"support-operations-weur\",\n",[277,850,851],{"class":279,"line":384},[277,852,829],{},[277,854,855],{"class":279,"line":390},[277,856,857],{},"eu_regulated_memory = NeutronAIClient(\n",[277,859,860],{"class":279,"line":395},[277,861,814],{},[277,863,864],{"class":279,"line":400},[277,865,866],{},"    token=required_env(\"NEUTRON_EU_TOKEN\"),\n",[277,868,869],{"class":279,"line":406},[277,870,871],{},"    nucleus_id=\"regulated-cases-eu\",\n",[277,873,874],{"class":279,"line":411},[277,875,829],{},[277,877,878],{"class":279,"line":416},[277,879,323],{"emptyLinePlaceholder":322},[277,881,882],{"class":279,"line":422},[277,883,323],{"emptyLinePlaceholder":322},[277,885,886],{"class":279,"line":428},[277,887,888],{},"def store_global_product_knowledge(text: str) -> Any:\n",[277,890,891],{"class":279,"line":434},[277,892,893],{},"    return global_memory.remember({\n",[277,895,896],{"class":279,"line":440},[277,897,898],{},"        \"scopeId\": \"kb:approved-products\",\n",[277,900,901],{"class":279,"line":446},[277,902,903],{},"        \"type\": \"knowledge\",\n",[277,905,906],{"class":279,"line":452},[277,907,908],{},"        \"privacyClass\": \"public\",\n",[277,910,911],{"class":279,"line":458},[277,912,913],{},"        \"text\": text,\n",[277,915,916],{"class":279,"line":464},[277,917,918],{},"    })\n",[277,920,921],{"class":279,"line":470},[277,922,323],{"emptyLinePlaceholder":322},[277,924,925],{"class":279,"line":476},[277,926,323],{"emptyLinePlaceholder":322},[277,928,929],{"class":279,"line":482},[277,930,931],{},"def store_western_europe_support_lesson(text: str) -> Any:\n",[277,933,934],{"class":279,"line":488},[277,935,936],{},"    return western_europe_memory.remember({\n",[277,938,939],{"class":279,"line":494},[277,940,941],{},"        \"scopeId\": \"history:support-resolutions\",\n",[277,943,944],{"class":279,"line":500},[277,945,946],{},"        \"type\": \"tool_lesson\",\n",[277,948,949],{"class":279,"line":506},[277,950,951],{},"        \"privacyClass\": \"tenant\",\n",[277,953,954],{"class":279,"line":512},[277,955,913],{},[277,957,958],{"class":279,"line":518},[277,959,918],{},[277,961,962],{"class":279,"line":524},[277,963,323],{"emptyLinePlaceholder":322},[277,965,966],{"class":279,"line":530},[277,967,323],{"emptyLinePlaceholder":322},[277,969,970],{"class":279,"line":535},[277,971,972],{},"def store_eu_regulated_case(case_id: str, minimized_summary: str) -> Any:\n",[277,974,975],{"class":279,"line":540},[277,976,977],{},"    return eu_regulated_memory.remember({\n",[277,979,980],{"class":279,"line":546},[277,981,982],{},"        \"scopeId\": f\"case:{case_id}\",\n",[277,984,985],{"class":279,"line":552},[277,986,987],{},"        \"type\": \"experience\",\n",[277,989,990],{"class":279,"line":558},[277,991,992],{},"        \"privacyClass\": \"user_private\",\n",[277,994,995],{"class":279,"line":564},[277,996,997],{},"        \"text\": minimized_summary,\n",[277,999,1000],{"class":279,"line":570},[277,1001,1002],{},"        \"metadata\": {\n",[277,1004,1005],{"class":279,"line":576},[277,1006,1007],{},"            \"dataClass\": \"eu-regulated-case\",\n",[277,1009,1010],{"class":279,"line":582},[277,1011,1012],{},"            \"source\": \"approved-case-summary\",\n",[277,1014,1015],{"class":279,"line":588},[277,1016,503],{},[277,1018,1019],{"class":279,"line":594},[277,1020,918],{},[263,1022,1023],{},"Keep these functions behind trusted classification policy. Do not let untrusted callers supply a Nucleus ID or arbitrary scope.",[302,1025,1027],{"id":1026},"recall-eu-case-context","Recall EU case context",[267,1029,1031],{"className":308,"code":1030,"language":284,"meta":272,"style":272},"eu_case_context = eu_regulated_memory.agent_context({\n    \"scopeIds\": [\n        \"case:case-4821\",\n        \"policy:eu-case-handling\",\n        \"kb:approved-products\",\n    ],\n    \"agentId\": \"agent:eu-case-support\",\n    \"task\": \"Prepare the next authorized case-support step.\",\n    \"privacyClasses\": [\"tenant\", \"user_private\"],\n    \"tokenBudget\": 1_200,\n    \"cachePolicy\": {\n        \"mode\": \"prefer_cache\",\n        \"keyMode\": \"intent_profile\",\n        \"ttlSeconds\": 120,\n        \"includeDynamicRag\": True,\n        \"allowSensitive\": False,\n    },\n})\n",[274,1032,1033,1038,1043,1048,1053,1058,1063,1068,1073,1078,1083,1088,1093,1098,1103,1108,1113,1117],{"__ignoreMap":272},[277,1034,1035],{"class":279,"line":280},[277,1036,1037],{},"eu_case_context = eu_regulated_memory.agent_context({\n",[277,1039,1040],{"class":279,"line":319},[277,1041,1042],{},"    \"scopeIds\": [\n",[277,1044,1045],{"class":279,"line":326},[277,1046,1047],{},"        \"case:case-4821\",\n",[277,1049,1050],{"class":279,"line":332},[277,1051,1052],{},"        \"policy:eu-case-handling\",\n",[277,1054,1055],{"class":279,"line":338},[277,1056,1057],{},"        \"kb:approved-products\",\n",[277,1059,1060],{"class":279,"line":344},[277,1061,1062],{},"    ],\n",[277,1064,1065],{"class":279,"line":350},[277,1066,1067],{},"    \"agentId\": \"agent:eu-case-support\",\n",[277,1069,1070],{"class":279,"line":355},[277,1071,1072],{},"    \"task\": \"Prepare the next authorized case-support step.\",\n",[277,1074,1075],{"class":279,"line":360},[277,1076,1077],{},"    \"privacyClasses\": [\"tenant\", \"user_private\"],\n",[277,1079,1080],{"class":279,"line":366},[277,1081,1082],{},"    \"tokenBudget\": 1_200,\n",[277,1084,1085],{"class":279,"line":372},[277,1086,1087],{},"    \"cachePolicy\": {\n",[277,1089,1090],{"class":279,"line":378},[277,1091,1092],{},"        \"mode\": \"prefer_cache\",\n",[277,1094,1095],{"class":279,"line":384},[277,1096,1097],{},"        \"keyMode\": \"intent_profile\",\n",[277,1099,1100],{"class":279,"line":390},[277,1101,1102],{},"        \"ttlSeconds\": 120,\n",[277,1104,1105],{"class":279,"line":395},[277,1106,1107],{},"        \"includeDynamicRag\": True,\n",[277,1109,1110],{"class":279,"line":400},[277,1111,1112],{},"        \"allowSensitive\": False,\n",[277,1114,1115],{"class":279,"line":406},[277,1116,602],{},[277,1118,1119],{"class":279,"line":411},[277,1120,1121],{},"})\n",[263,1123,1124,1125,1128],{},"All requested scopes resolve inside ",[274,1126,1127],{},"regulated-cases-eu","; the call cannot cross into another Nucleus.",[302,1130,1132],{"id":1131},"verify-jurisdictional-readiness","Verify jurisdictional readiness",[267,1134,1136],{"className":308,"code":1135,"language":284,"meta":272,"style":272},"eu_token = required_env(\"NEUTRON_EU_TOKEN\")\nplacement = neutron_request(\n    eu_token,\n    \"GET\",\n    \"\u002Fv1\u002Fnuclei\u002Fregulated-cases-eu\u002Fplacement\",\n)\nhealth = neutron_request(\n    eu_token,\n    \"GET\",\n    \"\u002Fv1\u002Fnuclei\u002Fregulated-cases-eu\u002Fhealth\",\n)\n\nblocking_warnings = {\n    \"jurisdictional_do_subnamespace_unavailable\",\n    \"jurisdictional_archive_bucket_missing\",\n}\nactive_warnings = set(health.get(\"warnings\", []))\nif active_warnings & blocking_warnings:\n    raise RuntimeError(f\"EU Nucleus is not ready: {sorted(active_warnings)}\")\n",[274,1137,1138,1143,1148,1153,1158,1163,1167,1172,1176,1180,1185,1189,1193,1198,1203,1208,1213,1218,1223],{"__ignoreMap":272},[277,1139,1140],{"class":279,"line":280},[277,1141,1142],{},"eu_token = required_env(\"NEUTRON_EU_TOKEN\")\n",[277,1144,1145],{"class":279,"line":319},[277,1146,1147],{},"placement = neutron_request(\n",[277,1149,1150],{"class":279,"line":326},[277,1151,1152],{},"    eu_token,\n",[277,1154,1155],{"class":279,"line":332},[277,1156,1157],{},"    \"GET\",\n",[277,1159,1160],{"class":279,"line":338},[277,1161,1162],{},"    \"\u002Fv1\u002Fnuclei\u002Fregulated-cases-eu\u002Fplacement\",\n",[277,1164,1165],{"class":279,"line":344},[277,1166,829],{},[277,1168,1169],{"class":279,"line":350},[277,1170,1171],{},"health = neutron_request(\n",[277,1173,1174],{"class":279,"line":355},[277,1175,1152],{},[277,1177,1178],{"class":279,"line":360},[277,1179,1157],{},[277,1181,1182],{"class":279,"line":366},[277,1183,1184],{},"    \"\u002Fv1\u002Fnuclei\u002Fregulated-cases-eu\u002Fhealth\",\n",[277,1186,1187],{"class":279,"line":372},[277,1188,829],{},[277,1190,1191],{"class":279,"line":378},[277,1192,323],{"emptyLinePlaceholder":322},[277,1194,1195],{"class":279,"line":384},[277,1196,1197],{},"blocking_warnings = {\n",[277,1199,1200],{"class":279,"line":390},[277,1201,1202],{},"    \"jurisdictional_do_subnamespace_unavailable\",\n",[277,1204,1205],{"class":279,"line":395},[277,1206,1207],{},"    \"jurisdictional_archive_bucket_missing\",\n",[277,1209,1210],{"class":279,"line":400},[277,1211,1212],{},"}\n",[277,1214,1215],{"class":279,"line":406},[277,1216,1217],{},"active_warnings = set(health.get(\"warnings\", []))\n",[277,1219,1220],{"class":279,"line":411},[277,1221,1222],{},"if active_warnings & blocking_warnings:\n",[277,1224,1225],{"class":279,"line":416},[277,1226,1227],{},"    raise RuntimeError(f\"EU Nucleus is not ready: {sorted(active_warnings)}\")\n",[263,1229,1230,1231,1235],{},"Return to the ",[1232,1233,1234],"a",{"href":77},"placement architecture and production checklist",".",[1237,1238,1239],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":272,"searchDepth":319,"depth":319,"links":1241},[1242,1243,1244,1245],{"id":304,"depth":319,"text":305},{"id":785,"depth":319,"text":786},{"id":1026,"depth":319,"text":1027},{"id":1131,"depth":319,"text":1132},"Implement global, regional, and jurisdictional Neutron memory with the Python SDK.","md",{},{"title":86,"description":1246},"-DtMb6BhlKEHi-JLE2To85hgdxyP851wyT5-aKB7Z4U",[1252,1253],{"title":82,"path":83,"stem":84,"children":-1},{"title":90,"path":91,"stem":92,"children":-1},1786883757467]