killBottleneck je ve veřejné betě — cloud i self-host.killBottleneck je v betě.Beta na GitHubu →
Skip to content

Proměnné prostředí ​

Všechno se nastavuje v .env vedle docker-compose.yml. Zkopírujte šablonu a upravte:

bash
cp .env.example .env

Po každé změně přestavte — restart nestačí:

bash
docker compose up -d --build

Staré názvy FLOWMAP_* fungují dál

Proměnné se dřív jmenovaly FLOWMAP_*. Oběma názvům rozumí jak Docker Compose, tak server, takže .env ze starší verze funguje dál. Nové instalace ať používají KB_*.

Základ ​

ProměnnáVýchozíCo dělá
KB_PORT8090Port, na kterém instance poslouchá: http://IP-SERVERU:PORT.
KB_NAMEkillbottleneckNázev kontejneru. Jiný název = druhá instance vedle první na témže stroji (dřív se dva stacky popraly o jméno).
TZUTCČasové pásmo instance. Určuje, v jakém pásmu se počítá „den“ a „hodina“ pro opakující se šablony, ranní souhrny, upozornění na termíny a připomínky s časem (události v kalendáři a připomínky k termínu chodí v HH:MM tohoto pásma — s výchozím UTC přijde připomínka „14:00“ v 16:00 letního času). Nastavte např. Europe/Prague. Platí pro celou instanci — tým rozprostřený přes pásma dostane pásmo serveru.
KB_AUTO_HOUR5Hodina (0–23, v TZ), od které opakující se šablony zakládají ten den projekty. Když byl server v tu hodinu vypnutý, založí se v nejbližší pozdější hodinu téhož dne.
KB_DEADLINE_HOUR7Hodina ranního souhrnu termínů (0–23, lokálně). Zároveň hodina, ve které přijde připomínka celodenní události v kalendáři.

AI ​

ProměnnáVýchozíCo dělá
KB_AI_PROVIDERnonenone = žádná AI (všechno ostatní funguje). openai = jakékoli OpenAI-kompatibilní API (OpenAI, OpenRouter, Groq, vLLM, LM Studio…). ollama = váš vlastní lokální model. api = vzdálená AI služba kompatibilní s killBottleneck API (adresa + token). custom = váš endpoint se stejným kontraktem.
KB_AI_URL(prázdné)Adresa endpointu. Pro ollama adresa Ollamy, např. http://192.168.1.10:11434. Pro openai základní adresa, obvykle končí /v1 — nalepené /chat/completions nebo chybějící /v1 se srovná samo.
KB_AI_TOKEN(prázdné)Token pro api / custom; u openai váš API klíč (posílá se jako Authorization: Bearer).
KB_AI_MODEL(prázdné)U ollama model, který se má použít (nejdřív ollama pull <model>); u openai přesný název modelu podle poskytovatele, např. gpt-4o-mini.
KB_AI_OPENAI_EXTRA(prázdné)Jen openai — JSON s poli navíc do každého požadavku, např. {"reasoning_effort":"none"} pro vypnutí uvažování tam, kde to poskytovatel dovolí (totéž co KB_CHAT_OPENAI_EXTRA, ale pro obecné AI funkce). platí i pro asistenta (pokud není KB_CHAT_OPENAI_EXTRA) a pro sumáře.
KB_AI_TRANSCRIBE_URL(prázdné)Endpoint pro přepis řeči. Když je prázdný, odvodí se z KB_AI_URL. U openai ho můžete nechat prázdný — diktování pak jde na tutéž službu; když ho vyplníte, platí tahle adresa.
KB_AI_TRANSCRIBE_MODELwhisper-1Jen pro openai — model přepisu (Groq: whisper-large-v3). Nastavit jde i v Administraci.
KB_AI_MAX_PER_HOUR60Jen pro openai — kolik AI operací smí jeden člověk za hodinu. Každé volání utrácí váš kredit. AI asistent na boku má vlastní počítadlo se stejným stropem, které platí u každého poskytovatele.
KB_AI_MAX_TRANSCRIBE_PER_HOUR20Totéž, jen pro diktování.

Ranní souhrn ​

Jednořádkové povzbuzení v Mém dni může používat zvlášť menší model.

ProměnnáVýchozíCo dělá
KB_SUMMARY_HOUR6Hodina ranního generování (lokálně).
KB_SUMMARY_ACTIVE_DAYS14Ráno generovat jen účtům přihlášeným v posledních N dnech. 0 = všem. Neaktivním se vygeneruje, až si aplikaci otevřou.
KB_SUMMARY_PROVIDER(prázdné)Přebije KB_AI_PROVIDER jen pro souhrny.
KB_SUMMARY_URL(prázdné)Přebije KB_AI_URL jen pro souhrny.
KB_SUMMARY_MODEL(prázdné)Přebije KB_AI_MODEL jen pro souhrny.
KB_SUMMARY_TOKEN(prázdné)Přebije KB_AI_TOKEN jen pro souhrny.

Asistent na boku ​

AI asistent v panelu vpravo. Model hledá v pořadí KB_CHAT_* → KB_SUMMARY_* → obecné nastavení AI. Panel se ukáže jen s poskytovatelem ollama nebo openai a potřebuje model s voláním nástrojů (tool calling), např. gemma4, qwen3, gpt-oss nebo gpt-4o-mini.

ProměnnáVýchozíCo dělá
KB_CHAT_PROVIDER(prázdné)ollama nebo openai — vlastní model jen pro asistenta. Prázdné = použije se KB_SUMMARY_*, pak obecné nastavení AI.
KB_CHAT_URL(prázdné)Adresa modelu asistenta (jako KB_AI_URL).
KB_CHAT_MODEL(prázdné)Název modelu asistenta.
KB_CHAT_TOKEN(prázdné)API klíč pro model asistenta.
KB_CHAT_THINK(prázdné)Uvažování modelu: prázdné = vypnuto (nejrychlejší), jinak low, medium, high nebo true.
KB_CHAT_NUM_CTX(prázdné)Jen ollama — velikost kontextu (num_ctx) posílaná v každém volání. Ollama má jinak výchozích 4096 tokenů a delší prompt asistenta by tiše ořízla.
KB_CHAT_OPENAI_EXTRA(prázdné)Jen openai — JSON s poli navíc do požadavku, např. {"reasoning_effort":"none"}. Uvažující modely s nízkým limitem tokenů ho jinak můžou celý spotřebovat na přemýšlení a vrátit chybu, kterou poskytovatel stejně účtuje.
KB_CHAT_TOOLS(prázdné)Která schémata nástrojů model asistenta dostane. Prázdné = jen skupiny, o které rozhovor stojí (šetří tokeny; nástroj, který si model stejně řekne, se přidá a volání zopakuje). all = všechny nástroje v každém volání — jen pro měření A/B.
KB_AI_KVOTA_TYDEN(prázdné)Strop AI kreditů na týden pro organizaci (sekce AI kredity ve Správě organizace). Hodnota nastavená v aplikaci ho může jen snížit, ne zvednout. Prázdné = bez stropu provozovatele.

Obrázky v asistentovi ​

Obrázek nejdřív přepíše model, který obrázky vidí; pak se pracuje jen s textem. Originál se neukládá. Bez KB_VISION_PROVIDER, KB_VISION_URL a KB_VISION_MODEL asistent obrázky odmítá.

ProměnnáVýchozíCo dělá
KB_VISION_PROVIDER(prázdné)ollama nebo openai — model pro čtení obrázků (např. gemma4 / gemma3 přes Ollamu, nebo OpenAI-kompatibilní API s obrazovým vstupem).
KB_VISION_URL(prázdné)Adresa modelu pro obrázky.
KB_VISION_MODEL(prázdné)Název modelu pro obrázky.
KB_VISION_TOKEN(prázdné)API klíč pro model obrázků.
KB_VISION_NUM_CTX8192Jen ollama — velikost kontextu pro přepis obrázku.
KB_VISION_OPENAI_EXTRA(prázdné)Jen openai — JSON s poli navíc; u uvažujících modelů {"reasoning_effort":"none"}.
KB_VISION_ZALOHA_PROVIDER / _URL / _MODEL / _TOKEN / _NUM_CTX / _OPENAI_EXTRA(prázdné)Volitelný záložní model, když první selže nebo nestihne odpovědět.
KB_VISION_TIMEOUT45Sekund na jeden pokus o přepis. Celkový čas držte hluboko pod časovým limitem reverzní proxy (Cloudflare kolem 100 s).
KB_VISION_POKUSY0Kolikrát navíc zkusit první model, než přijde na řadu záloha.
KB_CHAT_MAX_IMG_MB1.2Největší přijatý obrázek v MB. Prohlížeč snímky obrazovky sám zmenšuje zhruba na 250 kB.
KB_CHAT_NAHLEDU3Kolik malých náhledů obrázků drží jeden rozhovor; u starších zůstane jen přepis.
KB_AI_IMG_VAHA3Kolik tahů z hodinového stropu (KB_AI_MAX_PER_HOUR) ubere jeden tah s obrázkem.
KB_AI_PDF_VAHA2Kolik tahů z hodinového stropu ubere jeden tah s přiloženým PDF (asistent dostane jen text stran; sloučení a rozdělení PDF běží v prohlížeči a nestojí nic).

Přístup a přihlašování ​

ProměnnáVýchozíCo dělá
KB_SETUP_CODE(prázdné)Registrační klíč instance. Když je nastavený, vyžaduje ho každá registrace. Prázdné = zaregistrovat se může kdokoli, kdo zná adresu. První zaregistrovaný účet je vždycky správce.
KB_GOOGLE_CLIENT_ID(prázdné)Google OAuth client ID. Prázdné = tlačítko „Přihlásit přes Google“ se nezobrazuje.
KB_GOOGLE_CLIENT_SECRET(prázdné)Google OAuth client secret.
KB_GOOGLE_PICKER_API_KEY(prázdné)Zapne vybírání příloh přímo z Google Disku. Potřebuje OAuth klienta výš a zapnuté „Google Picker API“ v tomtéž projektu Google Cloud. Takto vybrané soubory se ukládají jako odkazy — z Disku nikam neodcházejí.

Než instanci vystavíte ven, nastavte registrační klíč

Na stroji dostupném z internetu znamená prázdný KB_SETUP_CODE, že si účet založí kdokoli, kdo adresu najde.

E-mail (SMTP) se tady nenastavuje — žije v administraci PocketBase, viz Konfigurace → E-mail.

Automatizace ​

Potřeba jen tehdy, když automatizace na cílech opravdu používáte.

ProměnnáVýchozíCo dělá
KB_PUBLIC_URL(prázdné)Veřejná adresa téhle instance, kterou killBottleneck posílá agentovi jako callback_url, aby se měl kam ohlásit. Stačí jakákoli adresa, na kterou agent dosáhne — u self-hostu klidně adresa v LAN. Když je prázdná, použije se „Application URL“ z administrace PocketBase, což je po instalaci http://localhost:8090 — agent na jiném stroji by pak volal sám sebe. Evidence agentů v aplikaci ukazuje skutečně platnou adresu a před localhostem varuje.
KB_AGENT_TIMEOUT_MIN90Kolik minut smí automatizace běžet, než ji hlídač označí za neúspěšnou.
KB_ALLOW_PRIVATE_WEBHOOKS(prázdné)1 povolí webhookům agentů mířit i do privátních sítí (10.x, 192.168.x, localhost). Ve výchozím stavu zakázáno.

Proč jsou privátní webhooky vypnuté

Bez té pojistky jde server zamířit do vaší vnitřní sítě a použít ho k jejímu skenování. Zapněte to, jen když cíl automatizace (třeba n8n) opravdu běží ve stejné LAN.

Limity a režim instance ​

ProměnnáVýchozíCo dělá
KB_FILES_MB(prázdné)Strop v MB pro nahrané přílohy za celou instanci. Prázdné = bez limitu (výchozí pro self-hosting — je to váš disk). 0 = nahrávání vypnuté, přílohy jde přidávat jen jako odkazy.
KB_HOSTED(prázdné)1 označuje instanci běžící u poskytovatele vedle jiných zákazníků. Správce instance pak nesmí zamířit AI službu do privátní sítě. Na vlastním serveru nechte prázdné — lokální Ollama v LAN je tam normální stav.
KB_SHARE_INVITE_DAILY_CAP20Kolik pozvánek ke sdílenému projektu (adresátům bez účtu) smí jeden uživatel rozeslat za den. Na tutéž adresu k jednomu projektu odejde vždy nejvýš jedna.
KB_SHARE_INVITE_INSTANCE_CAP50Denní strop těchto pozvánek pro celou instanci — ochrana poštovní kvóty.
KB_NOTIFY_EMAIL_DEFAULT(prázdné)Notifikační e-maily jsou ve výchozím stavu vypnuté a řídí se předvolbami uživatelů. 1 zachová po aktualizaci staré chování „e-mail zapnutý, dokud si ho uživatel nevypne“.
KB_REPORT_TO(prázdné)Adresa, kam chodí hlášení chyb a nápadů z aplikace. Prázdné = funkce na téhle instanci neexistuje: položka se nezobrazí a odesílací cesta vrací 404, takže odsud nikdy nic neodejde. Nastavte vlastní adresu, chcete-li hlášení od svých uživatelů — do Reply-To se doplní adresa toho, kdo psal, takže jde odpovědět rovnou z pošty. Vyžaduje funkční SMTP.

Notifikace ​

Výchozí hodnoty jsou rozumné. Měňte je, jen když jsou upozornění moc hlučná — nebo naopak když vaše automatizace oprávněně vyrobí víc než strop.

Žádné „bez omezení“ neexistuje

0 tady není kouzelná hodnota — znamená, že je strop vyčerpaný hned. Místo vynulování číslo zvyšte.

ProměnnáVýchozíCo dělá
KB_NOTIFY_DIGEST_HOUR8Hodina denního souhrnu e-mailem (0–23, místní TZ).
KB_REMINDER_CATCHUP_H48Okno pro dohnání připomínek s časem (hodiny, 0–720). Po výpadku se připomínky, jejichž čas je starší než tohle okno, jen zalogují a nepošlou — obnova staré zálohy tak nezasype zvoneček schůzkami, které už proběhly. Mladší zmeškané připomínky přijdou hned po startu.
KB_NOTIFY_DAILY_CAP50Nejvíc upozornění v aplikaci na příjemce a den. Nad strop se jednotlivé řádky nahradí jedním rostoucím souhrnem („+N dalších“) — nic se tiše neztratí.
KB_NOTIFY_EMAIL_DAILY_CAP10Nejvíc notifikačních e-mailů na příjemce a den. Nad strop se e-maily zahazují (upozornění v aplikaci přijde dál).
KB_NOTIFY_COALESCE_MIN10Upozornění pro téhož příjemce, která přijdou během tolika minut, se slijí do jedné zprávy.
KB_UVODNI_MAPA1Zakládat každému novému uživateli dva úvodní projekty (prohlídka + zkušební projekt). 0 = nový účet začíná prázdný.
KB_PURPOSE_ASK1Zeptat se prvního správce při prvním přihlášení, k čemu instance je (firma / rodina / sólo). 0 = neptat se (platí firma). Při KB_UVODNI_MAPA=0 se neptá automaticky.

Aktualizace a verzování ​

ProměnnáVýchozíCo dělá
KB_UPDATE_CHECK1Prohlížeč přihlášeného uživatele se ptá GitHub API, jestli existuje novější vydání; dialog „O aplikaci“ pak nabídne odkaz. Instance sama nikam nic neposílá. 0 kontrolu vypne.
KB_UPDATE_REPO(prázdné)Odkud se čtou vydání. Prázdné = oficiální repozitář. Nastavte jen u vlastního forku.
KB_VERSIONdevBuild argument, ne proměnná v .env — předává se na příkazové řádce: KB_VERSION=$(git describe --tags --dirty) docker compose up -d --build. Když zůstane dev, kontrola aktualizací se nenabízí.

Žádná telemetrie

Kontrola aktualizací běží v prohlížeči uživatele proti GitHubu. Instance se nikam neozývá, takže se o vaší instalaci nedozvíme nic.

fair-code — self-hosting a interní použití zdarma, přeprodej jako hostovaná služba ne.