[{"data":1,"prerenderedAt":380},["ShallowReactive",2],{"navigation_docs":3,"-reference-security":134,"-reference-security-surround":377},[4,25,60,75,104],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting started",false,"\u002Fgetting-started","1.getting-started",[10,15,20],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"How it works","\u002Fgetting-started\u002Fhow-it-works","1.getting-started\u002F2.how-it-works","i-lucide-workflow",{"title":21,"path":22,"stem":23,"icon":24},"Quickstart","\u002Fgetting-started\u002Fquickstart","1.getting-started\u002F3.quickstart","i-lucide-rocket",{"title":26,"icon":6,"path":27,"stem":28,"children":29,"page":6},"Install on rented GPUs","\u002Finstall","2.install",[30,35,40,45,50,55],{"title":31,"path":32,"stem":33,"icon":34},"Overview","\u002Finstall\u002Foverview","2.install\u002F1.overview","i-lucide-map",{"title":36,"path":37,"stem":38,"icon":39},"Set up the ico host","\u002Finstall\u002Fico-host","2.install\u002F2.ico-host","i-lucide-database",{"title":41,"path":42,"stem":43,"icon":44},"Set up the GPU machines","\u002Finstall\u002Fgpu-machines","2.install\u002F3.gpu-machines","i-lucide-cpu",{"title":46,"path":47,"stem":48,"icon":49},"Send traffic through the gateway","\u002Finstall\u002Fsend-traffic","2.install\u002F4.send-traffic","i-lucide-route",{"title":51,"path":52,"stem":53,"icon":54},"Check the install","\u002Finstall\u002Fcheck","2.install\u002F5.check","i-lucide-circle-check",{"title":56,"path":57,"stem":58,"icon":59},"Install help","\u002Finstall\u002Finstall-help","2.install\u002F6.install-help","i-lucide-life-buoy",{"title":61,"icon":6,"path":62,"stem":63,"children":64,"page":6},"The report","\u002Freport","3.report",[65,70],{"title":66,"path":67,"stem":68,"icon":69},"Read the report","\u002Freport\u002Fread-the-report","3.report\u002F1.read-the-report","i-lucide-file-chart-column",{"title":71,"path":72,"stem":73,"icon":74},"How costs are counted","\u002Freport\u002Fhow-costs-are-counted","3.report\u002F2.how-costs-are-counted","i-lucide-calculator",{"title":76,"icon":6,"path":77,"stem":78,"children":79,"page":6},"The replay lab","\u002Freplay","4.replay",[80,84,89,94,99],{"title":31,"path":81,"stem":82,"icon":83},"\u002Freplay\u002Foverview","4.replay\u002F1.overview","i-lucide-flask-conical",{"title":85,"path":86,"stem":87,"icon":88},"Run a replay","\u002Freplay\u002Frun-a-replay","4.replay\u002F2.run-a-replay","i-lucide-play",{"title":90,"path":91,"stem":92,"icon":93},"Launchers","\u002Freplay\u002Flaunchers","4.replay\u002F3.launchers","i-lucide-power",{"title":95,"path":96,"stem":97,"icon":98},"Sweep files","\u002Freplay\u002Fsweep-file","4.replay\u002F4.sweep-file","i-lucide-list-checks",{"title":100,"path":101,"stem":102,"icon":103},"What a replay cannot tell you yet","\u002Freplay\u002Flimits","4.replay\u002F5.limits","i-lucide-triangle-alert",{"title":105,"icon":6,"path":106,"stem":107,"children":108,"page":6},"Reference","\u002Freference","5.reference",[109,114,119,124,129],{"title":110,"path":111,"stem":112,"icon":113},"Configuration","\u002Freference\u002Fconfiguration","5.reference\u002F1.configuration","i-lucide-settings",{"title":115,"path":116,"stem":117,"icon":118},"CLI","\u002Freference\u002Fcli","5.reference\u002F2.cli","i-lucide-square-terminal",{"title":120,"path":121,"stem":122,"icon":123},"Gateway","\u002Freference\u002Fgateway","5.reference\u002F3.gateway","i-lucide-split",{"title":125,"path":126,"stem":127,"icon":128},"Stored data","\u002Freference\u002Fdata","5.reference\u002F4.data","i-lucide-table",{"title":130,"path":131,"stem":132,"icon":133},"Privacy and security","\u002Freference\u002Fsecurity","5.reference\u002F5.security","i-lucide-shield-check",{"id":135,"title":130,"body":136,"description":370,"extension":371,"links":372,"meta":373,"navigation":374,"path":131,"seo":375,"stem":132,"__hash__":376},"docs\u002F5.reference\u002F5.security.md",{"type":137,"value":138,"toc":360},"minimark",[139,144,148,152,209,212,215,219,222,226,292,296,350,353,357],[140,141,143],"h2",{"id":142},"nothing-leaves-your-network","Nothing leaves your network",[145,146,147],"p",{},"Every part of ico runs on your machines. Nothing is sent to us or to anyone else: there is no telemetry, no licence check, no call home.",[140,149,151],{"id":150},"what-is-stored-and-what-is-not","What is stored, and what is not",[153,154,155,168],"table",{},[156,157,158],"thead",{},[159,160,161,165],"tr",{},[162,163,164],"th",{},"Stored",[162,166,167],{},"Never stored",[169,170,171,180,188,196],"tbody",{},[159,172,173,177],{},[174,175,176],"td",{},"Token counts, latencies, status codes, models, replicas",[174,178,179],{},"Prompt text",[159,181,182,185],{},[174,183,184],{},"The tenant and feature values your requests carry",[174,186,187],{},"Completion text",[159,189,190,193],{},[174,191,192],{},"Salted hashes of request text, in blocks",[174,194,195],{},"Request or response headers other than the two you name",[159,197,198,201],{},[174,199,200],{},"Engine metrics and GPU counters",[174,202,203,204,208],{},"Client IP addresses, API keys or ",[205,206,207],"code",{},"Authorization"," headers",[145,210,211],{},"The gateway reads each request's text only to hash it, in memory, in blocks of 256 characters (64 blocks at most), with HMAC-SHA256 keyed by a per-install salt, then drops the text. The hashes only show that two requests begin the same way. Without the salt they cannot be compared with anything outside your install, and they cannot be turned back into text.",[145,213,214],{},"Tenant and feature values are stored as your requests send them. Use ids rather than names if your customers' names are themselves sensitive.",[140,216,218],{"id":217},"the-replay-sends-no-real-text","The replay sends no real text",[145,220,221],{},"The replay rebuilds your traffic as prompts of token ids, with the recorded lengths and the shared prefixes the hashes reveal. The engine sees synthetic tokens, never your users' text, and the answers are thrown away.",[140,223,225],{"id":224},"what-crosses-your-network","What crosses your network",[153,227,228,238],{},[156,229,230],{},[159,231,232,235],{},[162,233,234],{},"Connection",[162,236,237],{},"Protected by",[169,239,240,248,260,268,280],{},[159,241,242,245],{},[174,243,244],{},"Clients to the gateway",[174,246,247],{},"Your network. The gateway adds no authentication of its own: keep the access control you have in front of it.",[159,249,250,253],{},[174,251,252],{},"Gateway and vLLM to the collector (gRPC, 4317)",[174,254,255,256],{},"Your private network. ",[257,258,259],"strong",{},"The collector accepts writes without authentication.",[159,261,262,265],{},[174,263,264],{},"Collector to vLLM and GPU exporters (HTTP)",[174,266,267],{},"Your private network.",[159,269,270,273],{},[174,271,272],{},"CLI to ClickHouse (HTTP, 8123)",[174,274,275,276,279],{},"The ",[205,277,278],{},"ico"," user's password.",[159,281,282,285],{},[174,283,284],{},"CLI to the gateway's admin API (8081)",[174,286,287,288,291],{},"A bearer token. The token can drain replicas: keep the API on ",[205,289,290],{},"127.0.0.1"," or a private address.",[140,293,295],{"id":294},"secrets","Secrets",[153,297,298,308],{},[156,299,300],{},[159,301,302,305],{},[162,303,304],{},"Secret",[162,306,307],{},"Where it lives",[169,309,310,325,336],{},[159,311,312,319],{},[174,313,314,315,318],{},"Admin token (",[205,316,317],{},"ICO_ADMIN_TOKEN",")",[174,320,321,322],{},"The environment of every gateway, and of ",[205,323,324],{},"ico replay",[159,326,327,333],{},[174,328,329,330,318],{},"ClickHouse password (",[205,331,332],{},"ICO_CLICKHOUSE_PASSWORD",[174,334,335],{},"The environment of the collector and of the CLI",[159,337,338,344],{},[174,339,340,341,318],{},"Hash salt (",[205,342,343],{},"ICO_HASH_SALT",[174,345,346,347],{},"The environment of every gateway, or its ",[205,348,349],{},"state_dir",[145,351,352],{},"None of them goes in the config file.",[140,354,356],{"id":355},"access-to-your-gpus","Access to your GPUs",[145,358,359],{},"ico's own containers never touch a GPU driver. GPU counters come from NVIDIA's own exporters. The replay restarts engines only through the launcher you configure, and only for the replica you name.",{"title":361,"searchDepth":362,"depth":362,"links":363},"",2,[364,365,366,367,368,369],{"id":142,"depth":362,"text":143},{"id":150,"depth":362,"text":151},{"id":217,"depth":362,"text":218},{"id":224,"depth":362,"text":225},{"id":294,"depth":362,"text":295},{"id":355,"depth":362,"text":356},"What ico stores, what it never stores, and what crosses your network.","md",null,{},{"icon":133},{"title":130,"description":370},"0j2nE2ir2l5Pj6jwxyQ-6Ywol7oT11PKhfldaKHGpM8",[378,372],{"title":125,"path":126,"stem":127,"description":379,"icon":128,"children":-1},"The ClickHouse tables and views ico writes and reads, and the names it stores metrics under.",1792165819410]