[{"data":1,"prerenderedAt":464},["ShallowReactive",2],{"content-cms-page-en-index":3,"en-cms-page-index":-1},{"id":4,"title":5,"body":6,"description":7,"extension":8,"meta":9,"navigation":11,"path":12,"sections":13,"seo":461,"stem":462,"__hash__":463},"cms\u002Fen\u002Findex.yml","SGP32.ai — Global IoT eSIM operations, run by an AI Agent",null,"The operations control plane for SGP.32 IoT eSIMs. Devices, fleets, profiles, OTA, audit — every action reachable as REST, MCP, or a chat session with the Agent.","yml",{"pageHeaderTransparent":10},false,true,"\u002Fen",[14,35,349,380,403,435,454],{"type":15,"themeMode":16,"orientation":17,"separator":10,"title":18,"description":19,"linksClass":20,"links":21},"hero","gradient-animate","vertical","\u003Cspan class='text-highlighted'>IoT platform\u003C\u002Fspan>\u003Cbr>\u003Cspan class='solvegio-gradient'>run by AI Agent\u003C\u002Fspan>","SIMs, devices, fleets, policies, OTA, firmware, carriers, audit - one click away, or one ask to the Agent.","pb-12",[22,29],{"label":23,"to":24,"icon":25,"trailing":11,"size":26,"color":27,"variant":28},"Open the console","\u002Fapp","i-lucide-arrow-up-right","xl","primary","solid",{"label":30,"to":31,"icon":32,"size":26,"color":33,"variant":34},"Talk to us","\u002Fcontact","i-lucide-mail","neutral","outline",{"type":36,"id":37,"themeMode":38,"separator":11,"headline":39,"title":44,"description":45,"links":46,"demo":49},"section","agent-demo","default",{"type":40,"variant":41,"color":27,"label":42,"icon":43},"badge","subtle","Live agent","i-lucide-sparkles","\u003Cspan class='text-highlighted'>Watch the agent\u003C\u002Fspan> \u003Cspan class='solvegio-gradient'>drive the console.\u003C\u002Fspan>","Three real operations, played out end-to-end. The Agent on the left, the console on the right — same control plane, same data model, same audit log. The tool calls aren't decoration; they're the thing actually running.",[47],{"label":23,"to":24,"icon":25,"trailing":11,"color":27,"variant":28,"size":48},"lg",{"component":50,"autoplay":11,"loop":11,"defaultSceneId":51,"scenes":52},"agent-ops-theater","bulk-onboard",[53,164,236],{"id":51,"title":54,"icon":55,"summary":56,"initialConsole":57,"beats":64},"Onboard 500 vehicles","i-lucide-car","OEM end-of-line manifest lands at 14:02. Agent validates, bulk-provisions, and you watch the fleet fill in real time.",{"view":58,"route":59,"fleet":60,"total":61,"rows":62,"status":63},"devices","\u002Fapp\u002Fdevices?fleet=fleet_eu_de_consumer","fleet_eu_de_consumer · DE consumer",500,[],"Fleet ready. Waiting for manifest.",[65,70,75,82,88,108,128,153,159],{"duration":66,"chat":67},1200,{"role":68,"text":69},"user","End-of-line manifest just landed in our drop bucket — 500 vehicles for the DE rollout. Get them provisioned and bonded to the DE consumer profile.",{"duration":71,"chat":72},1600,{"role":73,"text":74},"reasoning","Validate the manifest first (EID Luhn + duplicates), then bulk-register with an idempotency key tied to the build id. No side-effects until validation passes.",{"duration":76,"chat":77},1400,{"role":78,"name":79,"arguments":80},"tool_call","validate_device_manifest",{"source":81,"expected_rows":61},"s3:\u002F\u002Foem-eol\u002F2026-05-12\u002Fbatch-0042.csv",{"duration":76,"chat":83},{"role":84,"content":85},"tool_result",{"accepted":61,"rejected":86,"duplicates":86,"manifest_sha256":87},0,"9af7…b2c1",{"duration":76,"chat":89,"console":94},{"role":78,"name":90,"arguments":91},"bulk_register_devices",{"manifest":81,"fleet":92,"idempotency_key":93,"auto_provision":11},"fleet_eu_de_consumer","build-eol-2026-05-12-0042",{"view":58,"route":95,"fleet":60,"total":61,"status":96,"rows":97},"\u002Fapp\u002Fdevices?fleet=fleet_eu_de_consumer&job=job_01HX3Q…F4","Provisioning…",[98,102,105],{"code":99,"eid":100,"status":101},"WBA5A7C5XKB100001","8904903…0001","provisioning",{"code":103,"eid":104,"status":101},"WBA5A7C5XKB100002","8904903…0002",{"code":106,"eid":107,"status":101},"WBA5A7C5XKB100003","8904903…0003",{"duration":109,"console":110},900,{"view":58,"route":95,"fleet":60,"total":61,"status":96,"rows":111},[112,114,115,116,119,122,125],{"code":99,"eid":100,"status":113},"active",{"code":103,"eid":104,"status":113},{"code":106,"eid":107,"status":101},{"code":117,"eid":118,"status":101},"WBA5A7C5XKB100004","8904903…0004",{"code":120,"eid":121,"status":101},"WBA5A7C5XKB100005","8904903…0005",{"code":123,"eid":124,"status":101},"WBA5A7C5XKB100006","8904903…0006",{"code":126,"eid":127,"status":101},"WBA5A7C5XKB100007","8904903…0007",{"duration":109,"console":129},{"view":58,"route":95,"fleet":60,"total":61,"status":96,"rows":130},[131,132,133,134,135,136,137,138,141,144,147,150],{"code":99,"eid":100,"status":113},{"code":103,"eid":104,"status":113},{"code":106,"eid":107,"status":113},{"code":117,"eid":118,"status":113},{"code":120,"eid":121,"status":113},{"code":123,"eid":124,"status":113},{"code":126,"eid":127,"status":101},{"code":139,"eid":140,"status":101},"WBA5A7C5XKB100008","8904903…0008",{"code":142,"eid":143,"status":101},"WBA5A7C5XKB100009","8904903…0009",{"code":145,"eid":146,"status":101},"WBA5A7C5XKB100010","8904903…0010",{"code":148,"eid":149,"status":101},"WBA5A7C5XKB100011","8904903…0011",{"code":151,"eid":152,"status":101},"WBA5A7C5XKB100012","8904903…0012",{"duration":76,"chat":154},{"role":84,"content":155},{"job_id":156,"status":157,"provisioned":61,"audit_event":158},"job_01HX3Q…F4","completed","evt_01HX3Q…F5",{"duration":160,"chat":161},1800,{"role":162,"text":163},"assistant","Done. 500 vehicles registered, all 500 profiles bound, zero rejects. One signed audit event covers the whole batch — at \u003Cstrong>\u002Fapp\u002Faudit\u002Fevt_01HX3Q…F5\u003C\u002Fstrong> if procurement needs evidence.",{"id":165,"title":166,"icon":167,"summary":168,"initialConsole":169,"beats":175},"ota-canary","Ship firmware v3.2.1","i-lucide-rocket","CI drops a new firmware bundle. Agent stages a canary, monitors the error rate, widens — without touching the bucket.",{"view":170,"route":171,"campaignName":172,"wavePercent":86,"devicesInWave":86,"errorRate":86,"rollbackThreshold":173,"status":174},"ota","\u002Fapp\u002Fcampaigns","(no active campaign)",0.01,"Pick an artefact to start a wave.",[176,179,182,188,194,209,215,222,228,233],{"duration":66,"chat":177},{"role":68,"text":178},"CI just pushed firmware v3.2.1 to the bucket. Roll it out to fleet_eu_iot — canary at 5%, rollback if error rate goes above 1%, bandwidth cap 4 MB\u002Fs per device.",{"duration":71,"chat":180},{"role":73,"text":181},"Index the artefact (signature check), then create the campaign with a staged wave policy and a per-device bandwidth cap. The Agent only widens if BOTH time AND error gates pass.",{"duration":76,"chat":183},{"role":78,"name":184,"arguments":185},"index_artefact",{"source":186,"category":187},"s3:\u002F\u002Fcustomer-fw\u002Fiot\u002Fv3.2.1\u002Ffirmware.bin.sig","firmware",{"duration":66,"chat":189},{"role":84,"content":190},{"artefact_id":191,"sha256":192,"signature":193},"art_01HX3R…01","c3d8…7e91","verified",{"duration":76,"chat":195,"console":203},{"role":78,"name":196,"arguments":197},"create_campaign",{"name":198,"target_fleet":199,"policy":200},"fw-v3.2.1-eu-iot","fleet_eu_iot",{"wave_strategy":201,"canary_percent":202,"rollback_threshold":173},"staged",5,{"view":170,"route":204,"campaignName":205,"wavePercent":202,"devicesInWave":206,"errorRate":207,"rollbackThreshold":173,"status":208},"\u002Fapp\u002Fcampaigns\u002Fota_v321_eu","fw-v3.2.1-eu-iot · canary",624,0.001,"Canary live. Watching for 30 min.",{"duration":76,"console":210},{"view":170,"route":204,"campaignName":205,"wavePercent":211,"devicesInWave":212,"errorRate":213,"rollbackThreshold":173,"status":214},10,1248,0.002,"Widening — error rate well under threshold.",{"duration":76,"console":216},{"view":170,"route":204,"campaignName":217,"wavePercent":218,"devicesInWave":219,"errorRate":220,"rollbackThreshold":173,"status":221},"fw-v3.2.1-eu-iot · wave 2",18,2246,0.003,"Widening — rollback armed.",{"duration":76,"console":223},{"view":170,"route":204,"campaignName":217,"wavePercent":224,"devicesInWave":225,"errorRate":226,"rollbackThreshold":173,"status":227},25,3120,0.004,"25% reached. Holding for 30 min.",{"duration":76,"chat":229},{"role":84,"content":230},{"campaign_id":231,"wave":232,"devices_in_wave":225,"error_rate":226},"ota_v321_eu","5% → 25%",{"duration":160,"chat":234},{"role":162,"text":235},"Canary is healthy — 3,120 devices, error rate 0.4% against a 1% rollback. I'll widen again in 30 min if it holds. Watch at \u003Cstrong>\u002Fapp\u002Fcampaigns\u002Fota_v321_eu\u003C\u002Fstrong>; I'll page only if the envelope fires.",{"id":237,"title":238,"icon":239,"summary":240,"initialConsole":241,"beats":246},"audit-investigate","Investigate an audit spike","i-lucide-shield-check","Compliance flags a spike in policy edits overnight. Agent pulls the chain, identifies the actor, exports a signed bundle.",{"view":242,"route":243,"events":244,"status":245},"audit","\u002Fapp\u002Faudit",[],"Awaiting query.",[247,250,253,275,291,313,324,340,345],{"duration":66,"chat":248},{"role":68,"text":249},"Compliance flagged a spike in policy.* edits between 02:00 and 04:00 last night. Who did what, and can you get me a signed bundle for the ticket?",{"duration":76,"chat":251},{"role":73,"text":252},"Query audit for that window with type prefix policy.*. Include actor and chain position so the reviewer can verify offline.",{"duration":76,"chat":254,"console":260},{"role":78,"name":255,"arguments":256},"search_audit",{"type_prefix":257,"from":258,"to":259},"policy.","2026-05-11T02:00:00Z","2026-05-11T04:00:00Z",{"view":242,"route":261,"status":262,"events":263},"\u002Fapp\u002Faudit?type=policy.*&from=02:00&to=04:00","Streaming results…",[264,271],{"id":265,"type":266,"actor":267,"actorType":268,"subject":269,"ts":270},"evt_01HX2J…01","policy.updated","ops@customer.example","human","pol_eu_consumer_v11 → v12","02:14:22Z",{"id":272,"type":266,"actor":267,"actorType":268,"subject":273,"ts":274},"evt_01HX2J…02","pol_eu_consumer_v12 (region_cap → 8GB)","02:16:08Z",{"duration":109,"console":276},{"view":242,"route":261,"status":262,"events":277},[278,279,280,287],{"id":265,"type":266,"actor":267,"actorType":268,"subject":269,"ts":270},{"id":272,"type":266,"actor":267,"actorType":268,"subject":273,"ts":274},{"id":281,"type":282,"actor":283,"actorType":284,"subject":285,"ts":286},"evt_01HX2J…03","policy.applied","scheduler","system","fleet_eu_iot bonded to pol_eu_consumer_v12","02:17:51Z",{"id":288,"type":266,"actor":267,"actorType":268,"subject":289,"ts":290},"evt_01HX2J…04","pol_eu_industrial_v04 (roaming → allow:eu,uk)","02:34:11Z",{"duration":109,"console":292},{"view":242,"route":261,"status":293,"events":294},"47 events, 1 actor.",[295,296,297,298,299,303,309],{"id":265,"type":266,"actor":267,"actorType":268,"subject":269,"ts":270},{"id":272,"type":266,"actor":267,"actorType":268,"subject":273,"ts":274},{"id":281,"type":282,"actor":283,"actorType":284,"subject":285,"ts":286},{"id":288,"type":266,"actor":267,"actorType":268,"subject":289,"ts":290},{"id":300,"type":282,"actor":283,"actorType":284,"subject":301,"ts":302},"evt_01HX2J…05","fleet_eu_industrial bonded to pol_eu_industrial_v04","02:35:09Z",{"id":304,"type":305,"actor":306,"actorType":284,"subject":307,"ts":308},"evt_01HX2J…06","policy.signed","audit-chain","chain head advanced (h=88204)","02:35:10Z",{"id":310,"type":266,"actor":267,"actorType":268,"subject":311,"ts":312},"evt_01HX2J…07","pol_eu_iot_v07 (re-version, no semantic change)","03:02:44Z",{"duration":76,"chat":314},{"role":84,"content":315},{"events":316,"actors":317,"policies_touched":319,"summary":323},47,[318],"ops@customer.example (human)",[320,321,322],"pol_eu_consumer_v11","pol_eu_consumer_v12","pol_eu_industrial_v04","Planned re-version after EU pricing change. Chain intact.",{"duration":76,"chat":325,"console":329},{"role":78,"name":326,"arguments":327},"export_audit_bundle",{"format":328,"include_chain_proof":11},"pdf+json",{"view":242,"route":330,"status":331,"events":332},"\u002Fapp\u002Faudit\u002Fbundles\u002Fbndl_01HX3S…77","Bundle ready — 47 events, signed, chain proof attached.",[333,334,335,336,337,338,339],{"id":265,"type":266,"actor":267,"actorType":268,"subject":269,"ts":270},{"id":272,"type":266,"actor":267,"actorType":268,"subject":273,"ts":274},{"id":281,"type":282,"actor":283,"actorType":284,"subject":285,"ts":286},{"id":288,"type":266,"actor":267,"actorType":268,"subject":289,"ts":290},{"id":300,"type":282,"actor":283,"actorType":284,"subject":301,"ts":302},{"id":304,"type":305,"actor":306,"actorType":284,"subject":307,"ts":308},{"id":310,"type":266,"actor":267,"actorType":268,"subject":311,"ts":312},{"duration":76,"chat":341},{"role":84,"content":342},{"bundle_id":343,"events":316,"signature":344},"bndl_01HX3S…77","sha256:f4a2…9c10",{"duration":346,"chat":347},2000,{"role":162,"text":348},"Not an incident — planned re-versioning for the EU pricing change. One actor, 47 events, three policies touched, chain head verified. Bundle's at \u003Cstrong>\u002Fapp\u002Faudit\u002Fbundles\u002Fbndl_01HX3S…77\u003C\u002Fstrong> — drag it into the compliance ticket.",{"type":36,"id":350,"themeMode":351,"separator":11,"headline":352,"title":356,"description":357,"cards":358},"surface","muted",{"type":40,"variant":41,"color":353,"label":354,"icon":355},"secondary","The shape of the platform","i-lucide-layers","\u003Cspan class='text-highlighted'>One control plane.\u003C\u002Fspan> \u003Cspan class='solvegio-gradient'>Every IoT eSIM motion.\u003C\u002Fspan>","Six surfaces, all reachable from the console, all reachable from the API, all reachable from the Agent. Same data model end-to-end.",[359,363,366,369,373,377],{"title":360,"description":361,"icon":362},"Devices","EID-keyed lifecycle. Register, provision, suspend, decommission — bulk-safe with idempotency, signed audit on every write.","i-lucide-cpu",{"title":364,"description":365,"icon":355},"Fleets & profiles","Group devices, bind to profile templates, rebind on demand. Bonding rules per fleet, plus arbitration when a carrier degrades.",{"title":367,"description":368,"icon":167},"OTA campaigns","Firmware, profile, config, recall rollouts. Canary, staged, all-at-once with rollback envelopes and per-device bandwidth caps.",{"title":370,"description":371,"icon":372},"Policies","Versioned, signed, evaluable. Per-fleet bonding, roaming, data-cap, and consent policies — all changes are diffable, replayable.","i-lucide-shield",{"title":374,"description":375,"icon":376},"Audit","Hash-chained, signed log. Every write produces a tamper-evident event with actor, scope, payload preview, and chain position.","i-lucide-file-check",{"title":378,"description":379,"icon":43},"AI Agent","Operator-grade chat surface. Same tools as the API, with reasoning visible, scopes enforced, and a login gate for execution.",{"type":36,"id":381,"themeMode":38,"separator":11,"headline":382,"title":385,"description":386,"cards":387},"why",{"type":40,"variant":41,"color":27,"label":383,"icon":384},"Why this, why now","i-lucide-target","\u003Cspan class='text-highlighted'>The first IoT eSIM platform\u003C\u002Fspan>\u003Cbr>\u003Cspan class='solvegio-gradient'>built around an agent, not a portal.\u003C\u002Fspan>","The IoT eSIM transition is a once-per-decade rebuild of the connectivity stack. We're using it to flatten the operator UX from twelve portals down to one — and to make every action a first-class API + MCP citizen, so customers can automate the work an SRE used to do.",[388,392,396,399],{"title":389,"description":390,"icon":391},"Agent-native, not agent-bolted-on","Every console action is also a tool the Agent can call. The chat surface isn't a wrapper around a portal — it's the same control plane the operator UI uses.","i-lucide-bot",{"title":393,"description":394,"icon":395},"SGP.32 native, by design","Built around the eIM model — no SMS, no physical SIM, no carrier-by-carrier integration backlog. Provisioning is one API call to any compliant SM-DP+.","i-lucide-sim-card",{"title":397,"description":398,"icon":239},"Audit-grade, open by default","Hash-chained audit, signed events, regulator-ready export bundles. Customers can verify the chain offline. No lock-in on the evidence trail.",{"title":400,"description":401,"icon":402},"Programmable surface","REST, MCP, and webhooks for every operation. Customers automate the bulk work; the Agent handles the long tail. Same actions, every surface.","i-lucide-code",{"type":36,"id":404,"themeMode":351,"separator":11,"headline":405,"title":409,"description":410,"cards":411},"industries",{"type":40,"variant":41,"color":406,"label":407,"icon":408},"info","Industries","i-lucide-globe","\u003Cspan class='text-highlighted'>One platform.\u003C\u002Fspan> \u003Cspan class='solvegio-gradient'>Six vocabularies.\u003C\u002Fspan>","The data model is identical across industries; the console labels and policy templates adapt. The \u002Fapp demo cycles between six tenant personas so a visitor sees the same screen relabel itself for their world.",[412,415,419,423,427,431],{"title":413,"description":414,"icon":55},"Automotive","VIN-keyed connected vehicles. eCall-mandated coverage, multi-region bonding, OEM end-of-line bulk provisioning.",{"title":416,"description":417,"icon":418},"Smart metering","Energy + water utilities. Long-life endpoints, narrowband-friendly policies, evidence-grade audit for regulators.","i-lucide-gauge",{"title":420,"description":421,"icon":422},"Medical devices","Infusion pumps, monitors, wearables. Strict change-control, recall semantics distinct from regular OTA, locked-down policies.","i-lucide-heart-pulse",{"title":424,"description":425,"icon":426},"Agriculture & environment","Field sensors, low-bandwidth telemetry. Roaming-by-default, cost-capped data plans, schedule-window-aware updates.","i-lucide-sprout",{"title":428,"description":429,"icon":430},"Logistics & telematics","Trailers, containers, asset trackers. Cross-border bonding, carrier arbitration, fleet-wide policy push.","i-lucide-truck",{"title":432,"description":433,"icon":434},"Industrial \u002F robotics","Factory-floor and mobile industrial endpoints. Deterministic OTA windows, signed firmware, audit-on-every-write.","i-lucide-factory",{"type":36,"id":436,"themeMode":38,"separator":11,"headline":437,"title":439,"description":440,"codeTabs":441},"programmable",{"type":40,"variant":41,"color":353,"label":400,"icon":438},"i-lucide-terminal","\u003Cspan class='text-highlighted'>Every action,\u003C\u002Fspan> \u003Cspan class='solvegio-gradient'>every surface.\u003C\u002Fspan>","What the operator clicks, the engineer can curl, and the Agent can call. The same provisioning operation, three ways.",{"defaultLang":442,"samples":443},"bash",[444,447,451],{"lang":442,"label":445,"code":446},"REST","curl -X POST https:\u002F\u002Fapi.sgp32.ai\u002Fv1\u002Fdevices \\\n  -H \"Authorization: Bearer $SGP32_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"Idempotency-Key: \u003Cuuid>\" \\\n  -d '{\n    \"eid\": \"89049032005009823400001234567890\",\n    \"fleet\": \"fleet_eu_de_consumer\",\n    \"tags\": [\"pilot\", \"de\"],\n    \"auto_provision\": true\n  }'\n",{"lang":448,"label":449,"code":450},"json","MCP tools\u002Fcall","{\n  \"method\": \"tools\u002Fcall\",\n  \"params\": {\n    \"name\": \"register_device\",\n    \"arguments\": {\n      \"eid\": \"89049032005009823400001234567890\",\n      \"fleet\": \"fleet_eu_de_consumer\",\n      \"tags\": [\"pilot\", \"de\"],\n      \"auto_provision\": true\n    }\n  }\n}\n",{"lang":442,"label":452,"code":453},"Webhook","# Subscribe to the lifecycle event your bulk-register will fire.\ncurl -X POST https:\u002F\u002Fapi.sgp32.ai\u002Fv1\u002Fwebhooks \\\n  -H \"Authorization: Bearer $SGP32_API_KEY\" \\\n  -d '{\n    \"endpoint\": \"https:\u002F\u002Fhooks.customer.example\u002Fsgp32\",\n    \"events\": [\"device.registered\", \"device.provisioned\"],\n    \"signing_key_id\": \"wh_eu_prod_01\"\n  }'\n",{"type":15,"themeMode":455,"orientation":17,"separator":10,"title":456,"description":457,"links":458},"gradient","See the \u003Cspan class='solvegio-gradient'>whole platform\u003C\u002Fspan> in five clicks.","The console demo runs against synthesised tenant data across automotive, smart-meter, medical, agriculture, logistics, and industrial. Toggle the persona at the top right; the entire surface relabels.",[459,460],{"label":23,"to":24,"icon":25,"trailing":11,"size":26,"color":27,"variant":28},{"label":30,"to":31,"icon":32,"size":26,"color":33,"variant":34},{"title":5,"description":7},"en\u002Findex","VqsidSA24BiVRtgdWEYEo2SH8MvUUQ5mTXTVKzxsr8w",1778641182910]