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
@@ -4,22 +4,23 @@ title: Features
4
4
 
5
5
  # Features
6
6
 
7
- Kiki is an open-source AI agent workbench that runs on your machine. These pages walk through what it does, in the order you are most likely to need it: what the workbench is, how long work keeps going, what you do every day, who you can talk to, where your data lives, which layers you control, how other tools plug in, and how it looks and extends.
7
+ Kiki is an open-source AI agent workbench that runs on your machine. These pages follow the order you are likely to need them: what the workbench is, how to describe an agent you can reuse, which model and control layer it runs under, how long work keeps going, who you can talk to, what your daily window looks like, where your data and machines are, how you extend it, how other tools plug in, and how it looks.
8
8
 
9
9
  The Kiki workbench: the subagents a lead session dispatched, an active goal, and a queued message, all on one screen\.
10
10
 
11
- If you are new to Kiki, start with [Installation](/en/getting-started/installation), then come back here. If you already run it, jump to the page that matches what you are trying to do — each one links back to the guide that has the full steps.
11
+ New to Kiki? Start with [Installation](/en/getting-started/installation), then come back here. Already running it? Jump to the page that matches what you are trying to do — each one links back to the guide that has the full steps.
12
12
 
13
13
  | Page | What it covers |
14
14
  | --- | --- |
15
15
  | [One workbench, many lines](/en/features/workbench) | The lead session, its dispatched subagents, per-role models, and background tasks |
16
+ | [Agent Profiles](/en/features/agents) | Profiles as reusable roles: model and effort, instructions, tools, and dispatch |
17
+ | [Every layer is yours](/en/features/freedom) | Prompt overrides, connections and OAuth, permission modes, and hooks |
16
18
  | [Work that runs long](/en/features/long-work) | Goals, the message queue, scheduled tasks, the task board, the context window, and memory |
17
- | [The daily driver](/en/features/daily) | The timeline, annotations, the "needs you" tray, the right rail, and the usage page |
18
19
  | [Roles you can talk to](/en/features/people) | Personas, their daily conversation entry, their memory, and rooms |
20
+ | [The daily driver](/en/features/daily) | The timeline, annotations, the "needs you" tray, the right rail, and the usage page: cost, concurrency rules, and external sync |
19
21
  | [Your data, your machines](/en/features/spaces) | Spaces, remote connections, thread bridges, Web access, and in-session SSH |
20
- | [Every layer is yours](/en/features/freedom) | Agent files, prompt overrides, connections and OAuth, permission modes, and hooks |
22
+ | [Make it yours to extend](/en/features/extend) | Plugins, skills, MCP servers, and search and retrieval |
21
23
  | [Bring your history, meet other tools](/en/features/ecosystem) | Importing another tool's history, using Kiki in an editor, and Kiki as a service |
22
24
  | [Look and feel](/en/features/look) | Skins, backgrounds, appearance packs, and fine tuning |
23
- | [Make it yours to extend](/en/features/extend) | Plugins, skills, MCP servers, and search and retrieval |
24
25
 
25
26
  [Online version with images](https://x-t-e-r.github.io/kiki/en/features/)
@@ -22,14 +22,30 @@ The full behavior is described in [Interface overview](/en/guides/interface#inpu
22
22
 
23
23
  An active goal with two queued messages, each with its own send timing\.
24
24
 
25
+ The queue expanded under a running goal, with each queued message's own send timing and its edit, send-now, and remove actions\.
26
+
25
27
  ## Work that outlives the session
26
28
 
27
29
  Two features carry work beyond a single conversation. Both are listed globally rather than per-session, but what they hold is scoped differently.
28
30
 
29
31
  **Scheduled tasks.** The agent can schedule a prompt to fire at a future time, either once or on a cron expression in your local timezone, and a global panel lists every schedule. A schedule is ticked by a Kiki that has its session open — the interactive daemon or server, or a print run for the sessions that run already has open. It does not scan the rest of the home or wake a closed session, so a schedule only fires while some Kiki is holding that session. Recurring tasks are shifted forward by deterministic jitter so everyone does not fire on the hour, and one that missed fire times fires once with the missed count. Schedules are bound to their session and do not carry into a brand-new session, and a session holds at most 50 active ones. See [Scheduled tasks](/en/reference/tools#scheduled-tasks).
30
32
 
33
+ The scheduled tasks panel, with enabled one-shot and recurring entries above a paused one, and run-now, pause, resume, and delete per entry\.
34
+
35
+ ### Managing a schedule by hand
36
+
37
+ The scheduled-tasks page is also where you change a schedule yourself. Every entry leads with when it runs, in words rather than a cron expression: "every hour on the hour", "every day at 09:00", "every Monday at 08:30". The expression is still there, one click away in the entry's detail panel, along with the prompt in full, the owning conversation, and the moment the server computed for the next run.
38
+
39
+ **New scheduled task** creates one, and **Edit** changes one. The form asks whether the task runs once or on a schedule, then for the repeat: every N hours, a time each day, days of the week, or a day of the month. You pick the conversation it belongs to, searchable by title and grouped by workspace, because that is where its output arrives.
40
+
41
+ A schedule more specific than those controls — several times a day, a day of the month pinned to a weekday — opens on the cron expression itself and is saved exactly as written. Editing such a task never quietly turns it into a simpler rule. A save the server refuses leaves everything you typed in the form, so a rejected change costs you nothing to retry.
42
+
43
+ **Run now** sits on its own line at the bottom left of an entry, away from pause and delete: it runs the prompt once without touching the schedule. Rebinding an existing task to another conversation stays inside the task's own workspace.
44
+
31
45
  **The task board.** Each workspace has a board where requirements are cards, and each card links to the sessions working on it. Cards are persistent requirements, not agent runs — reading a card does not change it, and the board does not update from todo lists. The main agent reads and writes the board itself with `BoardRead` and `BoardWrite`, under the normal approval rules. Open it from the fixed button at the bottom of the main agent's right panel. See [Task board](/en/guides/sessions#task-board).
32
46
 
47
+ The task board, with requirement cards in To do, In progress, Paused, and Done columns, each linked to the sessions working on it\.
48
+
33
49
  ## The context window: when it fills up
34
50
 
35
51
  As a conversation grows, Kiki compresses the history when the context approaches the window limit. You decide where that point is, and what happens when it is reached.
@@ -38,11 +54,11 @@ The context meter sits below the composer. Opening it gives you a detail card wi
38
54
 
39
55
  The card also holds the **renewal strategy** — a three-way choice for what happens at the compaction point:
40
56
 
41
- - **Summarize** (the default) — compress the history into a summary and keep going.
57
+ - **Summarize** — compress the history into a summary and keep going.
42
58
  - **Fresh** — do not carry the history. Restart from the agent's working notes alone.
43
- - **Auto** — let the agent decide per run.
59
+ - **Auto** (the built-in main-agent default) — restart when the working notes safely cover the work; otherwise summarize.
44
60
 
45
- The source label next to it says which layer the current value came from (session, profile, global, or inherited) and doubles as the control that saves it more broadly or resets it. Subagents and external executors read this value but do not set it.
61
+ The source label next to it says which layer the current value came from (session, profile, global, or inherited) and doubles as the control that saves it more broadly or resets it. A session choice takes precedence over its profile, then the global setting, then the built-in default. Subagents have a separate default, and external executors manage their own context; both are read-only here.
46
62
 
47
63
  **Fresh has real conditions.** Restarting from notes throws away the conversation, so Kiki only does it when nothing would be lost — the history is available, the working notes exist and have been reviewed in the current window, and the restart will fit. When something arrived after the last handoff, or a result cannot be recovered from notes, Kiki compacts instead of clearing. Treat Fresh as "restart from notes when that is safe", not "clear the history at any moment".
48
64
 
@@ -50,11 +66,13 @@ For the manual side, `/compact` compresses on demand and accepts a hint about wh
50
66
 
51
67
  The context meter detail card, with the context window track and Fresh selected as the renewal strategy\.
52
68
 
69
+ The context details card opened over a running session, with Fresh start selected and this session's cumulative token counts below it\.
70
+
53
71
  ## Memory keeps the facts across sessions
54
72
 
55
73
  A session ends. Memory is what does not. The agent saves user preferences, feedback, verified project facts, and reference pointers, and finds them again later. On the `/memory` page you choose which body of memory you are looking at — **Global**, one **Workspace**, or one **Persona**. Persona-specific entries are isolated from other personas; by default a persona can also read the shared global and workspace memory.
56
74
 
57
- Memory is on by default, and the `/memory` page in the sidebar is its permanent home either way — with memory off it is the turn-on guide, with memory on it is the management console. You can search entries, filter by type, edit, pin, and delete them, and every change can be undone one operation at a time — including a delete, which is why the confirmation says so rather than claiming anything is permanent. When memory approval is set to `review`, proposed changes wait in an Inbox tab for you to accept or discard instead of taking effect on their own.
75
+ Memory is on by default, and the `/memory` page in the sidebar is its permanent home either way — with memory off it is the turn-on guide, with memory on it is the management console. You can search entries, filter by type, edit, pin, and delete them, and every change can be undone one operation at a time, including a delete. When memory approval is set to `review`, proposed changes wait in an Inbox tab for you to accept or discard instead of taking effect on their own.
58
76
 
59
77
  Agents write memory with `MemoryWrite` and read it with `MemorySearch` and `MemoryRead`. See [Memory](/en/guides/memory) for the full page, the review inbox, and how to turn memory off.
60
78
 
@@ -62,7 +80,7 @@ The memory page in the persona scope, listing entries across the global, workspa
62
80
 
63
81
  ## Next steps
64
82
 
65
- - [Memory](/en/guides/memory) — the three scopes, the review inbox, and undoable history
83
+ - [Memory](/en/guides/memory) — choosing between scopes, the review inbox, and undoable history
66
84
  - [Using goals](/en/guides/goals) — writing and managing goals
67
85
  - [Task board](/en/guides/sessions#task-board) — persistent requirement cards per workspace
68
86
  - [The daily driver](/en/features/daily) — the window you use while all of this runs
@@ -19,7 +19,7 @@ Each skin ships a light and a dark variant; the light / dark switch above the pi
19
19
  | **Iris × Starveil** | Violet-white paper and iris ink; indigo-violet layers and silver-lilac controls at night. |
20
20
  | **High contrast × Obsidian** | Visible borders and AAA main text; layered charcoal, ice-cyan focus and near-white controls at night. |
21
21
 
22
- See [Built-in skins](/en/customization/skins#built-in-skins) for the full table and the retired palettes.
22
+ See [Built-in skins](/en/customization/skins#built-in-skins) for the full table.
23
23
 
24
24
  The appearance settings, with the skin picker, the background, and the fine-tuning controls\.
25
25
 
@@ -28,6 +28,8 @@ confirmed facts from open questions.
28
28
 
29
29
  `model_alias` and `thinking_effort` are optional: they select a configured model and effort for this persona, and they do not grant permissions. A `tools` field is rejected, because tools belong to the profile.
30
30
 
31
+ The **Personas** page is the form view of that file. One persona's settings in a single column: which profile it rides on, its model and effort, the working directory its conversations start in, whether it is pinned to the sidebar, and which memory bodies it can read.
32
+
31
33
  Two behaviors are worth knowing before you edit. Each session freezes its own persona snapshot, so changing the card does not silently alter a conversation already in flight — start a new session, or rebuild its context, to apply the edit. And the opening greeting is local presentation until you explicitly reply to it; simply opening the conversation does not put it into the model's history.
32
34
 
33
35
  The Personas page also imports and exports Character Card V3 in JSON, PNG, and CHARX, and the avatar picker takes PNG, JPEG, or WebP. **Remove avatar** restores the initials without deleting the persona or its memories; a duplicate creates a new identity without copying conversation state or private memory; archive hides a persona from ordinary selection without erasing it.
@@ -36,6 +38,8 @@ See [Personas, Bots, and rooms](/en/customization/personas) for the full card re
36
38
 
37
39
  The persona card: name, avatar, responsibility, and the standing rules it works by\.
38
40
 
41
+ One persona's settings: the profile it rides on, its model and effort, the working directory, how it is delivered, whether it is pinned or hidden from the sidebar, and which memory it can read\.
42
+
39
43
  ## A fixed daily conversation
40
44
 
41
45
  Every persona has a stable address for its daily conversation — the same entry the sidebar row, the switcher, the header, and the persona page all point at. Clicking a persona's name lands you in that one conversation, so "ask Xiaolan" means the same thing every time. If it does not exist yet, the entry opens a fresh daily draft and adopts it once it exists.
@@ -56,20 +60,24 @@ The **/memory** page exposes the persona scope alongside global and workspace, i
56
60
 
57
61
  A room gives two to six members a shared conversation with a host, a budget, and pause and continue. Persona members get their own message-mode sessions inside the room; existing threads can join as themselves, keeping their own sessions, workspaces, and permissions. In the GUI, Ctrl/⌘-click threads in the sidebar and choose **Pull into a new room**, use **Add to room…** on a thread, add them from the **Threads** tab under **Add member**, or pick **Open a room with these threads** on a thread link.
58
62
 
59
- Members run in order, so a later speaker sees earlier speakers' results rather than talking past them. Scheduling follows three rules and nothing else:
63
+ Persona turns run in order; existing threads each have their own queue. A member catches up on room messages when it wakes. Older queued notifications already covered by a successfully completed catch-up do not start another turn. Scheduling follows three rules:
60
64
 
61
65
  1. A user mention wakes the named members; `@everyone` selects all of them.
62
66
  2. A user message with no mention goes to the host, whether the host is a persona or a thread.
63
- 3. A persona or Bot message wakes only the members it mentions. A message with no mentions does not continue the discussion.
67
+ 3. A persona or thread room message wakes only the members it mentions. A message with no mentions is logged but wakes no one.
64
68
 
65
69
  The budget limits member messages after each user message — 12 by default. When it runs out the discussion pauses, and **Continue** resets the budget and resumes the retained work. **Pause** cancels queued wakes but lets the active turn finish.
66
70
 
71
+ A room whose member budget is spent: the discussion paused at 12 of 12 messages, with Continue and Adjust limit offered, and the member list beside it\.
72
+
67
73
  Renaming, changing the host, muting, and reassigning the classification workspace never rewrite a member's system prompt or permissions. A member that cannot wake shows the failure and a recovery action rather than a promise of an automatic retry: for a model login failure, sign in under **Settings → Models & providers → Connections**, or open the member's conversation and pick an available model, then send another room message and mention it if it is not the host.
68
74
 
69
75
  See [Discuss in a room](/en/customization/personas#discuss-in-a-room) and [Collaboration tools](/en/reference/tools#collaboration-tools).
70
76
 
71
77
  A room where three personas discuss a release, each message attributed to its speaker\.
72
78
 
79
+ A room that also holds threads, listed under their own tab when you go to add a member\.
80
+
73
81
  ## Next steps
74
82
 
75
83
  - [Personas, Bots, and rooms](/en/customization/personas) — the full reference for personas, home conversations, and rooms
@@ -18,18 +18,26 @@ Change the credential scope on the subspace's own card in **Settings → Spaces*
18
18
 
19
19
  The spaces list: the main space beside two registered spaces, one sharing accounts and one isolated\.
20
20
 
21
+ One space's own settings sheet, where each row says whether it follows the main space or is set here, with a Change action per row\.
22
+
23
+ Choosing a space's credential scope: share the main space's accounts and keys, or keep this space's separate\.
24
+
21
25
  ## Remote connections: one Kiki, pointed at another
22
26
 
23
27
  A remote connection is a directed link from this Kiki's home to another Kiki home on another machine. It is not a shared login: the target has its own identity, and it must approve the source before anything flows.
24
28
 
25
29
  Receiving is off by default. Enabling the gate on the target does not approve anyone by itself — you then create an invitation, hand it to the source, and the source registers a connection against it. Every connection is one row with its own state, its last-known measurements, and actions that affect only that link: enable, disable, retry, or remove. `inbound revoke <grantId>` stops one source's reads and streams without touching the others, and `inbound disable` closes all peer access while keeping the allow list. Removing a connection releases local credentials and owned tunnels; it does not stop the target daemon or undo work already started there. An offline target keeps its last-known measurements and their timestamp rather than reporting invented zeros.
26
30
 
27
- The command side plans before it acts. `kiki connections ... ssh plan` only queries; `ssh execute PLAN_ID` attaches; only an explicit `--ensure` may start a remote daemon, and that daemon keeps running until you stop it. Neither opens inbound access on its own. Both hosts need a compatible Kiki and working SSH authentication with known-host verification, and Kiki does not install remote software for you.
31
+ The command side plans before it acts. `kiki connections ... ssh plan` only queries; `ssh execute PLAN_ID` attaches; only an explicit `--ensure` may start a remote daemon, and that daemon keeps running until you stop it. Neither opens inbound access on its own. The GUI also rechecks an already-running target before attaching, without starting it or asking for another confirmation. Both hosts need a compatible connection protocol and working SSH authentication with known-host verification; their Kiki version strings do not have to match. Kiki does not install remote software for you.
32
+
33
+ If the target temporarily closes inbound access, wait for its owner to reopen it, then try your operation again. A refusal for one operation does not sign you out of the connection, and Kiki never automatically repeats a refused write. An invalid token or revoked grant still rejects access; replace the connection's credentials or authorization before trying again.
28
34
 
29
35
  See [`kiki connections`](/en/reference/command#kiki-connections) and [`kiki bridges`](/en/reference/command#kiki-bridges) for the command reference behind these settings.
30
36
 
31
37
  The remote connections list: one row per peer Kiki, each with its own state and the moment its last reading was taken\.
32
38
 
39
+ This Kiki's identity string, and the gate deciding which other Kikis may connect to it — off by default, with each allowed one listed and revocable\.
40
+
33
41
  ## Thread bridges: talk without browsing
34
42
 
35
43
  A thread bridge is a one-way channel for thread messages between two homes. It is deliberately narrower than a remote connection: the target home approves the exact source and target scopes, the operations — `read`, `send`, `wait`, and `wake` only if you ask for it — and an expiry, and the bridge carries nothing else. Without `wake`, sends stay pending rather than starting a model turn on the other side.
@@ -54,11 +62,15 @@ Web access turned on for this Kiki, with the browsers already signed in listed b
54
62
 
55
63
  ## In-session SSH
56
64
 
57
- A session can hold SSH hosts. Use the input box's **+** menu to add one, and the **Session SSH** control above the input box lists the joined hosts, takes a host away on **X**, and reopens the same list to add more. A joined host is a resource of that session, not something each message carries — so the timeline does not fill with host bubbles, and removing a host removes it from the session rather than from your machine.
65
+ A session can hold SSH hosts. Use the input box's **+** menu to add one, and the **SSH** control above the input box lists the joined hosts, takes a host away on **X**, and reopens the same list to add more. A joined host is a resource of that session, not something each message carries — so the timeline does not fill with host bubbles, and removing a host removes it from the session rather than from your machine.
66
+
67
+ The control appears only once the session holds a host. A session that has joined none has no SSH line above its input box, and the **+** menu is still the way to add the first one. It stays on screen for as long as the host is joined, including between turns, because "joined" is the session's own state rather than whether a request happens to be running.
68
+
69
+ Adding a host makes it available to the session; it does not connect to it. In a new session, picking a host in the **+** menu shows the same **SSH** control before the first message, and the hosts you selected are joined to the created session before that message is sent.
58
70
 
59
- Adding a host makes it available to the session; it does not connect to it. In a new session the control reads **SSH to join**, and the hosts you selected are joined to the created session before its first message is sent.
71
+ The SSH panel above the input box, listing the hosts joined to this session and the ones still available to add\.
60
72
 
61
- See [Interface overview](/en/guides/interface#input-box) for the Session SSH control and the send-timing menu beside it.
73
+ See [Interface overview](/en/guides/interface#input-box) for the SSH control and the send-timing menu beside it.
62
74
 
63
75
  ## Next steps
64
76
 
@@ -18,15 +18,15 @@ The desktop app, the terminal UI (`kiki`), and the browser UI (`kiki web`) are t
18
18
 
19
19
  You hand the main agent a task — a coding change, a research question, a bug to track down. It plans, calls tools, and when the work divides cleanly it dispatches subagents to handle the focused pieces: exploring an unfamiliar codebase, reviewing several implementations in parallel, or planning a large refactor without touching the main context.
20
20
 
21
- A subagent receives a task description, works in its own isolated context, and returns its conclusions. It does not talk to you directly, and its intermediate reasoning and tool call records stay out of the main agent's history. The lead only keeps the result. This is why you can run four or five lines at once without the main context drowning in details.
21
+ A subagent receives a task description and works in its own isolated context, then hands back its conclusions and reports when it finishes. Its full reasoning and tool call records are not poured into the main agent's history, which is what lets you run four or five lines at once without the main context drowning in details. You can still open any of them and read every step for yourself.
22
22
 
23
- Fresh installs ship two subagent profiles: `general`, a general-purpose assistant, and `explore`, a read-only explorer. Dispatch is scheduled by the main agent, based on task complexity, context consumption, and whether the sub-tasks are independent — you do not have to name one. You can, though: tell the main agent directly, or approve each dispatch as it appears.
23
+ Fresh installs ship two subagent profiles: `general`, a general-purpose assistant, and `explore`, a read-only explorer. Dispatch is scheduled by the main agent, based on task complexity, context consumption, and whether the sub-tasks are independent — you do not have to name one. You can, though: tell the main agent directly, and under the `manual` permission mode each dispatch also stops for your approval.
24
24
 
25
25
  See [Agents and Sub-Agents](/en/customization/agents) for the full dispatch contract, context isolation, and permission inheritance.
26
26
 
27
27
  ## Each role can run a different model
28
28
 
29
- Different lines of work do not have to share a model. Bind the main agent, each subagent, and the reviewer to different models — or different vendors — and one session runs all of them at once. A strong reasoning model can plan while cheaper models do the routine work; a different vendor can review without the review being anchored to the same blind spots as the implementation.
29
+ Different lines of work do not have to share a model. Bind the main agent, each subagent, and the reviewer to different models — or different vendors — and one session runs all of them at once. A strong reasoning model can plan while cheaper models do the routine work, and a reviewer running on a different model family brings an outside perspective to the decision the implementer already made.
30
30
 
31
31
  The main `agent` profile always receives three child-agent tools (`AgentRun`, `AgentList`, `AgentSend`) with no experiment flag, and each can name the model its child should run. If no model is pinned anywhere, a dispatch fails with `model.not_configured` rather than silently guessing. Kimi works out of the box; Anthropic, OpenAI-compatible services, the OpenAI Responses API, Gemini, and Vertex AI can be added, and you can sign in with a GitHub Copilot or ChatGPT account.
32
32
 
@@ -34,12 +34,18 @@ Model selection, hard model boundaries, and the model menu are covered in [Provi
34
34
 
35
35
  The dispatch tree of one session, with each role bound to its own model\.
36
36
 
37
+ One session running several roles at once: the right rail lists the main agent's state, its todos, and each child agent with the model it is bound to\.
38
+
37
39
  ## A subagent keeps its own record
38
40
 
39
41
  Open any dispatched subagent to read its own transcript: what it was asked, what it did, and what it concluded — next to the main session, without loading the main agent's conversation. The same right rail follows you into the subagent, so you can inspect its context and cost the same way.
40
42
 
41
43
  You can also message a running subagent from its own composer, and pick it back up later with `AgentRun` to continue the same task instead of starting over. See [Agents and Sub-Agents](/en/customization/agents#named-child-agents) and the [right rail](/en/guides/interface#right-rail).
42
44
 
45
+ A subagent's own session: its separate transcript, its own composer, and a composer row that shows which agent a message is replying to\.
46
+
47
+ The right rail of a subagent, showing the same state, todos, working notes, and session overview the main agent gets\.
48
+
43
49
  ## Background tasks report back on their own
44
50
 
45
51
  Long shell commands and subagents do not have to hold the foreground. Send them to the background and Kiki notifies the main agent automatically when they finish, with the result inline and the full-output path retained — so neither you nor the agent has to keep checking. You can inspect a running task's status and output, and stop one at any time. Stopping an agent task also reports any direct subagents still running under it.
@@ -48,6 +54,8 @@ The main `agent` profile uses `TaskList`, `TaskOutput`, and `TaskStop` for backg
48
54
 
49
55
  The tasks page: one background task running with its stop control, one finished, and one failed\.
50
56
 
57
+ The tasks page filtered to all tasks, one running, one completed, and one failed, each with the command it ran and a filter row across the top\.
58
+
51
59
  ## Next steps
52
60
 
53
61
  - [Work that runs long](/en/features/long-work) — goals, the queue, scheduled tasks, the board, and memory
@@ -1,74 +1,89 @@
1
1
  # Kiki desktop
2
2
 
3
- Kiki desktop is available for Windows x64 (a per-user NSIS installer), Linux x64 (AppImage and deb), and macOS Apple Silicon or Intel (dmg). The Windows installer includes the CLI/TUI and adds `kiki` to your user `PATH`; Linux deb includes it too. This page explains the Windows-specific signed updater; Linux/macOS bundles use manual updates and their installation steps are in [Installation](./installation.md#install-the-desktop-app). Windows installers, updater signatures, SHA256 checksums, and versioned updater manifests are retained on [GitHub Releases](https://github.com/X-T-E-R/kiki/releases).
3
+ The Windows build has a signed in-app updater. macOS and Linux builds do not — updating them means downloading the newer bundle yourself. This page covers both, plus what happens to your data during an update and how to roll back. Installation steps are in [Installation](./installation.md#install-the-desktop-app).
4
+
5
+ | Platform | Bundle | How you update it |
6
+ | --- | --- | --- |
7
+ | Windows x64 | `Kiki_*_x64-setup.exe` (per-user NSIS installer, includes the CLI) | In-app updater, or run the newer installer |
8
+ | Linux x64 | `Kiki_*_amd64.deb` / `Kiki_*_amd64.AppImage` | Download and install the newer bundle |
9
+ | macOS Apple Silicon | `Kiki_*_aarch64.dmg` | Download the newer dmg |
10
+ | macOS Intel | `Kiki_*_x64.dmg` | Download the newer dmg |
11
+
12
+ Windows installers, updater signatures, SHA256 checksums, and updater manifests for every version stay on [GitHub Releases](https://github.com/X-T-E-R/kiki/releases).
4
13
 
5
14
  ::: warning Note
6
- Kiki Windows installers are not Authenticode-signed (Windows' official code signing for verifying the publisher) in the first public release. Windows SmartScreen may therefore identify the publisher as unknown even when the file came from the official Release.
15
+ The Windows installer carries no Authenticode signature (Windows' official code signing, which is what displays a verified publisher name). SmartScreen may therefore show an unknown publisher for a file you downloaded from the official Release. See [SmartScreen and updater signing](#smartscreen-and-updater-signing).
7
16
  :::
8
17
 
9
18
  ## Requirements and release channels
10
19
 
11
- The desktop build supports Windows x64 and installs for the current Windows account without administrator access in the normal case. Windows may download the Microsoft Edge WebView2 bootstrapper (the Microsoft web component the desktop UI depends on) during installation if the required runtime is missing.
20
+ The Windows build installs for the current Windows account without administrator access. If the machine lacks the required runtime, the installer downloads the Microsoft Edge WebView2 bootstrapper (the Microsoft web component the desktop UI renders in).
12
21
 
13
- On macOS the desktop app needs **13.5 or later**, because that is the bundled runtime's own floor. Intel and Apple Silicon are separate downloads, not one universal app. On Linux the desktop app is x64 (deb or AppImage); the CLI/TUI also builds for arm64. Terminal chat and other headless use need no desktop or display of any kind.
22
+ macOS needs **13.5 or later**, which is the floor of the runtime bundled inside the app. Intel and Apple Silicon are separate downloads, not one universal app. Linux desktop builds are x64 (deb or AppImage); the CLI/TUI also builds for arm64. Nothing in Kiki requires a desktop — the CLI/TUI runs on a machine with no display.
14
23
 
15
- | Channel | Intended use | Public feed (the metadata URL for each update channel — not an RSS feed) |
24
+ | Channel | What it offers | Update feed |
16
25
  | --- | --- | --- |
17
- | Stable | Normal daily use | `https://x-t-e-r.github.io/kiki/updater/stable/latest.json` |
18
- | Beta | Early access to a newer tested build | `https://x-t-e-r.github.io/kiki/updater/beta/latest.json` |
26
+ | Stable | The current stable build | `https://x-t-e-r.github.io/kiki/updater/stable/latest.json` |
27
+ | Beta | Newer builds that have been tested but are not stable yet | `https://x-t-e-r.github.io/kiki/updater/beta/latest.json` |
19
28
 
20
- The stable feed points to the highest published stable version and is absent until the first stable release. The beta feed is available during the public beta period; after stable exists, it compares the highest stable and beta versions using SemVer (Semantic Versioning — the rule that compares major, minor, and patch numbers) and points to whichever is newer.
29
+ Each feed is a JSON file the updater reads; you never need to open it. The stable feed names the highest published stable version, and it stays empty until the first stable release. While only beta builds exist, the beta feed is the one that has content. Once both exist, the beta feed names whichever of the two is higher by SemVer (Semantic Versioning — the rule that compares major, minor, and patch numbers), so selecting Beta can also hand you the current stable build.
21
30
 
22
31
  ## Install and verify
23
32
 
24
- Installation starts from a versioned Release rather than an unversioned download link. This keeps the installer, checksum, and updater metadata tied to the same `kiki-v<version>` tag.
33
+ Download from a versioned Release, not from a "latest download" link, so the installer, checksum, and updater metadata all come from the same `kiki-v<version>` tag.
25
34
 
26
- 1. Open the [Kiki Releases page](https://github.com/X-T-E-R/kiki/releases) and select the required stable or beta version.
27
- 2. Download the `Kiki_*_x64-setup.exe` installer and its adjacent `.sha256` file.
28
- 3. In PowerShell, paste and run the following commands from the download directory, replacing the file name with the downloaded installer (the first command shows the checksum the release published, the second computes the checksum of your download — the two outputs must match):
35
+ 1. Open the [Kiki Releases page](https://github.com/X-T-E-R/kiki/releases) and select the stable or beta version you want.
36
+ 2. Download the `Kiki_*_x64-setup.exe` installer and the `.sha256` file next to it.
37
+ 3. In the download directory, open PowerShell and run these two commands, replacing the file name with the one you downloaded. The first prints the checksum the release published, the second computes the checksum of your copy:
29
38
 
30
39
  ```powershell
31
40
  Get-Content .\Kiki_1.0.0_x64-setup.exe.sha256
32
41
  (Get-FileHash .\Kiki_1.0.0_x64-setup.exe -Algorithm SHA256).Hash.ToLower()
33
42
  ```
34
43
 
35
- 4. Confirm that the two hexadecimal hashes are identical.
36
- 5. Run the installer and start Kiki from the Windows Start menu.
44
+ 4. Check that the two hexadecimal strings match.
45
+ 5. Run the installer, then start Kiki from the Windows Start menu.
37
46
 
38
- The `.sig` asset contains the complete Tauri updater signature (Tauri is the app framework behind the Kiki desktop app; this signature is consumed by its built-in updater). It is separate from the SHA256 checksum used for a manual download check.
47
+ The `.sig` asset holds the Tauri updater signature (Tauri is the app framework behind the desktop app) that the in-app updater checks. You do not need it for a manual install — the `.sha256` file above is the manual check.
39
48
 
40
49
  ## Update
41
50
 
42
- Kiki checks the selected update channel once after desktop startup. You can also choose Stable or Beta and run a manual check from **Settings → About**. When an update is available, Kiki shows its version and release notes before asking for confirmation.
51
+ **Settings → About** is where updates live. It shows the current version, lets you pick the **Update channel** (Stable or Beta), and turns automatic checks on or off. With automatic checks on, Kiki looks for a new version once a day, and the **When an update is found** setting below the switch decides what happens then: **Notify me** shows an update dialog, while **Download and install** goes straight into the install. Either way, a space with running work is never closed without asking you first. **Check for updates** always checks the channel you have selected, whether or not the automatic check is on.
52
+
53
+ In **Notify me** mode the dialog shows the version and a short summary of what changed, then waits for you. The three buttons are not the same kind of decision:
43
54
 
44
- Installing an update exits the Kiki desktop process and its bundled sidecar (the background service process that runs alongside the desktop UI), verifies the signed installer, and runs the NSIS update. Running work is interrupted, so finish or stop important tasks before confirming. Kiki does not automatically downgrade when you switch channels.
55
+ - **Remind me tomorrow** — the same offer comes back 24 hours later.
56
+ - **Skip this version** — Kiki stops asking about that version on that channel, and remembers it. A newer version still comes, and a skip recorded on Stable does not silence Beta.
57
+ - **Update now** — install it.
45
58
 
46
- If the in-app update fails, close Kiki, download the newer installer from its exact Release, verify its SHA256 file, and run it manually. Installing a newer version over the existing per-user installation keeps the normal application data location intact.
59
+ Closing the dialog with the window button or `Esc` dismisses this reminder only; nothing is stored, so the same offer can come back later.
47
60
 
48
- The in-app update above is the Windows updater. On macOS and Linux, updating the desktop app means downloading the newer bundle yourself, so quit Kiki first, install the new bundle over the old one, and start it again. After replacing the app on macOS or Linux, quit any older Kiki process still using the same data home before starting the new build — see [`KIKI_HOME`](../configuration/env-vars.md#kiki-home).
61
+ Before installing, Kiki looks the version up on your channel again. If the channel or the version changed since the offer appeared, it refreshes the offer instead of installing something you did not agree to. If any space still has a running session or waiting input, Kiki names those spaces and asks you to confirm before closing anything; declining leaves your sessions running. Once you confirm, Kiki closes the backends it manages, then downloads, verifies and installs. Switching channels never downgrades an install.
49
62
 
50
- The public `latest.json` files provide signed updater metadata for stable and beta clients. Each manifest points to an installer under a specific `kiki-v<version>` tag rather than a mutable latest-download URL, and its `signature` field is the content of that installer's `.sig` asset.
63
+ If the download or install step fails, Kiki says so and the install button becomes a retry. Whether your sessions need restarting depends on how far it got: retry directly while the update screen is still usable, and restart Kiki only if you need those sessions back. If the automatic check or a channel change cannot be saved, the dialog stays open and tells you to try again.
64
+
65
+ If the in-app update keeps failing, close Kiki, download the newer installer from the exact Release you were trying to update to, verify its `.sha256` file, and run it. Installing over the existing per-user installation keeps your application data where it is.
66
+
67
+ On macOS and Linux, quit Kiki, install the newer bundle over the old one, and start it again. If an older Kiki process is still running against the same data home, quit it first — see [`KIKI_HOME`](../configuration/env-vars.md#kiki-home).
51
68
 
52
69
  ## Backend logs
53
70
 
54
- When desktop starts its own backend, it records diagnostic stderr (the process's error-output stream) in `desktop-backend.log` inside the active space's `logs` directory (the home's log folder, beside the server's own `kimi-code.log`). The current file rotates at 5 MiB and keeps three numbered backups (`.1` is the newest). Rotation also runs when opening an oversized existing log; that older file is retained as a backup. A single oversized new line is truncated to its UTF-8 tail. Logging failures do not stop the backend; startup diagnostics still retain the last 100 nonempty lines in memory.
71
+ When the desktop app starts its own backend, that backend's error output goes to `desktop-backend.log` in the active space's `logs` directory, beside the server's own `kimi-code.log`. The file rotates at 5 MiB and keeps three numbered backups, where `.1` is the newest.
55
72
 
56
- The backend defaults to `warn`. To change it before the settings control is connected, quit desktop and set `"logLevel": "debug"` in the active space's `desktop.json`, preserving its other fields. Supported values are `fatal`, `error`, `warn`, `info`, `debug`, `trace`, and `silent`. A space inherits the main home's level unless it has its own override. The change applies on the next desktop-owned backend launch, not to an already running or externally managed server. Log-directory and path commands are available to desktop integrations; a browser connected to a remote server cannot open its host directory.
73
+ The backend logs at `warn` by default. To change that, quit the desktop app and set `"logLevel"` in the active space's `desktop.json`, leaving its other fields alone. Accepted values are `fatal`, `error`, `warn`, `info`, `debug`, `trace`, and `silent`. A space without its own `desktop.json` follows the main home. The new level applies the next time the desktop app launches the backend.
57
74
 
58
75
  ## SmartScreen and updater signing
59
76
 
60
- SmartScreen reputation and updater signing answer two different questions: SmartScreen asks "who published this installer?", while the updater signature asks "was this file tampered with?". Because the installer has no Authenticode signature, Windows cannot display a verified publisher identity; the Tauri `.sig` allows the built-in updater to verify that the downloaded installer was signed with the Kiki updater key. The two facts are complementary, not contradictory.
61
-
62
- If SmartScreen appears, first confirm that the URL is under `github.com/X-T-E-R/kiki/releases/` and that the SHA256 value matches. Only then use **More info** and **Run anyway** if you accept the unknown-publisher warning. Do not install a copy received through chat, email, or a third-party mirror.
77
+ When SmartScreen appears, check the URL and the hash before you go any further: the URL should be under `github.com/X-T-E-R/kiki/releases/`, and the SHA256 value should match the published one. If both check out, use **More info** → **Run anyway**. A copy that arrived through chat, email, or a third-party mirror fails that check by definition — do not install it.
63
78
 
64
79
  ## Windows, tray, and opening files
65
80
 
66
- Closing the window hides it to the tray on Windows and macOS; use **Quit** from the tray menu, or the usual exit command, to actually exit. If the tray icon cannot be created, Kiki still opens normally and closing the window asks you to confirm the exit instead. On Linux, when a tray is available the same close minimizes the window so your window manager can bring it back; where there is no tray, closing asks you to confirm the exit. Global shortcuts are a convenience — if one cannot be registered, the app still starts.
81
+ On Windows and macOS, closing the window hides it to the tray — **Quit** in the tray menu is what actually exits. On Linux with a tray available, the same close minimizes the window so your window manager can bring it back. Where no tray is available, closing the window asks you to confirm the exit instead.
67
82
 
68
- Opening a file from the file menu hands it to the system application associated with that file type. The menu refuses a list of known launch targets rather than opening them: `.app` and `.command` on macOS, `.desktop` on Linux, and executables and scripts on Windows — including a link whose real target is one of those. Ordinary text files open normally, and *Reveal in file manager* and saving are unaffected. Treat the refusal list as covering those named types, not as a general promise about every file association.
83
+ Opening a file from the file menu hands it to the app your system associates with that file type. The menu does not launch these types, because starting them would run code outside the app: `.app` and `.command` on macOS, `.desktop` on Linux, and executables and scripts on Windows. A shortcut pointing at one of those is refused too. Other files, including ordinary text files, open normally, and **Reveal in file manager** is unaffected.
69
84
 
70
85
  ## Roll back
71
86
 
72
- Rollback uses the immutable assets retained on the Releases page. Back up any important workspace data first, close Kiki, download the previous installer and `.sha256` file from its exact tag, verify the hash, and run that installer.
87
+ To go back a version, back up any workspace data you care about, close Kiki, then download the previous installer and its `.sha256` file from that exact tag, verify the hash, and run the installer.
73
88
 
74
- If Windows refuses to install an older version over a newer one, uninstall Kiki from **Installed apps** and then run the older installer. Do not delete Kiki's application data while uninstalling unless you also intend to reset local settings and sessions. After rollback, use the stable feed or continue updating manually from stable Releases to avoid immediately selecting a newer beta again.
89
+ If Windows refuses to install the older version over the newer one, uninstall Kiki from **Installed apps** first, then run the older installer. Keep Kiki's application data through that uninstall unless you want to reset your local settings and sessions. After rolling back, stay on the stable channel — otherwise the next update check offers you the beta again.
@@ -1,6 +1,6 @@
1
1
  # First launch
2
2
 
3
- This page picks up after installation: start Kiki, configure an API source, and run your first conversation.
3
+ You have Kiki installed. This page walks through the first ten minutes: starting it in your project, connecting a model, and getting a useful answer out of it.
4
4
 
5
5
  ## Start Kiki
6
6
 
@@ -11,54 +11,65 @@ cd your-project
11
11
  kiki
12
12
  ```
13
13
 
14
- When developing from source, run `pnpm dev:cli` from the repository root instead. To run a single instruction without entering the interactive UI, use `-p` (prompt mode):
14
+ If you are working from a source checkout, run `pnpm dev:cli` from the repository root instead. To send a single instruction without entering the interactive UI, use `-p` (prompt mode):
15
15
 
16
16
  ```sh
17
17
  kiki -p "Take a look at this project's directory structure"
18
18
  ```
19
19
 
20
- To resume the previous session, add `-c` (short for `--continue`; how it differs from `--session` is covered in [Workspaces and sessions](../guides/sessions.md#starting-and-resuming-sessions)):
20
+ Add `-c` (short for `--continue`) to pick up the previous session; [Workspaces and sessions](../guides/sessions.md#starting-and-resuming-sessions) covers how that differs from `--session`:
21
21
 
22
22
  ```sh
23
23
  kiki -c
24
24
  ```
25
25
 
26
- ## Configure an API source
26
+ ## Connect a model
27
27
 
28
- On first launch you need to configure an API source. In the interactive UI, enter `/login` to begin the login flow:
28
+ Kiki needs a model before it can answer anything. In the interactive UI, type `/login`:
29
29
 
30
30
  ```sh
31
31
  /login
32
32
  ```
33
33
 
34
- `/login` opens a platform selector supporting two options:
34
+ That opens a picker with four options:
35
35
 
36
- - **Kimi Code (OAuth)** — device-code flow; open the link on any device, sign in, and enter the code to authorize
37
- - **Kimi Platform API key** — enter an API key from `platform.kimi.com` or `platform.kimi.ai`
36
+ - **Kimi Code (kimi.com/code)** — the managed subscription, via a device-code flow: open the link on any device, sign in, and enter the code
37
+ - **Kimi Code (kimi.ai/code)** — the same flow against the global endpoint
38
+ - **Kimi Platform (API key · platform.kimi.com)** — an API key from the mainland platform console
39
+ - **Kimi Platform (API key · platform.kimi.ai)** — an API key from the global platform console
38
40
 
39
- To sign out, enter `/logout` to clear the current credentials.
41
+ `/logout` clears the current credentials.
40
42
 
41
- ::: tip Using other AI providers
42
- If you want to connect Anthropic, OpenAI, Google, or other providers, edit `~/.kiki/config.toml` directly to configure the API key. See [Providers and models](../configuration/providers.md) for details. For the full reference of all config options, see [Configuration files](../configuration/config-files.md), [Environment variables](../configuration/env-vars.md), and [Configuration overrides](../configuration/overrides.md).
43
+ ::: tip Other providers
44
+ Anthropic, OpenAI, Google, and other providers are configured in `~/.kiki/config.toml` — see [Providers and models](../configuration/providers.md). The full option reference is split across [Configuration files](../configuration/config-files.md), [Environment variables](../configuration/env-vars.md), and [Configuration overrides](../configuration/overrides.md).
43
45
  :::
44
46
 
45
- In the desktop app and browser UI, an optional setup wizard opens on first run. It has four pages: pick your language and look; connect a model using an API key (the most general option) or sign in with Kimi Code, GitHub Copilot, or ChatGPT (Codex); choose the default permission mode for new sessions (Auto is recommended); and an optional last page about web search, SSH, external engines, plugins and MCP, scheduled tasks and more, where each item opens its settings or, with **Let Kiki set it up**, a new session with a `/kiki-ops` request pre-filled (not sent). The wizard does not ask for a folder: a new session uses the most recent workspace, or a new folder in Kiki Home when there is none. The model step groups API-key templates by vendor, gateway, and local server. After connecting, use **Settings → Models & providers → Available models** to search and star the model new sessions should use. Any step can be skipped and finished later in Settings, and **Replay setup wizard** runs it again. Finishing opens a new session with an empty input box; starter suggestions below it fill in a first prompt, and nothing is sent until you send it. To set up search, MCP, or your own agent roles later, ask Kiki with `/kiki-ops`; see [Agents and Sub-Agents](../customization/agents.md#built-in-sub-agents) for how profiles select models.
47
+ Instead of the terminal, the desktop app and the browser UI open a setup wizard on first run with the same four choices:
48
+
49
+ 1. **Language and look** — the window behind the dialog previews each choice.
50
+ 2. **Connect a model** — an API key works with the widest range of services, and you can instead sign in with a Kimi Code, GitHub Copilot, or ChatGPT (Codex) account. Templates are grouped by vendor, gateway, and local server. **Test connection** checks the values in the form without saving anything.
51
+ 3. **Permissions** — the default permission mode for new sessions. Auto is the recommended choice: it works on its own inside the workspace and asks before sensitive or external actions.
52
+ 4. **What else Kiki can do** — web search and history, memory, SSH hosts, external engines, plugins, skills and MCP, scheduled tasks, the task board, and bots. Each row either opens its settings or, with **Let Kiki set it up**, opens a new session with a `/kiki-ops` request typed in for you to review and send.
53
+
54
+ Skip any page and finish it later — **Settings → Models & providers** holds the model connection, and **Replay setup wizard** in Settings starts the wizard over. After connecting a provider, star the model you want in **Settings → Models & providers → Available models**; new sessions use starred models.
55
+
56
+ The wizard does not ask which folder to work in. **Set up with Kiki** opens a new session in a new folder under Kiki Home, with a setup request already typed into the composer: Kiki asks what you mainly use it for, offers to create your first agent, and helps you choose a default model and thinking effort for the read-only Explore subagent — or leaves it alone, or turns that role off. **Set up later** skips all of that and simply closes the dialog. Nothing is sent in either case until you send it, and the starter chips on the new session offer a few opening prompts. For the workspace itself, the new session page still defaults to your most recent workspace, or a new folder under Kiki Home if you have none. You can also ask for any of that later setup with `/kiki-ops`, and [Agents and sub-agents](../customization/agents.md#built-in-sub-agents) covers how agent profiles pick their model.
46
57
 
47
58
  ## Your first conversation
48
59
 
49
- Once logged in, describe a task in natural language. A good starting point is to let Kiki familiarize itself with the project:
60
+ Once logged in, describe what you want in natural language. Letting Kiki look around first is a good way to start:
50
61
 
51
- ```
62
+ ```text
52
63
  Take a look at this project's directory structure and briefly describe what each directory is for.
53
64
  ```
54
65
 
55
- Kiki automatically calls file-reading, search, and other tools (tools are built-in capabilities the agent can invoke — reading files, searching code, running commands) to browse the relevant content before responding. Read-only operations are executed automatically by default without requiring confirmation.
66
+ Kiki answers using tools (built-in capabilities it can call — reading files, searching code, running commands), so it looks at your project before it replies instead of guessing. Read-only calls run without stopping to ask.
56
67
 
57
- New sessions default to Auto mode: ordinary tool calls, including shell commands, run without asking. Access to sensitive files such as `.env` files and private keys requires approval, as do dangerous Bash commands by default. In manual mode, `Write` / `Edit` inside a trusted working directory run without per-file approval; shell commands and workspace-external writes ask first. Use `/permission` to pick one of the four modes: `manual`, `auto`, `review` ("Approve for me", where a reviewer you configure decides first and anything uncertain comes back to you), or `yolo`. See [Permission modes](../guides/interaction.md#permission-modes) for the differences.
68
+ New sessions start in Auto mode, so Kiki runs ordinary tool calls — including shell commands — without stopping to ask, and pauses for your approval before touching sensitive files such as `.env` or private keys. Use `/permission` to switch to `manual`, `auto`, `review` ("Approve for me", where a reviewer you configure decides first), or `yolo`; [Permission modes](../guides/interaction.md#permission-modes) explains what each one asks for.
58
69
 
59
- You can also describe a more concrete task directly:
70
+ You can also skip the tour and describe a concrete task:
60
71
 
61
- ```
72
+ ```text
62
73
  Add a function in src/utils that converts any string to kebab-case, and add a unit test for it.
63
74
  ```
64
75
 
@@ -68,9 +79,9 @@ Kiki plans the steps, modifies the code, runs the tests, and tells you what it d
68
79
  Type `/help` at any time to open the built-in command and keyboard shortcut panel. Use `↑`/`↓` to browse and `Esc` to close. To exit, type `/exit`, press `Ctrl-C` twice, or press `Ctrl-D` with the input box empty.
69
80
  :::
70
81
 
71
- ## Common commands and keyboard shortcuts
82
+ ## Commands and shortcuts worth knowing now
72
83
 
73
- For a first-time user, the following is all you need to know:
84
+ If you remember nothing else from this page, remember these:
74
85
 
75
86
  **Session commands**
76
87
 
@@ -96,7 +107,7 @@ For the full list, type `/help` or visit [Slash commands](../reference/slash-com
96
107
 
97
108
  ## Where data is stored
98
109
 
99
- Kiki stores its local data under `~/.kiki/` by default — config files, session records, logs, and the update cache. To move it elsewhere, point to a new path via the `KIKI_HOME` environment variable. Note that the desktop app's OAuth credentials default to the compatibility home `~/.kimi-code/` when `KIKI_HOME` is unset; see [Data locations](../configuration/data-locations.md) for the full picture.
110
+ Kiki keeps its local data under `~/.kiki/` — config files, session records, logs, and the update cache. Set the `KIKI_HOME` environment variable to move all of it somewhere else. One exception: unless `KIKI_HOME` is set, the desktop app reads OAuth credentials from the compatibility home `~/.kimi-code/`. [Data locations](../configuration/data-locations.md) lists every path and what it holds.
100
111
 
101
112
  ## Next steps
102
113