[{"data":1,"prerenderedAt":345},["ShallowReactive",2],{"navigation_docs_en":3,"-en-reference-how-it-works":123,"-en-reference-how-it-works-surround":340},[4,36,107],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":35},"Getting started","i-lucide-rocket","\u002Fen\u002Fgetting-started","en\u002F1.getting-started",[10,15,20,25,30],{"title":11,"path":12,"stem":13,"icon":14},"What is Chronicler","\u002Fen\u002Fgetting-started\u002Fwhat-is-chronicler","en\u002F1.getting-started\u002F1.what-is-chronicler","i-lucide-help-circle",{"title":16,"path":17,"stem":18,"icon":19},"Install the app","\u002Fen\u002Fgetting-started\u002Finstall-the-app","en\u002F1.getting-started\u002F2.install-the-app","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":24},"Cloud quick start","\u002Fen\u002Fgetting-started\u002Fcloud-quickstart","en\u002F1.getting-started\u002F3.cloud-quickstart","i-lucide-cloud",{"title":26,"path":27,"stem":28,"icon":29},"Your first chat","\u002Fen\u002Fgetting-started\u002Fyour-first-chat","en\u002F1.getting-started\u002F4.your-first-chat","i-lucide-messages-square",{"title":31,"path":32,"stem":33,"icon":34},"Managing users","\u002Fen\u002Fgetting-started\u002Fmanaging-users","en\u002F1.getting-started\u002F5.managing-users","i-lucide-users",false,{"title":37,"icon":38,"path":39,"stem":40,"children":41,"page":35},"Self-hosting","i-lucide-server","\u002Fen\u002Fself-hosting","en\u002F2.self-hosting",[42,47,52,57,62,67,72,77,82,87,92,97,102],{"title":43,"path":44,"stem":45,"icon":46},"Overview","\u002Fen\u002Fself-hosting\u002Foverview","en\u002F2.self-hosting\u002F1.overview","i-lucide-layout-dashboard",{"title":48,"path":49,"stem":50,"icon":51},"Backups and restore","\u002Fen\u002Fself-hosting\u002Fbackups","en\u002F2.self-hosting\u002F10.backups","i-lucide-database-backup",{"title":53,"path":54,"stem":55,"icon":56},"Updating","\u002Fen\u002Fself-hosting\u002Fupdating","en\u002F2.self-hosting\u002F11.updating","i-lucide-refresh-cw",{"title":58,"path":59,"stem":60,"icon":61},"Security and networking","\u002Fen\u002Fself-hosting\u002Fsecurity-and-networking","en\u002F2.self-hosting\u002F12.security-and-networking","i-lucide-shield",{"title":63,"path":64,"stem":65,"icon":66},"Troubleshooting","\u002Fen\u002Fself-hosting\u002Ftroubleshooting","en\u002F2.self-hosting\u002F13.troubleshooting","i-lucide-life-buoy",{"title":68,"path":69,"stem":70,"icon":71},"Requirements","\u002Fen\u002Fself-hosting\u002Frequirements","en\u002F2.self-hosting\u002F2.requirements","i-lucide-cpu",{"title":73,"path":74,"stem":75,"icon":76},"Quick start (guided)","\u002Fen\u002Fself-hosting\u002Fquick-start","en\u002F2.self-hosting\u002F3.quick-start","i-lucide-wand-2",{"title":78,"path":79,"stem":80,"icon":81},"Manual install","\u002Fen\u002Fself-hosting\u002Fmanual-install","en\u002F2.self-hosting\u002F4.manual-install","i-lucide-terminal",{"title":83,"path":84,"stem":85,"icon":86},"GPU acceleration","\u002Fen\u002Fself-hosting\u002Fgpu-acceleration","en\u002F2.self-hosting\u002F5.gpu-acceleration","i-lucide-zap",{"title":88,"path":89,"stem":90,"icon":91},"Performance and memory","\u002Fen\u002Fself-hosting\u002Fperformance-and-memory","en\u002F2.self-hosting\u002F6.performance-and-memory","i-lucide-gauge",{"title":93,"path":94,"stem":95,"icon":96},"Configuration reference","\u002Fen\u002Fself-hosting\u002Fconfiguration-reference","en\u002F2.self-hosting\u002F7.configuration-reference","i-lucide-sliders-horizontal",{"title":98,"path":99,"stem":100,"icon":101},"Models","\u002Fen\u002Fself-hosting\u002Fmodels","en\u002F2.self-hosting\u002F8.models","i-lucide-brain",{"title":103,"path":104,"stem":105,"icon":106},"Licensing and activation","\u002Fen\u002Fself-hosting\u002Flicensing","en\u002F2.self-hosting\u002F9.licensing","i-lucide-key-round",{"title":108,"icon":109,"path":110,"stem":111,"children":112,"page":35},"Reference","i-lucide-book-open","\u002Fen\u002Freference","en\u002F3.reference",[113,118],{"title":114,"path":115,"stem":116,"icon":117},"How it works","\u002Fen\u002Freference\u002Fhow-it-works","en\u002F3.reference\u002F1.how-it-works","i-lucide-workflow",{"title":119,"path":120,"stem":121,"icon":122},"Data and privacy","\u002Fen\u002Freference\u002Fdata-and-privacy","en\u002F3.reference\u002F2.data-and-privacy","i-lucide-lock",{"id":124,"title":114,"body":125,"description":331,"extension":332,"links":333,"meta":334,"navigation":335,"path":115,"seo":336,"stem":116,"__hash__":339},"docs_en\u002Fen\u002F3.reference\u002F1.how-it-works.md",{"type":126,"value":127,"toc":316},"minimark",[128,133,144,153,156,160,196,203,207,259,263,266,284,287,291,294,298],[129,130,132],"h2",{"id":131},"one-app-two-kinds-of-server","One app, two kinds of server",[134,135,140],"pre",{"className":136,"code":138,"language":139},[137],"language-text","                 ┌──────────────────────────────┐\n                 │      Chronicler app          │\n                 │  (one download, either mode) │\n                 └───────┬──────────────┬───────┘\n             Cloud mode  │              │  Local mode\n                         ▼              ▼\n              ┌────────────────┐  ┌──────────────────────┐\n              │ Our hosted     │  │ Your Docker stack    │\n              │ service        │  │ on your machine      │\n              └────────────────┘  └──────────────────────┘\n","text",[141,142,138],"code",{"__ignoreMap":143},"",[145,146,147,148,152],"p",{},"There are no separate builds. Which server the app talks to is a setting in\n",[149,150,151],"strong",{},"Settings → Connection",", stored on that machine, and switching signs you out —\nCloud accounts and self-hosted accounts are entirely separate, even with the same\nemail address.",[145,154,155],{},"The server, by contrast, decides what it is when it's deployed. A self-hosted\nserver always serves exactly one organisation, never allows self-service sign-up,\nand always requires a licence. Those aren't settings.",[129,157,159],{"id":158},"from-a-question-to-an-answer","From a question to an answer",[161,162,163,168,171,175,182,186,189,193],"steps",{},[164,165,167],"h3",{"id":166},"upload","Upload",[145,169,170],{},"Text is extracted from the file. Scanned pages and images go through OCR. There\nare two engines: the standard one, which is fast, and an AI-assisted one you can\nchoose per upload for pages the standard engine garbles — typically images of\ntables. Spreadsheets skip OCR entirely and are parsed row by row.",[164,172,174],{"id":173},"index","Index",[145,176,177,178,181],{},"The text is split into passages, and each passage is turned into a vector by the\nembedding model. Those vectors are stored ",[149,179,180],{},"in PostgreSQL"," using the pgvector\nextension — there's no separate search database to run.",[164,183,185],{"id":184},"ask","Ask",[145,187,188],{},"Your question is embedded the same way and matched against those passages, within\nwhatever scope you selected (everything, a collection, or specific documents).",[164,190,192],{"id":191},"answer","Answer",[145,194,195],{},"The best-matching passages and your question go to the generation model, which\nwrites the answer. The passages it used come back as citations.",[145,197,198,199,202],{},"On a self-hosted server, every one of those steps happens in your containers. The\ngeneration model runs in the ",[141,200,201],{},"ollama"," container on your CPU or GPU; the embedding\nmodel runs inside the backend and ships with the image, so it works with no\ninternet access.",[129,204,206],{"id":205},"where-things-are-stored","Where things are stored",[208,209,210,223],"table",{},[211,212,213],"thead",{},[214,215,216,220],"tr",{},[217,218,219],"th",{},"Data",[217,221,222],{},"Lives in",[224,225,226,239,249],"tbody",{},[214,227,228,232],{},[229,230,231],"td",{},"Accounts, collections, conversations, document text and vectors",[229,233,234,235,238],{},"PostgreSQL (",[141,236,237],{},"postgres_data",")",[214,240,241,244],{},[229,242,243],{},"The original uploaded files, backups, the install identity",[229,245,246],{},[141,247,248],{},"backend_uploads",[214,250,251,254],{},[229,252,253],{},"Downloaded language models",[229,255,256],{},[141,257,258],{},"ollama_data",[129,260,262],{"id":261},"what-the-server-talks-to","What the server talks to",[145,264,265],{},"A self-hosted server makes only two kinds of outbound connection:",[267,268,269,278],"ul",{},[270,271,272,277],"li",{},[149,273,274],{},[141,275,276],{},"api.chroniclerlm.com",", every 30 minutes, to verify the licence. It sends\nthe key and an install identifier — no document content, no user data. Signed\nresponses, so pointing this elsewhere doesn't work.",[270,279,280,283],{},[149,281,282],{},"Docker Hub and GitHub",", when you install or update, for images and the\ncompose file.",[145,285,286],{},"There's no analytics, no crash reporting to us, and no document data leaving the\nmachine.",[129,288,290],{"id":289},"the-schema-updates-itself","The schema updates itself",[145,292,293],{},"The backend runs its database migrations at startup. Postgres starts empty and\nthe backend builds the schema; on an update, it dumps the database before\nchanging the schema and refuses to continue if that dump fails. You never run\nmigrations by hand.",[129,295,297],{"id":296},"further-reading","Further reading",[267,299,300,306,311],{},[270,301,302,305],{},[303,304,43],"a",{"href":44}," — the containers and ports",[270,307,308,310],{},[303,309,93],{"href":94}," — every setting",[270,312,313,315],{},[303,314,58],{"href":59}," — exposing it safely",{"title":143,"searchDepth":317,"depth":317,"links":318},2,[319,320,327,328,329,330],{"id":131,"depth":317,"text":132},{"id":158,"depth":317,"text":159,"children":321},[322,324,325,326],{"id":166,"depth":323,"text":167},3,{"id":173,"depth":323,"text":174},{"id":184,"depth":323,"text":185},{"id":191,"depth":323,"text":192},{"id":205,"depth":317,"text":206},{"id":261,"depth":317,"text":262},{"id":289,"depth":317,"text":290},{"id":296,"depth":317,"text":297},"One app, two kinds of server — and what happens between a question and an answer.","md",null,{},{"icon":117},{"title":337,"description":338},"How Chronicler works","The architecture of Chronicler — one desktop app, two backend kinds, and the path from a question to a cited answer.","E-2Qz-yIq9mwZCY3AZbZdweFgnA-gAorB48f7_KYRs0",[341,343],{"title":103,"path":104,"stem":105,"description":342,"icon":106,"children":-1},"Activate your key, and understand the check that runs every 30 minutes.",{"title":119,"path":120,"stem":121,"description":344,"icon":122,"children":-1},"Exactly what is stored, where, and what crosses the network.",1785092110961]