kiki-agent-lite 0.3.1 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (228) hide show
  1. package/README.md +13 -10
  2. package/dist/docs/en/configuration/config-files.md +63 -20
  3. package/dist/docs/en/configuration/data-locations.md +12 -4
  4. package/dist/docs/en/configuration/env-vars.md +4 -6
  5. package/dist/docs/en/configuration/overrides.md +13 -14
  6. package/dist/docs/en/configuration/providers.md +8 -6
  7. package/dist/docs/en/customization/agent-profiles.md +33 -38
  8. package/dist/docs/en/customization/agents.md +129 -107
  9. package/dist/docs/en/customization/hooks.md +41 -48
  10. package/dist/docs/en/customization/personas.md +19 -21
  11. package/dist/docs/en/customization/plugins.md +180 -156
  12. package/dist/docs/en/customization/prompt-fields.md +10 -6
  13. package/dist/docs/en/customization/skills.md +11 -13
  14. package/dist/docs/en/customization/skins.md +23 -27
  15. package/dist/docs/en/customization/themes.md +15 -15
  16. package/dist/docs/en/features/agents.md +85 -0
  17. package/dist/docs/en/features/daily.md +37 -7
  18. package/dist/docs/en/features/ecosystem.md +3 -1
  19. package/dist/docs/en/features/extend.md +7 -1
  20. package/dist/docs/en/features/freedom.md +4 -0
  21. package/dist/docs/en/features/index.md +6 -5
  22. package/dist/docs/en/features/long-work.md +23 -5
  23. package/dist/docs/en/features/look.md +1 -1
  24. package/dist/docs/en/features/people.md +10 -2
  25. package/dist/docs/en/features/spaces.md +16 -4
  26. package/dist/docs/en/features/workbench.md +11 -3
  27. package/dist/docs/en/getting-started/desktop-app.md +44 -29
  28. package/dist/docs/en/getting-started/first-launch.md +32 -21
  29. package/dist/docs/en/getting-started/installation.md +27 -12
  30. package/dist/docs/en/getting-started/use-cases.md +35 -35
  31. package/dist/docs/en/guides/goals.md +9 -7
  32. package/dist/docs/en/guides/interaction.md +26 -26
  33. package/dist/docs/en/guides/interface.md +18 -14
  34. package/dist/docs/en/guides/memory.md +43 -14
  35. package/dist/docs/en/guides/sessions.md +32 -26
  36. package/dist/docs/en/guides/settings.md +60 -29
  37. package/dist/docs/en/index.md +8 -2
  38. package/dist/docs/en/reference/command.md +8 -4
  39. package/dist/docs/en/reference/keyboard.md +18 -4
  40. package/dist/docs/en/reference/model-vocabulary.md +6 -8
  41. package/dist/docs/en/reference/slash-commands.md +4 -4
  42. package/dist/docs/en/reference/tools.md +92 -15
  43. package/dist/docs/en/release-notes/changelog.md +1 -9
  44. package/dist/docs/en/server/acp.md +1 -1
  45. package/dist/docs/en/server/ide.md +1 -1
  46. package/dist/docs/en/server/local-server.md +5 -5
  47. package/dist/docs/en/server/mcp.md +2 -2
  48. package/dist/docs/en/server/rest-api.md +79 -5
  49. package/dist/docs/en/server/sdk.md +2 -2
  50. package/dist/docs/zh/configuration/config-files.md +56 -15
  51. package/dist/docs/zh/configuration/data-locations.md +12 -4
  52. package/dist/docs/zh/configuration/env-vars.md +4 -6
  53. package/dist/docs/zh/configuration/overrides.md +13 -14
  54. package/dist/docs/zh/configuration/providers.md +7 -5
  55. package/dist/docs/zh/customization/agent-profiles.md +31 -36
  56. package/dist/docs/zh/customization/agents.md +120 -98
  57. package/dist/docs/zh/customization/hooks.md +35 -42
  58. package/dist/docs/zh/customization/personas.md +16 -18
  59. package/dist/docs/zh/customization/plugins.md +167 -142
  60. package/dist/docs/zh/customization/prompt-fields.md +9 -5
  61. package/dist/docs/zh/customization/skills.md +10 -12
  62. package/dist/docs/zh/customization/skins.md +19 -23
  63. package/dist/docs/zh/customization/themes.md +12 -12
  64. package/dist/docs/zh/features/agents.md +85 -0
  65. package/dist/docs/zh/features/daily.md +37 -7
  66. package/dist/docs/zh/features/ecosystem.md +3 -1
  67. package/dist/docs/zh/features/extend.md +7 -1
  68. package/dist/docs/zh/features/freedom.md +4 -0
  69. package/dist/docs/zh/features/index.md +6 -5
  70. package/dist/docs/zh/features/long-work.md +22 -4
  71. package/dist/docs/zh/features/look.md +1 -1
  72. package/dist/docs/zh/features/people.md +10 -2
  73. package/dist/docs/zh/features/spaces.md +15 -3
  74. package/dist/docs/zh/features/workbench.md +11 -3
  75. package/dist/docs/zh/getting-started/desktop-app.md +43 -28
  76. package/dist/docs/zh/getting-started/first-launch.md +32 -21
  77. package/dist/docs/zh/getting-started/installation.md +26 -11
  78. package/dist/docs/zh/getting-started/use-cases.md +35 -37
  79. package/dist/docs/zh/guides/goals.md +8 -8
  80. package/dist/docs/zh/guides/interaction.md +25 -25
  81. package/dist/docs/zh/guides/interface.md +18 -14
  82. package/dist/docs/zh/guides/memory.md +43 -14
  83. package/dist/docs/zh/guides/sessions.md +30 -24
  84. package/dist/docs/zh/guides/settings.md +54 -23
  85. package/dist/docs/zh/index.md +7 -1
  86. package/dist/docs/zh/reference/command.md +7 -3
  87. package/dist/docs/zh/reference/keyboard.md +18 -4
  88. package/dist/docs/zh/reference/model-vocabulary.md +6 -8
  89. package/dist/docs/zh/reference/slash-commands.md +3 -3
  90. package/dist/docs/zh/reference/tools.md +74 -9
  91. package/dist/docs/zh/release-notes/changelog.md +1 -9
  92. package/dist/docs/zh/server/acp.md +1 -1
  93. package/dist/docs/zh/server/ide.md +1 -1
  94. package/dist/docs/zh/server/local-server.md +5 -5
  95. package/dist/docs/zh/server/mcp.md +2 -2
  96. package/dist/docs/zh/server/rest-api.md +69 -1
  97. package/dist/docs/zh/server/sdk.md +2 -2
  98. package/dist/main.mjs +12545 -3456
  99. package/dist/web/assets/AppErrorBoundary-RFIAb-Uf.js +1 -0
  100. package/dist/web/assets/NavScopeBoundary-DY_ET7A-.js +1 -0
  101. package/dist/web/assets/{arc-y2SkSoyr.js → arc-CMgTB1m7.js} +1 -1
  102. package/dist/web/assets/{architectureDiagram-3BPJPVTR-uCwLz53m.js → architectureDiagram-3BPJPVTR-BU79ou2C.js} +1 -1
  103. package/dist/web/assets/{blockDiagram-GPEHLZMM-BZyWv36G.js → blockDiagram-GPEHLZMM-Bkuldod2.js} +1 -1
  104. package/dist/web/assets/{c4Diagram-AAUBKEIU-DKGx9i50.js → c4Diagram-AAUBKEIU-C3WMeqyu.js} +1 -1
  105. package/dist/web/assets/channel-DpDZUJRn.js +1 -0
  106. package/dist/web/assets/{chunk-2J33WTMH-CSkrhrsp.js → chunk-2J33WTMH-CesyWmwo.js} +1 -1
  107. package/dist/web/assets/{chunk-4BX2VUAB-CtxMoJ68.js → chunk-4BX2VUAB-C7rghYTf.js} +1 -1
  108. package/dist/web/assets/{chunk-55IACEB6-Dos3ftEy.js → chunk-55IACEB6-BqRHhwtz.js} +1 -1
  109. package/dist/web/assets/{chunk-727SXJPM-wbzEYK9z.js → chunk-727SXJPM-BhSqCRBc.js} +1 -1
  110. package/dist/web/assets/{chunk-AQP2D5EJ-B9GKvCD6.js → chunk-AQP2D5EJ-DdYE2ZVZ.js} +1 -1
  111. package/dist/web/assets/{chunk-FMBD7UC4-u5Y2P6IX.js → chunk-FMBD7UC4-BCRPUxDF.js} +1 -1
  112. package/dist/web/assets/{chunk-ND2GUHAM-B8rFKkTV.js → chunk-ND2GUHAM-CuvyDjTR.js} +1 -1
  113. package/dist/web/assets/{chunk-QZHKN3VN-EQsKtuD-.js → chunk-QZHKN3VN-BU5vAS78.js} +1 -1
  114. package/dist/web/assets/classDiagram-4FO5ZUOK-Bju1GfNu.js +1 -0
  115. package/dist/web/assets/classDiagram-v2-Q7XG4LA2-Bju1GfNu.js +1 -0
  116. package/dist/web/assets/client-C0oH7-8r.js +2 -0
  117. package/dist/web/assets/connection-BhO2nh7P.js +1 -0
  118. package/dist/web/assets/{cose-bilkent-S5V4N54A-D6dr5mIW.js → cose-bilkent-S5V4N54A-CXrvsA1a.js} +1 -1
  119. package/dist/web/assets/{dagre-BM42HDAG-Dnyhc4Hn.js → dagre-BM42HDAG-TaAea3Rt.js} +1 -1
  120. package/dist/web/assets/{diagram-2AECGRRQ-CYXkWdne.js → diagram-2AECGRRQ-CdEH4jGt.js} +1 -1
  121. package/dist/web/assets/{diagram-5GNKFQAL-DPwBf5Ag.js → diagram-5GNKFQAL-A0jZ_p-T.js} +1 -1
  122. package/dist/web/assets/{diagram-KO2AKTUF-DNeLYZ8X.js → diagram-KO2AKTUF-miHWORz3.js} +1 -1
  123. package/dist/web/assets/{diagram-LMA3HP47-zU8RsQTX.js → diagram-LMA3HP47-BlUIwEIg.js} +1 -1
  124. package/dist/web/assets/{diagram-OG6HWLK6-Cf9Mm94H.js → diagram-OG6HWLK6-DwDzMhEg.js} +1 -1
  125. package/dist/web/assets/{erDiagram-TEJ5UH35-Ch4CeiUI.js → erDiagram-TEJ5UH35-BJr5w62i.js} +1 -1
  126. package/dist/web/assets/export-BlxaZKEe.js +2 -0
  127. package/dist/web/assets/{flowDiagram-I6XJVG4X-Csn6WqEH.js → flowDiagram-I6XJVG4X-BP7KSFjx.js} +1 -1
  128. package/dist/web/assets/{ganttDiagram-6RSMTGT7-DsuBgEyu.js → ganttDiagram-6RSMTGT7-BstLBBof.js} +1 -1
  129. package/dist/web/assets/{gitGraphDiagram-PVQCEYII-CPA7jCxU.js → gitGraphDiagram-PVQCEYII-C57s7nZ-.js} +1 -1
  130. package/dist/web/assets/highlighted-body-OFNGDK62-BVb-7KsA.js +1 -0
  131. package/dist/web/assets/index-69qhvTvD.js +1 -0
  132. package/dist/web/assets/{index-BYUHmd8w.js → index-BDNM6yJI.js} +2 -2
  133. package/dist/web/assets/{index-BGgZxlEQ.js → index-BJF_gEDs.js} +2 -2
  134. package/dist/web/assets/index-BOwMP6BP.js +1 -0
  135. package/dist/web/assets/{index-C69a5Mcz.js → index-BZsyXCqm.js} +1 -1
  136. package/dist/web/assets/{index-C7EA7a_g.js → index-Bfl4JiNq.js} +2 -2
  137. package/dist/web/assets/index-BlD3AKX-.js +1 -0
  138. package/dist/web/assets/{index-CIymCfcP.js → index-BnvW0EvQ.js} +1 -1
  139. package/dist/web/assets/index-C4rmWyOm.js +1 -0
  140. package/dist/web/assets/index-CGLcb3HY.js +1 -0
  141. package/dist/web/assets/{index-kWBxPqIX.js → index-CPvOeQPX.js} +1 -1
  142. package/dist/web/assets/index-Cjbe0JKM.js +1 -0
  143. package/dist/web/assets/index-CmYoJWUm.js +1 -0
  144. package/dist/web/assets/index-CtUFrjKe.js +1 -0
  145. package/dist/web/assets/index-DDvDRMTK.js +1 -0
  146. package/dist/web/assets/index-DSpndwAR.css +1 -0
  147. package/dist/web/assets/index-D_JjTHxi.js +1 -0
  148. package/dist/web/assets/index-DbuwcnbT.js +1 -0
  149. package/dist/web/assets/index-DcXyS0nN.js +1 -0
  150. package/dist/web/assets/index-Dcl9ruKA.js +1 -0
  151. package/dist/web/assets/index-DgwALPNA.js +121 -0
  152. package/dist/web/assets/{index-DoN1FTEe.js → index-DkE8hRT1.js} +2 -2
  153. package/dist/web/assets/index-DsyRBZ4h.js +1 -0
  154. package/dist/web/assets/{index-29zav3JI.js → index-DuudNhLL.js} +4 -4
  155. package/dist/web/assets/index-Gc4F0b2f.js +1 -0
  156. package/dist/web/assets/index-HGqqwKoV.js +13 -0
  157. package/dist/web/assets/index-KchrJnno.js +3 -0
  158. package/dist/web/assets/{index-B0KNSyji.js → index-Tmi2BPYU.js} +1 -1
  159. package/dist/web/assets/index-Ya4GuDs0.js +1 -0
  160. package/dist/web/assets/index-_aDaKqLB.js +1 -0
  161. package/dist/web/assets/index-_qwOAotB.js +1 -0
  162. package/dist/web/assets/index-hnIkczza.js +7 -0
  163. package/dist/web/assets/{infoDiagram-5YYISTIA-D3Q__m62.js → infoDiagram-5YYISTIA-CifuVY6C.js} +1 -1
  164. package/dist/web/assets/{ishikawaDiagram-YF4QCWOH-CcvCBuZ5.js → ishikawaDiagram-YF4QCWOH-Cd60vQUi.js} +1 -1
  165. package/dist/web/assets/{journeyDiagram-JHISSGLW-COZU4LNt.js → journeyDiagram-JHISSGLW-Cb3Xl_wl.js} +1 -1
  166. package/dist/web/assets/{kanban-definition-UN3LZRKU-BrXjBoAU.js → kanban-definition-UN3LZRKU-Ei6ThuZt.js} +1 -1
  167. package/dist/web/assets/{linear-BgP1STFi.js → linear-CDZJx-o2.js} +1 -1
  168. package/dist/web/assets/mermaid-GHXKKRXX-DFxyxD7G.js +331 -0
  169. package/dist/web/assets/{mindmap-definition-RKZ34NQL-CgjSrE5r.js → mindmap-definition-RKZ34NQL-B0ygxzkx.js} +1 -1
  170. package/dist/web/assets/navViewState-Ck_HK-TK.js +1 -0
  171. package/dist/web/assets/{pieDiagram-4H26LBE5-DTfe1sKA.js → pieDiagram-4H26LBE5-B2FdrvDv.js} +1 -1
  172. package/dist/web/assets/{quadrantDiagram-W4KKPZXB-D95hfh0q.js → quadrantDiagram-W4KKPZXB-CwpOTy3d.js} +1 -1
  173. package/dist/web/assets/{requirementDiagram-4Y6WPE33-DtSLi7Mh.js → requirementDiagram-4Y6WPE33-ExdZNzLQ.js} +1 -1
  174. package/dist/web/assets/{sankeyDiagram-5OEKKPKP-gi_dJpcU.js → sankeyDiagram-5OEKKPKP-u0EZKD7D.js} +1 -1
  175. package/dist/web/assets/{sequenceDiagram-3UESZ5HK-DKQ9a72t.js → sequenceDiagram-3UESZ5HK-BXHMy5DY.js} +1 -1
  176. package/dist/web/assets/{spaces-B2Ccyh_T.js → spaces-C8n7xQPx.js} +1 -1
  177. package/dist/web/assets/{stateDiagram-AJRCARHV-Bz7tmSqa.js → stateDiagram-AJRCARHV-DMXx7ell.js} +1 -1
  178. package/dist/web/assets/stateDiagram-v2-BHNVJYJU-Bydq1_By.js +1 -0
  179. package/dist/web/assets/theme-BBnHttAf.js +1 -0
  180. package/dist/web/assets/{timeline-definition-PNZ67QCA-BfMXPwhV.js → timeline-definition-PNZ67QCA-DtqVG_4u.js} +1 -1
  181. package/dist/web/assets/{vennDiagram-CIIHVFJN-WLxW2KT5.js → vennDiagram-CIIHVFJN-Dom0ex8r.js} +1 -1
  182. package/dist/web/assets/{wardley-L42UT6IY-DiiqwIdq.js → wardley-L42UT6IY-C-RstmuQ.js} +1 -1
  183. package/dist/web/assets/{wardleyDiagram-YWT4CUSO-DmCukWuw.js → wardleyDiagram-YWT4CUSO-C8CzNfdf.js} +1 -1
  184. package/dist/web/assets/{xychartDiagram-2RQKCTM6-Cfq1W2tT.js → xychartDiagram-2RQKCTM6-1AxVTyB6.js} +1 -1
  185. package/dist/web/index.html +2 -2
  186. package/native/auth-native/prebuilds/linux-arm64/auth-native.node +0 -0
  187. package/native/auth-native/prebuilds/linux-x64/auth-native.node +0 -0
  188. package/native/auth-native/prebuilds/win32-arm64/auth-native.node +0 -0
  189. package/native/auth-native/prebuilds/win32-x64/auth-native.node +0 -0
  190. package/package.json +1 -1
  191. package/dist/web/assets/AppErrorBoundary-DWpgwxFV.js +0 -1
  192. package/dist/web/assets/NavScopeBoundary-D8Lf1G0U.js +0 -1
  193. package/dist/web/assets/channel-BGdXootG.js +0 -1
  194. package/dist/web/assets/classDiagram-4FO5ZUOK-CPcnLy_H.js +0 -1
  195. package/dist/web/assets/classDiagram-v2-Q7XG4LA2-CPcnLy_H.js +0 -1
  196. package/dist/web/assets/client-DSIbyfoz.js +0 -2
  197. package/dist/web/assets/connection-DYZn9oPZ.js +0 -1
  198. package/dist/web/assets/export-Bq8ZECqX.js +0 -2
  199. package/dist/web/assets/highlighted-body-OFNGDK62-CDPBxM_E.js +0 -1
  200. package/dist/web/assets/index-AksnytJj.js +0 -1
  201. package/dist/web/assets/index-B8xhhYDh.css +0 -1
  202. package/dist/web/assets/index-BUrlrKap.js +0 -1
  203. package/dist/web/assets/index-B_5-HLed.js +0 -62
  204. package/dist/web/assets/index-BfmoxdpP.js +0 -1
  205. package/dist/web/assets/index-Bo3e-ohM.js +0 -3
  206. package/dist/web/assets/index-BrYV9gV_.js +0 -1
  207. package/dist/web/assets/index-C8XUtAvK.js +0 -1
  208. package/dist/web/assets/index-C9uil5my.js +0 -13
  209. package/dist/web/assets/index-CKpWHSp9.js +0 -1
  210. package/dist/web/assets/index-CLKBgQxV.js +0 -1
  211. package/dist/web/assets/index-CTyyUNWj.js +0 -7
  212. package/dist/web/assets/index-D7cg9qYZ.js +0 -1
  213. package/dist/web/assets/index-D7dg8R_q.js +0 -1
  214. package/dist/web/assets/index-DCSpedV_.js +0 -1
  215. package/dist/web/assets/index-DLbD0Nx5.js +0 -1
  216. package/dist/web/assets/index-DaEzbvvu.js +0 -1
  217. package/dist/web/assets/index-DhbcjMZF.js +0 -1
  218. package/dist/web/assets/index-Dw2h88mF.js +0 -1
  219. package/dist/web/assets/index-FcMtfmKv.js +0 -1
  220. package/dist/web/assets/index-XFq9Kgg0.js +0 -1
  221. package/dist/web/assets/index-iI2mM43w.js +0 -1
  222. package/dist/web/assets/index-oXOF7lko.js +0 -1
  223. package/dist/web/assets/locale-CANfezJ4.js +0 -17
  224. package/dist/web/assets/mermaid-GHXKKRXX-_JLagMll.js +0 -321
  225. package/dist/web/assets/navViewState-DS5LnMYc.js +0 -1
  226. package/dist/web/assets/settings-CcwMWXbp.js +0 -42
  227. package/dist/web/assets/stateDiagram-v2-BHNVJYJU-D6-wdUbw.js +0 -1
  228. package/dist/web/assets/theme-DlDhDxeD.js +0 -1
@@ -1,11 +1,13 @@
1
1
  # Installation
2
2
 
3
- Kiki ships in three forms that share one daemon (the background process Kiki keeps running so all forms share session data) and one session store: the **Kiki desktop app** for Windows, Linux, and macOS, the **CLI/TUI** (TUI — the text-based interface inside the terminal) for the terminal, and a local **server** for browser and API clients. This page covers how to install and update each form; see [First launch](./first-launch.md) for what to do after installation.
3
+ Kiki ships as three forms — the **Kiki desktop app** for Windows, Linux, and macOS, the **CLI/TUI** (TUI — the text interface you type into inside a terminal), and a local **server** for browser and API clients. They share one background daemon (the process Kiki keeps running so every form sees the same session data) and one session store, so you can start a task in the terminal and pick it up in the desktop app.
4
+
5
+ This page covers installing and updating each form. [First launch](./first-launch.md) covers what to do next.
4
6
 
5
7
  ::: tip Before you install
6
- Kiki's terminal form runs fine in any modern terminal — Windows Terminal and your system's built-in terminal need no adjustments.
8
+ Kiki's terminal form runs in any modern terminal. Windows Terminal and your system's built-in terminal need no changes.
7
9
 
8
- For the best visual experience (sharper font rendering and icon display), use a terminal with true-color and ligature support, such as [Kitty](https://sw.kovidgoyal.net/kitty/) or [Ghostty](https://ghostty.org/). This is optional; everything works without it.
10
+ A terminal with true-color and font ligatures renders the interface more crisply — [Kitty](https://sw.kovidgoyal.net/kitty/) and [Ghostty](https://ghostty.org/) are two good choices. Any terminal works if you skip this.
9
11
  :::
10
12
 
11
13
  ## Install the desktop app
@@ -25,20 +27,29 @@ macOS needs **13.5 or later**; that floor comes from the bundled runtime, so it
25
27
  2. Download the desktop bundle for your system and its adjacent `.sha256` file. Compare the published hash with your downloaded file (`shasum -a 256 <file>` on macOS, `sha256sum <file>` on Linux, or `Get-FileHash <file> -Algorithm SHA256` in Windows PowerShell).
26
28
  3. Install it: run the Windows installer or `sudo apt install ./Kiki_*.deb`; on Linux AppImage, run `chmod +x Kiki_*.AppImage` then `./Kiki_*.AppImage`; on macOS, mount the dmg and drag Kiki to Applications.
27
29
 
28
- The macOS dmg is **not Apple-signed or notarized**. After verifying it, Control-click the app in Applications and choose **Open** on first launch, then confirm **Open** in the dialog. If macOS still blocks it and you trust the verified download, remove quarantine with `xattr -dr com.apple.quarantine /Applications/Kiki.app`; this disables Gatekeeper's quarantine check for that app copy. To run its CLI from a terminal, first check that `/usr/local/bin/kiki` does not already exist, then run `sudo mkdir -p /usr/local/bin` followed by `sudo ln -s /Applications/Kiki.app/Contents/MacOS/kiki-server /usr/local/bin/kiki`. The Windows SmartScreen note and updater details are in [Kiki desktop](./desktop-app.md).
30
+ The macOS dmg is **not Apple-signed or notarized**. After verifying the hash, Control-click the app in Applications and choose **Open** on first launch, then confirm **Open** in the dialog. If macOS still blocks it, remove the quarantine flag from that copy with `xattr -dr com.apple.quarantine /Applications/Kiki.app`.
31
+
32
+ The dmg puts no `kiki` command on your `PATH`. To use the bundled CLI from a terminal, first check that `/usr/local/bin/kiki` does not already exist, then run:
33
+
34
+ ```sh
35
+ sudo mkdir -p /usr/local/bin
36
+ sudo ln -s /Applications/Kiki.app/Contents/MacOS/kiki-server /usr/local/bin/kiki
37
+ ```
38
+
39
+ For the Windows SmartScreen prompt and updater details, see [Kiki desktop](./desktop-app.md).
29
40
 
30
41
  ## Install the CLI
31
42
 
32
- For a terminal-only install, choose a standalone executable on [GitHub Releases](https://github.com/X-T-E-R/kiki/releases) under `kiki-v<version>`. There is no separate Windows CLI download; the Windows desktop installer provides `kiki`.
43
+ For a terminal-only install, pick the standalone executable for your platform from a `kiki-v<version>` tag on [GitHub Releases](https://github.com/X-T-E-R/kiki/releases). Windows has no standalone CLI file; the desktop installer provides `kiki` there.
33
44
 
34
45
  | Platform | Standalone file |
35
46
  | --- | --- |
36
47
  | Linux x64 / ARM64 | `kiki-linux-x64` / `kiki-linux-arm64` |
37
48
  | macOS Intel / Apple Silicon | `kiki-darwin-x64` / `kiki-darwin-arm64` |
38
49
 
39
- Download its `<filename>.sha256` file, compare its hash, rename the downloaded executable to `kiki`, set executable permission with `chmod +x kiki`, and put it on your `PATH`. A standalone SEA executable does not require Node.js. `kiki desktop` launches the desktop app when installed, or shows an installation link when absent.
50
+ Download the file together with its `<filename>.sha256` companion, compare the two hashes, rename the executable to `kiki`, run `chmod +x kiki`, and put it somewhere on your `PATH`. A standalone executable needs no Node.js. Once the desktop app is installed, `kiki desktop` opens it; without an installation it prints a download link.
40
51
 
41
- With Node.js 24.15.0 or later, npm offers two alternatives:
52
+ With Node.js 24.15.0 or later you can install from npm instead:
42
53
 
43
54
  ```sh
44
55
  npm install -g kiki-agent # CLI/TUI and the matching desktop build
@@ -46,11 +57,13 @@ npm install -g kiki-agent-lite # CLI/TUI only
46
57
  kiki --version
47
58
  ```
48
59
 
49
- Choose one npm package, not both at the same time: each supplies the same `kiki` command. The full package downloads and SHA-256-verifies the platform desktop asset during installation, so it needs network access and supports Windows/Linux x64 and macOS Intel/Apple Silicon; the lite package does not download a desktop bundle. On Windows, [Git for Windows](https://gitforwindows.org/) is a required shell dependency for both install routes. Install it before first launch; if Git Bash is installed in a custom location, set `KIKI_SHELL_PATH` to the absolute path of `bash.exe`.
60
+ Install one of the two, not both — each one provides the same `kiki` command. `kiki-agent` also downloads the desktop build for your platform and verifies its SHA-256, so it needs network access during install and covers Windows and Linux x64 plus macOS Intel and Apple Silicon. `kiki-agent-lite` ships the CLI only.
61
+
62
+ On Windows, both packages need [Git for Windows](https://gitforwindows.org/) for their shell dependency — install it before your first run. If you installed Git Bash somewhere other than the default location, set `KIKI_SHELL_PATH` to the absolute path of `bash.exe`.
50
63
 
51
64
  ### Development from source
52
65
 
53
- Kiki's source repository is a pnpm (a Node.js package manager) workspace. Developing from source is for users who want to hack on or debug the CLI itself. It requires Node.js `24.15.0` or later and pnpm `10.33.0`. From the repository root:
66
+ Working on the CLI itself needs Node.js `24.15.0` or later and pnpm `10.33.0`. The repository is a pnpm (Node.js package manager) workspace; from its root:
54
67
 
55
68
  ```sh
56
69
  node --version
@@ -59,7 +72,7 @@ pnpm install
59
72
  pnpm dev:cli -- --help
60
73
  ```
61
74
 
62
- The root `dev:cli` script starts the local development environment and forwards `--help` to the CLI entry point; no published package or global install is required.
75
+ `dev:cli` starts the local development build and forwards `--help` to the CLI entry point, so nothing needs to be published or installed globally.
63
76
 
64
77
  ## Update and uninstall
65
78
 
@@ -69,9 +82,11 @@ For a release build, verify the installed version before upgrading:
69
82
  kiki --version
70
83
  ```
71
84
 
72
- **Update**: replace a standalone `kiki` executable with the matching newer Release asset, or run `npm install -g kiki-agent@latest` / `npm install -g kiki-agent-lite@latest` for an npm installation. On Windows, the desktop app can also check and install signed NSIS updates from **Settings → About** — see [Kiki desktop](./desktop-app.md#update). Linux and macOS desktop bundles require a new manual download; they do not use that Windows updater feed.
85
+ **Update**: replace a standalone `kiki` executable with the newer file from the matching Release asset, or run `npm install -g kiki-agent@latest` / `npm install -g kiki-agent-lite@latest` for an npm install. On Windows the desktop app can also check for and install signed NSIS updates from **Settings → About**; see [Kiki desktop](./desktop-app.md#update). Linux and macOS desktop bundles have no in-app updater, so download the newer bundle yourself.
86
+
87
+ **Uninstall**: delete a standalone `kiki` executable from your `PATH`, or run `npm uninstall -g kiki-agent` / `npm uninstall -g kiki-agent-lite`. That removes the CLI only — remove the desktop app through the system: **Installed apps** in Windows Settings, your package manager for a Linux deb, or dragging Kiki.app out of Applications on macOS. To stop working on the source, delete your checkout.
73
88
 
74
- **Uninstall**: remove a standalone `kiki` executable from your `PATH`, or run `npm uninstall -g kiki-agent` / `npm uninstall -g kiki-agent-lite`. npm uninstall does not remove an app copied to Applications or a Windows installer it ran; uninstall those through the OS. Source development is removed by deleting the checkout. For the desktop bundles, use **Installed apps** in Windows Settings, your package manager for a Linux deb, or delete Kiki.app from Applications on macOS. Removing the executable does not delete your data — session history and configuration live under `~/.kiki/` and stay available to the next installation; see [Data locations](../configuration/data-locations.md) if you want to remove it as well.
89
+ None of these steps touch your data. Session history and configuration live under `~/.kiki/` and are still there after you reinstall; [Data locations](../configuration/data-locations.md) explains how to remove them deliberately.
75
90
 
76
91
  ## Next steps
77
92
 
@@ -1,12 +1,12 @@
1
1
  # Common use cases
2
2
 
3
- This page collects typical Kiki scenarios along with ready-to-use prompt examples — copy them as-is or adapt them to your needs.
3
+ Each section below is a situation you will actually hit, with prompts you can send as they are. Adapt the wording to your project.
4
4
 
5
5
  ## Understanding an unfamiliar project
6
6
 
7
- When taking over an unfamiliar repository, a good first step is to enter Plan mode (the mode where the agent outputs an action plan and waits for your confirmation before touching anything), so the agent outputs a research plan before modifying files. Start the CLI with the `--plan` flag, press `Shift-Tab`, or type `/plan` in a session — all three do the same:
7
+ Plan mode (the agent writes out what it intends to do and waits for your go-ahead before touching files) is worth turning on before you ask for changes in code you have not read yet. Start the CLI with `--plan`, press `Shift-Tab`, or type `/plan` in a session:
8
8
 
9
- ```
9
+ ```text
10
10
  Give me an overview of this repository's architecture. Specifically:
11
11
  1. Where is the entry point and what happens at startup?
12
12
  2. How do the main modules depend on each other?
@@ -16,21 +16,21 @@ Finally, draw a simple module dependency diagram.
16
16
 
17
17
  You can also focus on a specific question:
18
18
 
19
- ```
19
+ ```text
20
20
  How does the event loop in src/runtime work? Where do events originate, and what consumes them?
21
21
  ```
22
22
 
23
- ```
23
+ ```text
24
24
  How is "permission approval" implemented in this project? Which files are involved, and what are the key types?
25
25
  ```
26
26
 
27
- For large-scale investigations, you can have the main agent (the agent you talk to directly) dispatch **sub-agents** (lower-level agents spawned by the main agent that handle sub-tasks in parallel). See [Agents and sub-agents](../customization/agents.md).
27
+ For a large investigation, ask the main agent (the one you are talking to) to split the work across sub-agents, which work in parallel on pieces of it. [Agents and sub-agents](../customization/agents.md) covers how to prompt for that.
28
28
 
29
29
  ## Implementing a new feature
30
30
 
31
- Describe the requirement and acceptance criteria clearly. For complex changes, use Plan mode to confirm the approach before execution:
31
+ State the requirement and what "done" looks like. For a change that touches several files, confirm the approach in Plan mode before it runs:
32
32
 
33
- ```
33
+ ```text
34
34
  Add a retry utility under src/utils:
35
35
  - Signature: retry<T>(fn: () => Promise<T>, options): Promise<T>
36
36
  - Options: maxAttempts, initialDelayMs, backoffFactor
@@ -40,15 +40,15 @@ Add a retry utility under src/utils:
40
40
 
41
41
  If the result isn't right, just describe what you want changed — no need to edit manually:
42
42
 
43
- ```
43
+ ```text
44
44
  The backoff calculation used a fixed value. I'd like to add some jitter to avoid the thundering-herd effect. Update the implementation and the tests.
45
45
  ```
46
46
 
47
47
  ## Fixing a bug
48
48
 
49
- Give the symptom, reproduction steps, and expected behavior all at once to avoid back-and-forth clarification:
49
+ Give the symptom, how to reproduce it, and what you expected — all in one message, so the agent does not have to ask you back:
50
50
 
51
- ```
51
+ ```text
52
52
  Running npm test occasionally produces this error:
53
53
 
54
54
  TypeError: Cannot read properties of undefined (reading 'id')
@@ -57,89 +57,89 @@ Running npm test occasionally produces this error:
57
57
  It only appears in test cases that concurrently trigger multiple updates. Please locate the cause and fix it, then run the full test suite to confirm.
58
58
  ```
59
59
 
60
- When the root cause is unclear, ask the agent to investigate before making changes:
60
+ When you do not know the cause yet, ask for investigation before any edits:
61
61
 
62
- ```
62
+ ```text
63
63
  User feedback: after a successful login, the first page refresh sends you back to the login page; a second refresh works fine. Please find the most likely causes first and list the most suspicious locations. I'll confirm the direction before you start making changes.
64
64
  ```
65
65
 
66
- For purely mechanical tasks, you can let the agent run freely:
66
+ When the fix is mechanical, you can hand it over as-is:
67
67
 
68
- ```
68
+ ```text
69
69
  Run the test suite, fix every failing test case, then run it again to confirm everything is green.
70
70
  ```
71
71
 
72
72
  ## Writing tests and refactoring
73
73
 
74
- Tasks with clear boundaries and explicit acceptance criteria are particularly well-suited for the agent:
74
+ Work with a clear boundary and a checkable result is the easiest kind to hand over:
75
75
 
76
- ```
76
+ ```text
77
77
  src/parser/markdown.ts currently has almost no tests. Please add a unit test suite covering: normal paragraphs, nested lists, code blocks, tables, blockquotes, and mixed content. Follow the testing style already used in the project.
78
78
  ```
79
79
 
80
- ```
80
+ ```text
81
81
  Extract the repeated "read body → validate → log → respond" pattern in src/handlers into a middleware. Run the tests afterwards to make sure existing behavior is unchanged.
82
82
  ```
83
83
 
84
- For multi-file refactors, use Plan mode first to confirm the approach. You can also `/fork` the session into an experimental branch and switch to it from `/sessions` — forking itself never disrupts the original session, so you can simply switch back if you don't like the result.
84
+ For a refactor that spans several files, confirm the approach in Plan mode first. Another option is to `/fork` the session, try the refactor in the copy, and switch between them from `/sessions` — the original session keeps running either way.
85
85
 
86
86
  ## One-off scripts and automation
87
87
 
88
- Batch file edits, statistics collection, and research comparisons can all be done with a single prompt:
88
+ Batch file edits, statistics, and research comparisons each fit in a single prompt:
89
89
 
90
- ```
90
+ ```text
91
91
  Change all var declarations in .js files under src to const or let, preferring const where possible. Run lint once you're done to confirm.
92
92
  ```
93
93
 
94
- ```
94
+ ```text
95
95
  Analyze the access logs in logs/ from the past 7 days. For each API path, compute the call count, p50, and p99 response times, and output the results as a Markdown table.
96
96
  ```
97
97
 
98
- ```
98
+ ```text
99
99
  Research the main dependency injection options for TypeScript (tsyringe, inversify, awilix). Compare them across three dimensions: API style, decorator requirements, and runtime overhead. Give me a recommendation that fits on one page.
100
100
  ```
101
101
 
102
- For batch tasks you know are safe, skip the per-call approval prompts: start the CLI with `--yolo` (the whole session runs in YOLO mode, including approval-free access to sensitive files unless explicitly denied; Plan mode exit review still applies), or type `/yolo` in a session to toggle it — both turn on the same YOLO mode. Alternatively, add pre-approved allowlist rules for specific tools in [Configuration files](../configuration/config-files.md#permission).
102
+ For a batch of work you already trust, you can stop approving each call. Start the CLI with `--yolo` or type `/yolo` in a session — both switch the session to YOLO mode, where tool calls including reads of sensitive files run without asking, unless a permission rule denies them. Exiting Plan mode is still reviewed. For a narrower option, pre-approve specific tools in the `[permission]` section of [Configuration files](../configuration/config-files.md#permission).
103
103
 
104
104
  ## Scheduled tasks and reminders
105
105
 
106
- Inside an interactive session, you can ask the agent to set one-time reminders or recurring tasks. The agent generates a cron expression (a standard format for describing "when to run") in your local timezone and re-injects the prompt into the same session when it fires:
106
+ In an interactive session, ask the agent for a one-time reminder or a recurring task. It writes a cron expression (the standard way to express "when to run") in your local timezone and re-sends the prompt into the same session each time it fires:
107
107
 
108
- ```
108
+ ```text
109
109
  Remind me at 2:30 PM to check the deployment.
110
110
  ```
111
111
 
112
- ```
112
+ ```text
113
113
  Every weekday at 9 AM, summarize recent CI failures for me.
114
114
  ```
115
115
 
116
- ```
116
+ ```text
117
117
  Check the production health endpoint every hour and let me know if anything looks wrong.
118
118
  ```
119
119
 
120
- ```
120
+ ```text
121
121
  Come back in about 10 minutes and check whether the build has finished.
122
122
  ```
123
123
 
124
- Scheduled tasks are bound to their session — closing the terminal is fine, and they are reloaded and continue firing when you resume the same session with `kiki --session`. They are not carried into brand-new sessions. Recurring tasks expire after 7 days — on the final trigger the agent receives a "stale" signal and decides whether to stop or renew based on your original instructions.
124
+ A schedule belongs to the session that created it. Closing the terminal is fine — resume that same session with `kiki --session` and the schedule reloads and keeps firing. A brand-new session starts with no schedules. Recurring schedules stop after 7 days; on the last run the agent is told the schedule has expired and renews it only if your original instructions asked for that.
125
125
 
126
- To see what tasks are currently pending, just ask the agent (it calls `Cron` with the read-only `list` action). To cancel a task, tell the agent to remove it or reference its 8-character ID. For the full tool reference, see [Scheduled tasks](../reference/tools.md#scheduled-tasks). The global kill switch is `KIKI_DISABLE_CRON=1`.
126
+ To see what is pending, just ask — the agent reads the schedule list. To cancel one, tell the agent to remove it or give its 8-character ID. [Scheduled tasks](../reference/tools.md#scheduled-tasks) documents the tool, and `KIKI_DISABLE_CRON=1` turns scheduled tasks off entirely.
127
127
 
128
128
  ## Generating and maintaining documentation
129
129
 
130
- ```
130
+ ```text
131
131
  I just changed the interface signature in src/auth/login.ts. Please update the corresponding JSDoc, the example code in README, and any paragraphs in docs/en/guides that mention this interface.
132
132
  ```
133
133
 
134
- ```
134
+ ```text
135
135
  For every public function under src/api that is missing a docstring, add a documentation comment following the style of the existing ones.
136
136
  ```
137
137
 
138
- ```
138
+ ```text
139
139
  Based on the command implementations in src/cli, generate a draft command reference listing each subcommand, its arguments, and default values. Put it in docs/en/reference for me to review later.
140
140
  ```
141
141
 
142
- When you need a record or a retrospective, use `kiki export <sessionId>` to package the session as a ZIP, or use `/export-md` inside the TUI to export a readable Markdown transcript.
142
+ To keep a record or do a retrospective, `kiki export <sessionId>` packages a session as a ZIP; `/export-md` inside the TUI writes a readable Markdown transcript.
143
143
 
144
144
  ## Next steps
145
145
 
@@ -1,6 +1,6 @@
1
1
  # Goals
2
2
 
3
- Goals keep Kiki working toward a defined outcome across turns (a turn is one full pass of the agent handling one message). Unlike a normal prompt that says what to do next, a goal says what must become true. Use `/goal` to enter goal mode when the task has a clear finish line, but the next useful step depends on what the agent learns while it works — for example, fixing a batch of failing tests or tracking down the root cause of a broken build.
3
+ A goal keeps Kiki working toward an outcome across turns (one turn is a full pass of the agent handling one message). A prompt says what to do next; a goal says what must become true. Use `/goal` when there is a finish line but the next useful step depends on what the agent finds along the way — a batch of failing tests, or the root cause of a broken build.
4
4
 
5
5
  ## Start a goal
6
6
 
@@ -24,7 +24,7 @@ Avoid goals that only name a broad direction:
24
24
  /goal Find all bugs in this codebase.
25
25
  ```
26
26
 
27
- That goal does not say what counts as success, what to inspect, or when to stop. The agent may block immediately, or keep working far longer than you expected.
27
+ That goal says nothing about what success looks like, what to inspect, or when to stop, so the agent may block immediately or work far longer than you expected.
28
28
 
29
29
  ### When to use goals
30
30
 
@@ -78,9 +78,9 @@ A goal can stop in three ways:
78
78
  - **paused**: you paused it, interrupted the turn, resumed a session that had an active goal, or hit a model, provider, or runtime error
79
79
  - **blocked**: Kiki needs input, cannot complete the goal as stated, or reached a budget limit. When the agent blocks a goal, it writes a short message explaining why.
80
80
 
81
- Write stop conditions into the objective. `/goal` does not have a separate stop-limit flag.
81
+ Put your stop conditions in the objective itself — there is no separate stop-limit flag.
82
82
 
83
- A blocked goal does not freeze work it already started. When a task launched for a blocked goal finishes, its result wakes the main agent to process that one completion; the goal itself stays blocked and does not resume on its own. Pausing or cancelling the goal, and an exhausted budget, still apply as before and hold the result for your next message.
83
+ A blocked goal does not cancel work it already started. When a task launched for it finishes, the result wakes the main agent to process that one completion; the goal itself stays blocked until you resume it. The same result is held for your next message if you pause or cancel the goal, or if the budget runs out.
84
84
 
85
85
  ## Manage goals in the web UI
86
86
 
@@ -90,13 +90,13 @@ Use the strip actions to pause an active goal, resume a paused or blocked goal,
90
90
 
91
91
  ## Queue upcoming goals
92
92
 
93
- Agents sometimes complete a goal quickly while the next piece of work is already on your mind — previously you had to wait for the goal to finish, return to the TUI, and submit the next one manually. Use `/goal next` to queue upcoming goals without interrupting the current one:
93
+ When a goal finishes quickly and you already know what comes next, queue it instead of waiting:
94
94
 
95
95
  ```sh
96
96
  /goal next Update the release notes after the tests pass
97
97
  ```
98
98
 
99
- Upcoming goals are not visible to the agent while the current goal is running. When the current goal completes, Kiki starts the first upcoming goal in the same way as users enter `/goal <objective>`.
99
+ The agent does not see queued goals while the current one runs. Once the current goal completes, Kiki starts the first queued goal exactly as if you had typed `/goal <objective>`.
100
100
 
101
101
  If no goal is active, `/goal next <objective>` starts that objective immediately. It behaves like `/goal <objective>` and shows a status message before the goal starts.
102
102
 
@@ -114,7 +114,9 @@ If the current goal is paused, canceled, or blocked, Kiki does not start the nex
114
114
 
115
115
  Goal mode is useful for work that can be checked with files, tests, command output, generated artifacts, or a clear written report. It is less useful for a one-off edit or a question that only needs one answer.
116
116
 
117
- The permission mode decides whether tool calls need your approval. In `manual` mode, goal work may pause for tool call approval. For unattended work (no one present to approve or answer questions), use a permission mode that matches the risk of the repository and the commands the agent may run.
117
+ Goal mode suits work you can check — files, tests, command output, generated artifacts, a written report. It is overkill for a one-off edit or a question with one answer.
118
+
119
+ Your permission mode decides whether tool calls wait for you. In `manual` mode, goal work pauses for approval on tool calls; for unattended work, pick a mode that matches the risk of the repository and the commands the agent will run.
118
120
 
119
121
  In non-interactive prompt mode (`kiki -p`, which runs one prompt and exits), only goal creation is supported:
120
122
 
@@ -1,49 +1,47 @@
1
1
  # Interaction and input
2
2
 
3
- The Kiki CLI and TUI run as an interactive terminal user interface built around three components: the input box, the conversation view, and the status bar. This page covers how to enter text, paste media, navigate the approval flow, and switch between modes.
3
+ The CLI and TUI are a terminal interface built from the input box, the conversation view, and the status bar. This page covers typing and pasting, the approval flow, and the modes you can switch between.
4
4
 
5
5
  ## Input box basics
6
6
 
7
- The input box accepts free-form text. Press `Enter` to send, or `Shift-Enter` / `Ctrl-J` to insert a newline. When the input box is empty, press `↑` / `↓` to browse the input history for the current working directory, including previous shell commands.
7
+ The input box accepts free-form text. `Enter` sends; `Shift-Enter` / `Ctrl-J` insert a newline. When it is empty, `↑` / `↓` browse what you have typed before in this working directory, shell commands included.
8
8
 
9
- **Exiting the CLI**: press `Ctrl-D` with the input box empty, press `Ctrl-C` twice while idle, or type `/exit`. All three require the agent to be idle — pressing `Ctrl-C` or `Esc` during streaming output only interrupts the current turn, it does not exit the program.
9
+ **Leaving the CLI**: `Ctrl-D` with an empty input box, `Ctrl-C` twice while idle, or `/exit`. All three need the agent to be idle — during streaming output, `Ctrl-C` and `Esc` only interrupt the current turn.
10
10
 
11
11
  ## Pasting images and video
12
12
 
13
- Kiki supports pasting images and video directly into the input box, so you can discuss screenshots, UI mockups, architecture diagrams, or code demos without uploading or converting files first.
14
-
15
- **Video input is a distinctive Kiki capability** — you can paste a video clip and have the model analyze its content, UI flow, or code walkthrough.
13
+ You can paste images and video straight into the input box, so a screenshot, UI mockup, architecture diagram or code demo can go into the conversation without uploading or converting anything first.
16
14
 
17
15
  How to paste:
18
16
 
19
17
  - **macOS / Linux**: `Ctrl-V`
20
18
  - **Windows**: `Alt-V`
21
19
 
22
- After pasting, the input box shows a placeholder that you can edit like normal text; on submit, the placeholder is replaced with the actual content. A plain-text clipboard falls back to ordinary paste. Media support depends on whether the current model accepts image / video input (the model capability fields `image_in` / `video_in`); it is enabled by default when you are logged in to a Kimi Code account.
20
+ The pasted media shows up as an editable placeholder; on send, the real content replaces it. A plain-text clipboard just pastes as text. Whether media works at all depends on the current model accepting image / video input (the `image_in` / `video_in` capability fields); it is enabled by default on a Kimi Code account.
23
21
 
24
22
  ## Slash commands
25
23
 
26
24
  Anything starting with `/` is treated as a slash command. Typing `/` opens a completion menu that filters in real time as you keep typing; press `Esc` to close the menu. If nothing matches, the input is sent to the agent as a regular message.
27
25
 
28
- Active [Agent Skills](../customization/skills.md) (skill packages that extend what the agent can do) are automatically registered as slash commands: ordinary external Skills are invoked with `/skill:<name>`, external sub-skills appear as dotted commands such as `/parent.child`, and built-in Skills appear directly as `/<name>` in the slash command panel. If an external skill name does not conflict with a system slash command, you can also drop the `skill:` prefix and type `/<name>` directly.
26
+ Active [Agent Skills](../customization/skills.md) (skill packages that extend what the agent can do) are registered as slash commands. Ordinary external skills are invoked with `/skill:<name>`, external sub-skills appear as dotted commands such as `/parent.child`, and built-in skills appear directly as `/<name>`. When an external skill name does not clash with a system command, you can drop the `skill:` prefix and type `/<name>`.
29
27
 
30
- Inside a longer prompt, typing `/` after whitespace — including at the start of a later line — opens a skill-only completion menu. You can reference several Skills in one prompt this way: Kiki activates them together and runs them with the prompt as a single turn (one `/undo`, which reverts the previous turn's output, undoes the whole submission), and the prompt text is sent unchanged. A Skill mention in a prompt never carries arguments — activation is by name only; arguments remain a standalone `/skill:<name> args` concept. Built-in and plugin commands still only work at the very start of the input.
28
+ Inside a longer prompt, typing `/` after whitespace — including at the start of a later line — opens a skill-only completion menu. Reference several skills in one prompt that way: Kiki activates them together and runs them as a single turn, and one `/undo` reverts the whole submission. A skill mentioned inside a prompt is activated by name only and cannot carry arguments; arguments still need a standalone `/skill:<name> args`. Built-in and plugin commands only work at the very start of the input.
31
29
 
32
- Some commands are only available when the agent is idle — you need to press `Esc` to interrupt streaming output or context compression before using them. Mode-toggle and query commands like `/yolo`, `/plan`, `/help`, and `/btw` are always available. For the full list, see [Slash commands reference](../reference/slash-commands.md).
30
+ Some commands need the agent to be idle — press `Esc` to interrupt streaming output or context compression first. Mode toggles and queries like `/yolo`, `/plan`, `/help` and `/btw` are always available. [Slash commands reference](../reference/slash-commands.md) has the full list.
33
31
 
34
32
  ## File references
35
33
 
36
- Type `@` to trigger file-path completion. Selecting a path inserts its relative form into your message; the agent loads the file content directly when it reads the message. File references work in both git and non-git directories, and folder suggestions end with `/` so you can keep completing paths inside them. While Kiki's fast file-search component is still downloading in the background, Kiki falls back to a basic filesystem scan. Hidden paths are available, but `.git` is excluded from suggestions.
34
+ Type `@` to get file-path completion. Picking a path inserts its relative form into your message, and the agent reads the file when it picks up that message. It works in git and non-git directories alike, and folder suggestions end with `/` so you can keep completing paths inside them. While Kiki's fast file-search component is still downloading in the background, completion falls back to a plain filesystem scan. Hidden paths are suggested; `.git` is not.
37
35
 
38
36
  > `@` references and slash commands are two separate mechanisms: `@` gives the agent file context, while `/` invokes built-in features or Skills. After whitespace, `/` offers Skill completions only; use a leading `/` for built-in and plugin commands.
39
37
 
40
38
  ## Approval flow
41
39
 
42
- When the agent calls a tool with side effects — running commands, modifying files outside the workspace trust boundary — the TUI displays an approval panel for your confirmation. In a trusted working directory, `Write` / `Edit` inside that directory run without per-file approval; shell commands, workspace-external writes, workspace links to external targets, and sensitive-file access prompt in manual mode. Approvals are not triggered for regular tool calls in YOLO mode, nor for writes to plan files in Plan mode.
40
+ When a tool call has side effects — running a command, writing outside the workspace trust boundary — the TUI shows an approval panel. In a trusted working directory, `Write` / `Edit` inside it run without a per-file prompt; in manual mode, shell commands, writes outside the workspace, links to external targets and sensitive files all ask first. YOLO mode does not prompt for ordinary tool calls, and neither does Plan mode for writes to plan files.
43
41
 
44
- Use the arrow keys to select an option and press `Enter` to confirm, or press `1` / `2` / `3` to select by number directly. `Esc`, `Ctrl-C`, and `Ctrl-D` are all equivalent to rejecting.
42
+ Use the arrow keys and `Enter`, or press `1` / `2` / `3` to pick by number. `Esc`, `Ctrl-C`, and `Ctrl-D` all mean reject.
45
43
 
46
- The panel typically includes an **Approve for this session** option; selecting it auto-approves the same kind of call for the rest of the session. For permanent rules, add allow / deny entries in [Configuration files](../configuration/config-files.md#permission).
44
+ The panel usually offers **Approve for this session**, which approves that kind of call for the rest of the session. For rules that outlive a session, add allow / deny entries in [Configuration files](../configuration/config-files.md#permission).
47
45
 
48
46
  ## Mode switching
49
47
 
@@ -54,17 +52,19 @@ In Plan mode the agent first outputs an action plan and waits for your approval
54
52
  - Toggle: `Shift-Tab` or `/plan`
55
53
  - Clear the current plan: `/plan clear` (only while idle)
56
54
 
57
- After producing a plan the agent pauses for your review — you can approve it, reject it, or ask for revisions. Exiting Plan mode requires your confirmation even if YOLO mode is also active. Auto and Approve for me are the exceptions: plan exits are approved automatically and marked as "Auto-approved" in the transcript.
55
+ After writing the plan the agent pauses for you: approve it, reject it, or ask for changes. Leaving Plan mode asks for confirmation even when YOLO mode is on — except in Auto and Approve for me, where the exit is approved for you and marked "Auto-approved" in the transcript.
58
56
 
59
57
  ### Permission modes
60
58
 
61
- Select among Manual, Auto, Approve for me, and YOLO with `/permission`. **YOLO mode** (`/yolo`) auto-approves agent file access, including sensitive targets such as `.env` or SSH keys; an explicit deny rule still wins. Git-control paths may still prompt. Exiting Plan mode still requires review, and the agent can still ask you questions.
59
+ `/permission` switches between Manual, Auto, Approve for me, and YOLO.
60
+
61
+ **YOLO mode** (`/yolo`) approves agent file access without asking, including sensitive targets such as `.env` or SSH keys. An explicit deny rule still wins, and Git-control paths may still prompt. Leaving Plan mode still asks, and the agent can still put questions to you.
62
62
 
63
- **Auto mode** (`/auto`) approves ordinary tool actions and plan exits without prompting. It asks you before accessing sensitive files or workspace links to external targets, and the agent can still ask you questions. Explicit deny rules still block matching calls; dangerous Bash commands also request approval unless that guard is disabled.
63
+ **Auto mode** (`/auto`) approves ordinary tool actions and plan exits without prompting, and asks before sensitive files and workspace links to external targets. Explicit deny rules still block matching calls, and dangerous Bash commands still request approval unless that guard is turned off.
64
64
 
65
- **Approve for me** (`review`) behaves like Auto but routes policy-generated approval requests to a [configured reviewer](../configuration/config-files.md#reviewer-approval) first. An explicit `ask` rule always goes to you instead. A confident reviewer approval or denial is recorded with reviewer attribution. Uncertain or unavailable review goes to your ordinary approval panel; after three consecutive reviewer denials in a turn, later requests in that turn come directly to you. Agent questions remain separate from reviewer decisions; [the interaction setting](../configuration/config-files.md#interaction) controls whether questions block the turn.
65
+ **Approve for me** (`review`) works like Auto but sends policy-generated approval requests to a [configured reviewer](../configuration/config-files.md#reviewer-approval) first. An explicit `ask` rule always comes to you instead. A confident reviewer decision is recorded with the reviewer's attribution; an uncertain or unavailable one falls back to your approval panel, and after three reviewer denials in a turn the rest of that turn's requests come straight to you. Agent questions are separate from reviewer decisions, and [the interaction setting](../configuration/config-files.md#interaction) decides whether a question blocks the turn.
66
66
 
67
- If no approval client is attached (for example, during an unattended scheduled run), a request needing your approval is cancelled instead of granting access. Questions without an attached client are dismissed rather than waiting indefinitely.
67
+ With no approval client attached — an unattended scheduled run, for instance — a request that would need you is cancelled rather than granted, and a question is dismissed rather than left hanging.
68
68
 
69
69
  ::: warning
70
70
  YOLO mode skips confirmation for file writes and command execution. Only use it in working directories you trust.
@@ -72,13 +72,13 @@ YOLO mode skips confirmation for file writes and command execution. Only use it
72
72
 
73
73
  ### Shell mode
74
74
 
75
- Shell mode lets you run terminal commands without leaving the conversation. The command output is written into the conversation context, so the agent can see the results in later turns.
75
+ Shell mode runs terminal commands without leaving the conversation. Their output goes into the conversation context, so the agent can see the results in later turns.
76
76
 
77
- - Enter: type `!` in an empty input box, or paste a command that starts with `!`.
78
- - Exit: press `Backspace` or `Esc` in an empty input box; submitting a command also returns you to normal mode automatically.
79
- - Recall previous commands: with the input box empty in shell mode, press `↑` to browse earlier shell commands; recalling one keeps you in shell mode so it runs as a command again.
77
+ - Enter: type `!` in an empty input box, or paste a command starting with `!`.
78
+ - Exit: press `Backspace` or `Esc` in an empty input box. Submitting a command also returns you to normal mode.
79
+ - Recall previous commands: with the input box empty in shell mode, press `↑`; recalling one keeps you in shell mode so it runs again as a command.
80
80
 
81
- In shell mode the input box shows a `!` prompt on the left (in the desktop GUI the border also turns violet). For example, you can run `!git status` to check the repository state without opening a new terminal — the output goes straight into the conversation context.
81
+ The input box shows a `!` prompt on the left in shell mode (in the desktop GUI the border turns violet too). `!git status` checks the repository without opening another terminal, and its output lands in the conversation.
82
82
 
83
83
  ## During streaming output
84
84
 
@@ -90,9 +90,9 @@ The input box remains usable while the agent is thinking or calling tools, and s
90
90
 
91
91
  ## External editor
92
92
 
93
- Press `Ctrl-G` to send the current input content to an external editor. When you save and close, the text is written back into the input box; if you close without saving, the original content is preserved. This is handy when you need to enter large blocks of text or content with complex formatting.
93
+ `Ctrl-G` sends the current input to an external editor. Save and close to write the text back into the input box; close without saving and the original stays. This is the easy way to enter long or heavily formatted text.
94
94
 
95
- Editor priority: `/editor` config → `$VISUAL` environment variable → `$EDITOR` environment variable. If none are set, run `/editor` first to choose a default.
95
+ Kiki picks the editor in this order: the `/editor` config, then `$VISUAL`, then `$EDITOR`. With none of them set, run `/editor` to choose one.
96
96
 
97
97
  ## Next steps
98
98
 
@@ -1,42 +1,46 @@
1
1
  # Interface overview
2
2
 
3
- The Kiki desktop app and the browser GUI (the same interface used in a browser) share the same interface. A session is built around three areas: the conversation view, the input box, and the right rail. This page orients you in the interface; see [Workspace and session management](/en/guides/sessions) for boards, drafts, and recovery, and [Interaction and input](/en/guides/interaction) for the TUI counterpart.
3
+ The desktop app and the browser UI are the same interface, and a session in either is built from three areas: the conversation view, the input box, and the right rail. This page is a tour of those three. For sessions, boards and drafts see [Workspace and session management](/en/guides/sessions); for the terminal version of the same concepts see [Interaction and input](/en/guides/interaction).
4
4
 
5
5
  ## Conversation view
6
6
 
7
- The conversation view shows the session timeline: assistant messages, tool calls, approvals, questions, and background-task notices. Resolved questions, approvals, markers, and completion notices stay inline at their original position as compact one-line entries; consecutive entries fold into an expandable "Activity history" row, while failed or cancelled entries always remain individually visible. Consecutive identical marker dividers, such as goal updates, show only the latest entry with a repeat count (for example, "Goal updated ×12") when no message or tool call separates them. File references can be previewed, opened, or shown in their containing folder. Reopening a session or loading an agent's saved history shows model changes as dividers naming the previous and new model; changing only thinking effort does not add a divider.
7
+ This is the session timeline: assistant messages, tool calls, approvals, questions, and background-task notices.
8
8
 
9
- Long tool output and other large fields load in stages. Choose **Continue loading** to pull in the rest of a field that was cut short, with the row reporting how much is loaded. When that loading fails on a field that has an original to fetch — a tool's input or output, or a background task's own output, for example — the same place offers **Download original**, which saves the field's complete original content to your machine and reports its own saving, saved, and retry states. Retrying stays available, and not every field can be downloaded.
9
+ Anything that has been resolved — a question you answered, an approval you granted, a marker — collapses into a compact one-line entry that stays where it happened. Several in a row fold into an **Activity history** row you can expand. Failed and cancelled entries always stay visible on their own. Repeating markers such as goal updates show the latest one with a count ("Goal updated ×12") when nothing else separates them.
10
+
11
+ File references can be previewed, opened, or revealed in their folder. Reopening a session, or loading an agent's saved history, shows each model change as a divider naming the old and new model; a thinking-effort change on its own does not add one.
12
+
13
+ Long tool output and other large fields arrive in stages. **Continue loading** pulls in the rest of a truncated field, and the row tells you how much is loaded so far. If that fails on a field that has an original behind it — a tool's input or output, a background task's own output — the same row offers **Download original**, which writes the complete content to your machine and reports its own saving, saved, and retry states. Retrying stays available, and not every field can be downloaded.
10
14
 
11
15
  ## Input box
12
16
 
13
- The input box accepts free-form text. `Enter` sends; `Shift-Enter` / `Ctrl-J` insert a newline. When it is empty, `↑` / `↓` browse the input history for the current working directory. Images and videos can be pasted from the clipboard, subject to the current model's multimodal capabilities — see [Interaction and input](/en/guides/interaction) for the full behavior, which the GUI input box shares.
17
+ The input box accepts free-form text. `Enter` sends; `Shift-Enter` / `Ctrl-J` insert a newline. When it is empty, `↑` / `↓` browse what you have typed before in this working directory. You can paste images and video from the clipboard, as long as the current model accepts them — [Interaction and input](/en/guides/interaction) covers the details.
14
18
 
15
- Use the input box's **+** menu to add SSH hosts to the session. A host joined to a session is a resource of that session, not something each message carries, so the **Session SSH** control above the input box stays in place for as long as the host is joined: it lists the joined hosts, takes a host away on **X**, and opens the same host list from its own row to add or remove more. Adding a host makes it available to the session; it does not connect to it. In a new session (`/new`) the control reads **SSH to join**, and the selected hosts are joined to the created session before its first message is sent.
19
+ The **+** menu in the input box adds SSH hosts to the session. A joined host belongs to the session rather than to each message, so **Session SSH** stays above the input box for as long as one is joined: it lists them, removes one on **X**, and reopens the host list from its own row. Adding a host makes it available to the session; it does not connect to it. In a brand-new session the control reads **SSH to join**, and the hosts you pick are joined before the first message goes out.
16
20
 
17
- While the agent is busy, new messages join a queue above the input box by default instead of interrupting. Each queued message has its own send timing: **when idle** (as soon as the agent finishes its turn), **after subagents** (once the running subagents finish), or **after tasks** (once all background tasks finish). Change a message's timing, edit, reorder, or send it now from its row in the queue.
21
+ While the agent is busy, a new message joins the queue above the input box instead of interrupting. Each queued message carries its own timing — **when idle**, **after subagents**, or **after tasks** — and you can change it, edit the text, reorder, or send it right away from its row in the queue.
18
22
 
19
- While the agent is busy, hover over the send button, or focus it and press `↓`, to open the send-timing menu. Alongside the default send action, you can choose to send the message into the current turn for reading at the next safe step boundary (the same behavior as `Ctrl-Enter`), start it after subagents finish, or start it after all background tasks finish. If the main agent is waiting for a foreground `AgentRun`, Send now releases that wait into background without stopping the child; the child still reports completion automatically. Ordinary queueing does not release the wait. The choice applies only to this message and does not change the default timing. The menu does not appear while the agent is idle.
23
+ To pick that timing, hover the send button or focus it and press `↓`. Besides the default, you can send the message into the current turn so the agent reads it at its next safe step (the same as `Ctrl-Enter`), start it after the running subagents finish, or start it after all background tasks finish. When the main agent is blocked waiting on a foreground `AgentRun`, **Send now** moves that wait to the background without stopping the child, which still reports back when it completes; plain queueing does not. The timing you choose applies to that one message. The menu only appears while the agent is busy.
20
24
 
21
- Stopping the main agent before it has replied or called a tool restores the interrupted prompt and its attachments to the session draft, alongside any unsent edits. Already answered or steered prompts are not restored. Attachment recovery requires the complete prompt content to be available in the loaded transcript; recovered attachments stay in memory for the current app run.
25
+ Stop the main agent before it has replied or called a tool and the interrupted prompt goes back into the session draft with its attachments, next to any edits you had not sent. A prompt the agent already answered or was steered by is not restored, and recovered attachments need the full prompt in the loaded transcript and stay in memory until you restart the app.
22
26
 
23
- After a restart, restored queued messages wait for confirmation. Choose **Send now** on one message to send just that message, or **Resume queue** to release the queue. **Later** only collapses the explanation: the resume button stays visible while messages are held, and newly submitted messages may continue to queue until you resume.
27
+ After a restart, queued messages come back held until you decide. **Send now** on one message sends only that one; **Resume queue** releases the rest. **Later** just hides the explanation — the resume button remains, and anything you submit meanwhile keeps queuing until you resume.
24
28
 
25
- In a subagent's input box, the stop button is disabled while its stop request is pending. If the request fails, an error notice explains why and the button becomes available to retry. Stopping one run does not clear unrelated messages waiting in that subagent's queue.
29
+ In a subagent's input box the stop button is disabled while the stop request is in flight. If it fails, the notice says why and the button comes back so you can retry. Stopping one run leaves the subagent's other queued messages alone.
26
30
 
27
31
  ## Approvals
28
32
 
29
- Approvals appear in the timeline before a protected operation runs, with options to approve once or for the session. In the default Auto mode, routine tool calls run without asking; sensitive-file and external-link access still request approval. Manual mode asks before shell commands and workspace-external writes, while trusted-workspace `Write` / `Edit` calls run without per-file approval. YOLO mode skips sensitive-file prompts unless explicitly denied. Tool calls interrupted by `Esc` stop before execution.
33
+ An approval appears in the timeline before a protected operation runs, with the option to allow it once or for the session. Auto mode (the default) runs routine tool calls without asking and still asks for sensitive files and external links. Manual mode asks before shell commands and writes outside the workspace, while `Write` / `Edit` inside a trusted directory run without a per-file prompt. YOLO mode skips the sensitive-file prompt unless a deny rule covers it. Pressing `Esc` stops a tool call before it executes.
30
34
 
31
35
  ## Right rail
32
36
 
33
- The right panel describes one agent at a time: whichever you last clicked into or focused. The main agent and every subagent get the same page, and the same rail follows you into a subagent's transcript. It shows the agent's head over what it is doing now, the items waiting on you as rows you can decide from, the activity feed, and a folded capabilities block. From **Dispatch capabilities** (the panel showing how the agent dispatches subagents) you can inspect a subagent's profile (configuration file), route, and executor, plus where the default model and thinking effort (how much reasoning the model invests) come from; see [Agents and subagents](../customization/agents.md#rebuilding-a-session-context).
37
+ The rail describes one agent at a time — whichever you last clicked into or focused. The main agent and every subagent get the same page, and the rail follows you into a subagent's transcript. It shows what that agent is doing now, the items waiting on you as rows you can decide from, the activity feed, and a folded capabilities block. **Dispatch capabilities** opens the panel showing how the agent hands work to subagents, and from there you can inspect a subagent's profile (its configuration file), route and executor, plus where its default model and thinking effort (how much reasoning the model invests) come from — see [Agents and subagents](../customization/agents.md#rebuilding-a-session-context).
34
38
 
35
- On desktop-width screens the panel is open by default, and **Standard / Cockpit** in its header temporarily widens it over the preview space while the conversation and composer stay in the main column. **Standard** or **Exit cockpit** restores the previous preview content, tabs, draft, and width.
39
+ On desktop-width screens the rail is open by default. **Standard / Cockpit** in its header widens it over the preview space while the conversation and composer stay in the main column; **Standard** or **Exit cockpit** puts the previous preview content, tabs, draft and width back.
36
40
 
37
41
  ## Sessions and workspaces
38
42
 
39
- The session list groups sessions by workspace; pick one to resume or start a new draft. Saved model, profile (the agent's configuration file), and effort choices that are no longer available stay visible with a diagnostic so you can select a valid value — the GUI does not silently substitute another model. Details are covered in [Workspace and session management](/en/guides/sessions).
43
+ The session list groups sessions by workspace; pick one to resume, or start a new draft there. If a saved model, profile (the agent's configuration file) or effort is no longer available, the entry stays visible with a diagnostic instead of quietly switching you to a different model. [Workspace and session management](/en/guides/sessions) covers the rest.
40
44
 
41
45
  ## Next steps
42
46