[{"data":1,"prerenderedAt":969},["ShallowReactive",2],{"navigation_docs_en":3,"-en-self-hosting-performance-and-models-performance-and-memory":143,"-en-self-hosting-performance-and-models-performance-and-memory-surround":964},[4,103,124],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":36},"Self-hosting","i-lucide-server","\u002Fen\u002Fself-hosting","en\u002F1.self-hosting",[10,37,57,77],{"title":11,"icon":12,"path":13,"stem":14,"children":15,"page":36},"Getting started","i-lucide-rocket","\u002Fen\u002Fself-hosting\u002Fgetting-started","en\u002F1.self-hosting\u002F1.getting-started",[16,21,26,31],{"title":17,"path":18,"stem":19,"icon":20},"Quick start (guided)","\u002Fen\u002Fself-hosting\u002Fgetting-started\u002Fquick-start","en\u002F1.self-hosting\u002F1.getting-started\u002F1.quick-start","i-lucide-wand-2",{"title":22,"path":23,"stem":24,"icon":25},"Overview","\u002Fen\u002Fself-hosting\u002Fgetting-started\u002Foverview","en\u002F1.self-hosting\u002F1.getting-started\u002F2.overview","i-lucide-layout-dashboard",{"title":27,"path":28,"stem":29,"icon":30},"Requirements","\u002Fen\u002Fself-hosting\u002Fgetting-started\u002Frequirements","en\u002F1.self-hosting\u002F1.getting-started\u002F3.requirements","i-lucide-cpu",{"title":32,"path":33,"stem":34,"icon":35},"Manual install","\u002Fen\u002Fself-hosting\u002Fgetting-started\u002Fmanual-install","en\u002F1.self-hosting\u002F1.getting-started\u002F4.manual-install","i-lucide-terminal",false,{"title":38,"icon":39,"path":40,"stem":41,"children":42,"page":36},"Performance & models","i-lucide-gauge","\u002Fen\u002Fself-hosting\u002Fperformance-and-models","en\u002F1.self-hosting\u002F2.performance-and-models",[43,48,52],{"title":44,"path":45,"stem":46,"icon":47},"GPU acceleration","\u002Fen\u002Fself-hosting\u002Fperformance-and-models\u002Fgpu-acceleration","en\u002F1.self-hosting\u002F2.performance-and-models\u002F1.gpu-acceleration","i-lucide-zap",{"title":49,"path":50,"stem":51,"icon":39},"Performance and memory","\u002Fen\u002Fself-hosting\u002Fperformance-and-models\u002Fperformance-and-memory","en\u002F1.self-hosting\u002F2.performance-and-models\u002F2.performance-and-memory",{"title":53,"path":54,"stem":55,"icon":56},"Models","\u002Fen\u002Fself-hosting\u002Fperformance-and-models\u002Fmodels","en\u002F1.self-hosting\u002F2.performance-and-models\u002F3.models","i-lucide-brain",{"title":58,"icon":59,"path":60,"stem":61,"children":62,"page":36},"Configuration & access","i-lucide-sliders-horizontal","\u002Fen\u002Fself-hosting\u002Fconfiguration-and-access","en\u002F1.self-hosting\u002F3.configuration-and-access",[63,67,72],{"title":64,"path":65,"stem":66,"icon":59},"Configuration reference","\u002Fen\u002Fself-hosting\u002Fconfiguration-and-access\u002Fconfiguration-reference","en\u002F1.self-hosting\u002F3.configuration-and-access\u002F1.configuration-reference",{"title":68,"path":69,"stem":70,"icon":71},"Licensing and activation","\u002Fen\u002Fself-hosting\u002Fconfiguration-and-access\u002Flicensing","en\u002F1.self-hosting\u002F3.configuration-and-access\u002F2.licensing","i-lucide-key-round",{"title":73,"path":74,"stem":75,"icon":76},"Managing users","\u002Fen\u002Fself-hosting\u002Fconfiguration-and-access\u002Fmanaging-users","en\u002F1.self-hosting\u002F3.configuration-and-access\u002F3.managing-users","i-lucide-users",{"title":78,"icon":79,"path":80,"stem":81,"children":82,"page":36},"Operations & security","i-lucide-shield-check","\u002Fen\u002Fself-hosting\u002Foperations-and-security","en\u002F1.self-hosting\u002F4.operations-and-security",[83,88,93,98],{"title":84,"path":85,"stem":86,"icon":87},"Backups and restore","\u002Fen\u002Fself-hosting\u002Foperations-and-security\u002Fbackups","en\u002F1.self-hosting\u002F4.operations-and-security\u002F1.backups","i-lucide-database-backup",{"title":89,"path":90,"stem":91,"icon":92},"Updating","\u002Fen\u002Fself-hosting\u002Foperations-and-security\u002Fupdating","en\u002F1.self-hosting\u002F4.operations-and-security\u002F2.updating","i-lucide-refresh-cw",{"title":94,"path":95,"stem":96,"icon":97},"Security and networking","\u002Fen\u002Fself-hosting\u002Foperations-and-security\u002Fsecurity-and-networking","en\u002F1.self-hosting\u002F4.operations-and-security\u002F3.security-and-networking","i-lucide-shield",{"title":99,"path":100,"stem":101,"icon":102},"Troubleshooting","\u002Fen\u002Fself-hosting\u002Foperations-and-security\u002Ftroubleshooting","en\u002F1.self-hosting\u002F4.operations-and-security\u002F4.troubleshooting","i-lucide-life-buoy",{"title":104,"icon":105,"path":106,"stem":107,"children":108,"page":36},"App & reference","i-lucide-book-open-text","\u002Fen\u002Freference","en\u002F2.reference",[109,114,119],{"title":110,"path":111,"stem":112,"icon":113},"Install the app","\u002Fen\u002Freference\u002Finstall-the-app","en\u002F2.reference\u002F1.install-the-app","i-lucide-download",{"title":115,"path":116,"stem":117,"icon":118},"How it works","\u002Fen\u002Freference\u002Fhow-it-works","en\u002F2.reference\u002F2.how-it-works","i-lucide-workflow",{"title":120,"path":121,"stem":122,"icon":123},"Data and privacy","\u002Fen\u002Freference\u002Fdata-and-privacy","en\u002F2.reference\u002F3.data-and-privacy","i-lucide-lock",{"title":125,"icon":126,"path":127,"stem":128,"children":129,"page":36},"Chronicler Cloud","i-lucide-cloud","\u002Fen\u002Fcloud","en\u002F3.cloud",[130,134,138],{"title":131,"path":132,"stem":133,"icon":126},"Cloud overview","\u002Fen\u002Fcloud\u002Foverview","en\u002F3.cloud\u002F1.overview",{"title":135,"path":136,"stem":137,"icon":12},"Quick start","\u002Fen\u002Fcloud\u002Fquick-start","en\u002F3.cloud\u002F2.quick-start",{"title":139,"path":140,"stem":141,"icon":142},"Your first chat","\u002Fen\u002Fcloud\u002Fyour-first-chat","en\u002F3.cloud\u002F3.your-first-chat","i-lucide-messages-square",{"id":144,"title":49,"body":145,"description":955,"extension":956,"links":957,"meta":958,"navigation":959,"path":50,"seo":960,"stem":51,"__hash__":963},"docs_en\u002Fen\u002F1.self-hosting\u002F2.performance-and-models\u002F2.performance-and-memory.md",{"type":146,"value":147,"toc":939},"minimark",[148,152,175,182,187,190,291,294,335,338,342,353,431,438,444,447,463,469,475,482,496,499,504,510,515,523,526,530,536,580,603,618,621,625,631,635,772,776,904,910,914,935],[149,150,151],"p",{},"Chronicler is slow for one of three reasons, in this order of likelihood:",[153,154,155,163,169],"ol",{},[156,157,158,162],"li",{},[159,160,161],"strong",{},"There's no GPU",", or there is one and it isn't being used.",[156,164,165,168],{},[159,166,167],{},"Docker doesn't have enough memory",", so the model reloads constantly.",[156,170,171,174],{},[159,172,173],{},"The model is too big"," for the machine and is spilling to disk.",[149,176,177,178,181],{},"Fix them in that order. ",[179,180,44],"a",{"href":45},"\ncovers the first, this page covers the rest.",[183,184,186],"h2",{"id":185},"_1-give-docker-more-memory","1. Give Docker more memory",[149,188,189],{},"This is the setting people mean when they say \"allocate more RAM\", and it lives\nin Docker, not in Chronicler. Nothing in the compose file can raise it.",[191,192,193,267],"tabs",{},[194,195,198,206,242,245,257,260],"tabs-item",{"icon":196,"label":197},"i-lucide-monitor","Windows",[149,199,200,201,205],{},"Docker Desktop with the WSL2 backend takes memory through WSL, and by default\nit will take up to half the machine. To set it explicitly, create or edit\n",[202,203,204],"code",{},"%UserProfile%\\.wslconfig",":",[207,208,214],"pre",{"className":209,"code":210,"filename":211,"language":212,"meta":213,"style":213},"language-ini shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[wsl2]\nmemory=16GB\nprocessors=8\nswap=8GB\n",".wslconfig","ini","",[202,215,216,224,230,236],{"__ignoreMap":213},[217,218,221],"span",{"class":219,"line":220},"line",1,[217,222,223],{},"[wsl2]\n",[217,225,227],{"class":219,"line":226},2,[217,228,229],{},"memory=16GB\n",[217,231,233],{"class":219,"line":232},3,[217,234,235],{},"processors=8\n",[217,237,239],{"class":219,"line":238},4,[217,240,241],{},"swap=8GB\n",[149,243,244],{},"Then, in an admin PowerShell:",[207,246,251],{"className":247,"code":248,"filename":249,"language":250,"meta":213,"style":213},"language-powershell shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","wsl --shutdown\n","PowerShell","powershell",[202,252,253],{"__ignoreMap":213},[217,254,255],{"class":219,"line":220},[217,256,248],{},[149,258,259],{},"Restart Docker Desktop. Leave the host at least 4–8 GB - starving Windows to\nfeed the model makes everything worse.",[261,262,263,266],"caution",{},[202,264,265],{},"wsl --shutdown"," stops your containers. Do it when nobody is using the server.",[194,268,270,273],{"icon":35,"label":269},"Linux",[149,271,272],{},"Containers use the host's memory directly - there's nothing to raise. Just make\nsure the machine has enough free, and that swap exists so a spike doesn't get\nthe backend killed outright:",[207,274,279],{"className":275,"code":276,"filename":277,"language":278,"meta":213,"style":213},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","free -h\n","Linux shell","bash",[202,280,281],{"__ignoreMap":213},[217,282,283,287],{"class":219,"line":220},[217,284,286],{"class":285},"sBMFI","free",[217,288,290],{"class":289},"sfazB"," -h\n",[149,292,293],{},"Check what Docker actually got:",[191,295,296,308],{},[194,297,299],{"icon":196,"label":298},"Windows (PowerShell)",[207,300,302],{"className":247,"code":301,"filename":249,"language":250,"meta":213,"style":213},"docker info --format \"{{.MemTotal}}\"\n",[202,303,304],{"__ignoreMap":213},[217,305,306],{"class":219,"line":220},[217,307,301],{},[194,309,310],{"icon":35,"label":269},[207,311,312],{"className":275,"code":301,"filename":277,"language":278,"meta":213,"style":213},[202,313,314],{"__ignoreMap":213},[217,315,316,319,322,325,329,332],{"class":219,"line":220},[217,317,318],{"class":285},"docker",[217,320,321],{"class":289}," info",[217,323,324],{"class":289}," --format",[217,326,328],{"class":327},"sMK4o"," \"",[217,330,331],{"class":289},"{{.MemTotal}}",[217,333,334],{"class":327},"\"\n",[149,336,337],{},"Under 4 GiB and the backend will be killed as soon as a model loads.",[183,339,341],{"id":340},"_2-tune-the-model-runtime","2. Tune the model runtime",[149,343,344,345,348,349,352],{},"These go in the ",[202,346,347],{},".env"," next to your compose file. Each is optional - leave it out\nand Ollama's own default applies. Run ",[202,350,351],{},"docker compose up -d"," after a change.",[354,355,356,372],"table",{},[357,358,359],"thead",{},[360,361,362,366,369],"tr",{},[363,364,365],"th",{},"Setting",[363,367,368],{},"Default",[363,370,371],{},"What it does",[373,374,375,391,404,416],"tbody",{},[360,376,377,383,388],{},[378,379,380],"td",{},[202,381,382],{},"OLLAMA_KEEP_ALIVE",[378,384,385],{},[202,386,387],{},"96h",[378,389,390],{},"How long the model stays loaded after a question.",[360,392,393,398,401],{},[378,394,395],{},[202,396,397],{},"OLLAMA_NUM_PARALLEL",[378,399,400],{},"automatic",[378,402,403],{},"How many questions one model answers at once.",[360,405,406,411,413],{},[378,407,408],{},[202,409,410],{},"OLLAMA_MAX_LOADED_MODELS",[378,412,400],{},[378,414,415],{},"How many different models stay in memory.",[360,417,418,423,428],{},[378,419,420],{},[202,421,422],{},"OLLAMA_CONTEXT_LENGTH",[378,424,425],{},[202,426,427],{},"16384",[378,429,430],{},"Default context for clients that don't ask for one.",[432,433,435,437],"h3",{"id":434},"ollama_keep_alive-the-one-worth-knowing-about",[202,436,382],{}," - the one worth knowing about",[149,439,440,441,443],{},"Ollama's own default unloads the model five minutes after the last question, and\nthe next question pays the full cold load again: one to three minutes on a CPU,\nseveral seconds on a GPU. Chronicler ships ",[202,442,387],{}," (4 days) instead, so a server\nleft running answers the second question as fast as the first.",[149,445,446],{},"The cost is exactly the model's memory (3–20 GB depending on which one), held\nwhether anyone is asking or not. On a shared machine that has other work to do,\nlower it:",[207,448,450],{"className":275,"code":449,"filename":347,"language":278,"meta":213,"style":213},"OLLAMA_KEEP_ALIVE=2h\n",[202,451,452],{"__ignoreMap":213},[217,453,454,457,460],{"class":219,"line":220},[217,455,382],{"class":456},"sTEyZ",[217,458,459],{"class":327},"=",[217,461,462],{"class":289},"2h\n",[149,464,465,468],{},[202,466,467],{},"-1"," goes the other way and keeps the model resident permanently.",[432,470,472,474],{"id":471},"ollama_num_parallel-for-several-people-at-once",[202,473,397],{}," - for several people at once",[149,476,477,478,481],{},"Each parallel slot gets its own context memory, on top of the model weights.\nDoubling it roughly doubles the per-context memory. With one or two users, leave\nit alone; a spare ",[202,479,480],{},"1"," also frees memory on a small machine.",[207,483,485],{"className":275,"code":484,"filename":347,"language":278,"meta":213,"style":213},"OLLAMA_NUM_PARALLEL=4\n",[202,486,487],{"__ignoreMap":213},[217,488,489,491,493],{"class":219,"line":220},[217,490,397],{"class":456},[217,492,459],{"class":327},[217,494,495],{"class":289},"4\n",[149,497,498],{},"Only useful with memory to spare. If the machine is already tight, more parallel\nslots make everything slower, not faster.",[432,500,502],{"id":501},"ollama_max_loaded_models",[202,503,410],{},[149,505,506,507,509],{},"Chronicler generates with a single model, so leaving this alone is right for\nalmost everyone. Setting it to ",[202,508,480],{}," on a small machine guarantees a second model\nnever sneaks into memory.",[432,511,513],{"id":512},"ollama_context_length",[202,514,422],{},[516,517,518,519,522],"warning",{},"Raising this ",[159,520,521],{},"does not give chat a bigger context window."," The Chronicler\nbackend asks for its own context size on every request, and that value is fixed\nin the image. This setting only affects other clients talking to the same Ollama.",[149,524,525],{},"Included for completeness. Changing it is almost never the fix you're looking\nfor.",[183,527,529],{"id":528},"_3-tune-the-database","3. Tune the database",[149,531,532,533,535],{},"Also in ",[202,534,347],{},". The defaults are Postgres' own, which are famously conservative.",[354,537,538,548],{},[357,539,540],{},[360,541,542,544,546],{},[363,543,365],{},[363,545,368],{},[363,547,371],{},[373,549,550,565],{},[360,551,552,557,562],{},[378,553,554],{},[202,555,556],{},"POSTGRES_SHARED_BUFFERS",[378,558,559],{},[202,560,561],{},"128MB",[378,563,564],{},"Database cache. The one that matters for search across a big library.",[360,566,567,572,577],{},[378,568,569],{},[202,570,571],{},"POSTGRES_WORK_MEM",[378,573,574],{},[202,575,576],{},"4MB",[378,578,579],{},"Memory per sort. Raise in small steps.",[207,581,583],{"className":275,"code":582,"filename":347,"language":278,"meta":213,"style":213},"POSTGRES_SHARED_BUFFERS=2GB\nPOSTGRES_WORK_MEM=32MB\n",[202,584,585,594],{"__ignoreMap":213},[217,586,587,589,591],{"class":219,"line":220},[217,588,556],{"class":456},[217,590,459],{"class":327},[217,592,593],{"class":289},"2GB\n",[217,595,596,598,600],{"class":219,"line":226},[217,597,571],{"class":456},[217,599,459],{"class":327},[217,601,602],{"class":289},"32MB\n",[149,604,605,606,609,610,613,614,617],{},"A common rule of thumb for ",[202,607,608],{},"shared_buffers"," is 25% of the memory you're willing\nto give the database. ",[202,611,612],{},"work_mem"," is allocated ",[159,615,616],{},"per sort",", not per connection, so\na large value times many concurrent queries is how servers run out of memory -\n32 MB is generous, 1 GB is a mistake.",[149,619,620],{},"Only worth touching once you have thousands of documents. Below that, the default\nis fine and the model is your bottleneck.",[183,622,624],{"id":623},"_4-right-size-the-model","4. Right-size the model",[149,626,627,628,630],{},"A model that doesn't fit is the worst case: it spills to disk and each answer\ntakes minutes. Match the model to the memory you actually have - see\n",[179,629,53],{"href":54},". Smaller and resident beats bigger and\nswapping, every time.",[183,632,634],{"id":633},"worked-examples","Worked examples",[636,637,638,673,722],"card-group",{},[639,640,643,650],"card",{"icon":641,"title":642},"i-lucide-laptop","Laptop, no GPU, 16 GB",[149,644,645,646,649],{},"Docker: 8 GB. Model: ",[202,647,648],{},"gemma4:e2b",".",[207,651,653],{"className":275,"code":652,"filename":347,"language":278,"meta":213,"style":213},"OLLAMA_KEEP_ALIVE=30m\nOLLAMA_NUM_PARALLEL=1\n",[202,654,655,664],{"__ignoreMap":213},[217,656,657,659,661],{"class":219,"line":220},[217,658,382],{"class":456},[217,660,459],{"class":327},[217,662,663],{"class":289},"30m\n",[217,665,666,668,670],{"class":219,"line":226},[217,667,397],{"class":456},[217,669,459],{"class":327},[217,671,672],{"class":289},"1\n",[639,674,676,682],{"icon":6,"title":675},"Office server, no GPU, 32 GB",[149,677,678,679,649],{},"Docker: 24 GB. Model: ",[202,680,681],{},"gemma4:e4b",[207,683,685],{"className":275,"code":684,"filename":347,"language":278,"meta":213,"style":213},"OLLAMA_KEEP_ALIVE=-1\nOLLAMA_NUM_PARALLEL=2\nPOSTGRES_SHARED_BUFFERS=2GB\nPOSTGRES_WORK_MEM=16MB\n",[202,686,687,696,705,713],{"__ignoreMap":213},[217,688,689,691,693],{"class":219,"line":220},[217,690,382],{"class":456},[217,692,459],{"class":327},[217,694,695],{"class":289},"-1\n",[217,697,698,700,702],{"class":219,"line":226},[217,699,397],{"class":456},[217,701,459],{"class":327},[217,703,704],{"class":289},"2\n",[217,706,707,709,711],{"class":219,"line":232},[217,708,556],{"class":456},[217,710,459],{"class":327},[217,712,593],{"class":289},[217,714,715,717,719],{"class":219,"line":238},[217,716,571],{"class":456},[217,718,459],{"class":327},[217,720,721],{"class":289},"16MB\n",[639,723,725,734],{"icon":47,"title":724},"Workstation, 24 GB NVIDIA",[149,726,727,730,731,649],{},[202,728,729],{},"COMPOSE_PROFILES=nvidia",". Model: ",[202,732,733],{},"gemma4:26b",[207,735,737],{"className":275,"code":736,"filename":347,"language":278,"meta":213,"style":213},"OLLAMA_KEEP_ALIVE=-1\nOLLAMA_NUM_PARALLEL=4\nPOSTGRES_SHARED_BUFFERS=4GB\nPOSTGRES_WORK_MEM=32MB\n",[202,738,739,747,755,764],{"__ignoreMap":213},[217,740,741,743,745],{"class":219,"line":220},[217,742,382],{"class":456},[217,744,459],{"class":327},[217,746,695],{"class":289},[217,748,749,751,753],{"class":219,"line":226},[217,750,397],{"class":456},[217,752,459],{"class":327},[217,754,495],{"class":289},[217,756,757,759,761],{"class":219,"line":232},[217,758,556],{"class":456},[217,760,459],{"class":327},[217,762,763],{"class":289},"4GB\n",[217,765,766,768,770],{"class":219,"line":238},[217,767,571],{"class":456},[217,769,459],{"class":327},[217,771,602],{"class":289},[183,773,775],{"id":774},"check-what-you-changed","Check what you changed",[191,777,778,805],{},[194,779,780],{"icon":196,"label":298},[207,781,783],{"className":247,"code":782,"filename":249,"language":250,"meta":213,"style":213},"docker compose config | Select-String \"OLLAMA_\" -Context 0,6\ndocker exec chronicler-ollama env | Select-String \"OLLAMA\"\ndocker exec chronicler-postgres psql -U chronicler -d chronicler_app -c \"show shared_buffers;\"\ndocker stats --no-stream\n",[202,784,785,790,795,800],{"__ignoreMap":213},[217,786,787],{"class":219,"line":220},[217,788,789],{},"docker compose config | Select-String \"OLLAMA_\" -Context 0,6\n",[217,791,792],{"class":219,"line":226},[217,793,794],{},"docker exec chronicler-ollama env | Select-String \"OLLAMA\"\n",[217,796,797],{"class":219,"line":232},[217,798,799],{},"docker exec chronicler-postgres psql -U chronicler -d chronicler_app -c \"show shared_buffers;\"\n",[217,801,802],{"class":219,"line":238},[217,803,804],{},"docker stats --no-stream\n",[194,806,807],{"icon":35,"label":269},[207,808,810],{"className":275,"code":809,"filename":277,"language":278,"meta":213,"style":213},"docker compose config | grep -A6 \"OLLAMA_\"\ndocker exec chronicler-ollama env | grep OLLAMA\ndocker exec chronicler-postgres psql -U chronicler -d chronicler_app -c 'show shared_buffers;'\ndocker stats --no-stream\n",[202,811,812,838,858,894],{"__ignoreMap":213},[217,813,814,816,819,822,825,828,831,833,836],{"class":219,"line":220},[217,815,318],{"class":285},[217,817,818],{"class":289}," compose",[217,820,821],{"class":289}," config",[217,823,824],{"class":327}," |",[217,826,827],{"class":285}," grep",[217,829,830],{"class":289}," -A6",[217,832,328],{"class":327},[217,834,835],{"class":289},"OLLAMA_",[217,837,334],{"class":327},[217,839,840,842,845,848,851,853,855],{"class":219,"line":226},[217,841,318],{"class":285},[217,843,844],{"class":289}," exec",[217,846,847],{"class":289}," chronicler-ollama",[217,849,850],{"class":289}," env",[217,852,824],{"class":327},[217,854,827],{"class":285},[217,856,857],{"class":289}," OLLAMA\n",[217,859,860,862,864,867,870,873,876,879,882,885,888,891],{"class":219,"line":232},[217,861,318],{"class":285},[217,863,844],{"class":289},[217,865,866],{"class":289}," chronicler-postgres",[217,868,869],{"class":289}," psql",[217,871,872],{"class":289}," -U",[217,874,875],{"class":289}," chronicler",[217,877,878],{"class":289}," -d",[217,880,881],{"class":289}," chronicler_app",[217,883,884],{"class":289}," -c",[217,886,887],{"class":327}," '",[217,889,890],{"class":289},"show shared_buffers;",[217,892,893],{"class":327},"'\n",[217,895,896,898,901],{"class":219,"line":238},[217,897,318],{"class":285},[217,899,900],{"class":289}," stats",[217,902,903],{"class":289}," --no-stream\n",[149,905,906,907,909],{},"A setting you left out of ",[202,908,347],{}," won't appear in the container at all. That's\ncorrect - it means the runtime's own default is in force.",[183,911,913],{"id":912},"speed-that-isnt-about-memory","Speed that isn't about memory",[915,916,917,923,929],"ul",{},[156,918,919,922],{},[159,920,921],{},"Scope your questions."," A conversation pointed at three documents is far\nfaster than one pointed at everything.",[156,924,925,928],{},[159,926,927],{},"Index during quiet hours."," Bulk uploads, especially scanned ones, compete\nwith chat for the same CPU.",[156,930,931,934],{},[159,932,933],{},"Use an SSD."," Loading a 20 GB model off a spinning disk is a bad minute.",[936,937,938],"style",{},"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);}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 pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}",{"title":213,"searchDepth":226,"depth":226,"links":940},[941,942,950,951,952,953,954],{"id":185,"depth":226,"text":186},{"id":340,"depth":226,"text":341,"children":943},[944,946,948,949],{"id":434,"depth":232,"text":945},"OLLAMA_KEEP_ALIVE - the one worth knowing about",{"id":471,"depth":232,"text":947},"OLLAMA_NUM_PARALLEL - for several people at once",{"id":501,"depth":232,"text":410},{"id":512,"depth":232,"text":422},{"id":528,"depth":226,"text":529},{"id":623,"depth":226,"text":624},{"id":633,"depth":226,"text":634},{"id":774,"depth":226,"text":775},{"id":912,"depth":226,"text":913},"Give the stack more RAM, and know which knob actually changes anything.","md",null,{},{"icon":39},{"title":961,"description":962},"Tuning Chronicler memory and performance","Raise Docker's memory limit, tune Ollama and Postgres, and size the stack for several concurrent users.","LYLFwA9FJ7ZHkGJv24-jQy-L_7E-egMIpoOzEF2MBLc",[965,967],{"title":44,"path":45,"stem":46,"description":966,"icon":47,"children":-1},"Use the graphics card you already have - the difference between a minute and a few seconds.",{"title":53,"path":54,"stem":55,"description":968,"icon":56,"children":-1},"Which model writes your answers, how to change it, and what each one needs.",1785127056004]