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.
- package/README.md +13 -10
- package/dist/docs/en/configuration/config-files.md +63 -20
- package/dist/docs/en/configuration/data-locations.md +12 -4
- package/dist/docs/en/configuration/env-vars.md +4 -6
- package/dist/docs/en/configuration/overrides.md +13 -14
- package/dist/docs/en/configuration/providers.md +8 -6
- package/dist/docs/en/customization/agent-profiles.md +33 -38
- package/dist/docs/en/customization/agents.md +129 -107
- package/dist/docs/en/customization/hooks.md +41 -48
- package/dist/docs/en/customization/personas.md +19 -21
- package/dist/docs/en/customization/plugins.md +180 -156
- package/dist/docs/en/customization/prompt-fields.md +10 -6
- package/dist/docs/en/customization/skills.md +11 -13
- package/dist/docs/en/customization/skins.md +23 -27
- package/dist/docs/en/customization/themes.md +15 -15
- package/dist/docs/en/features/agents.md +85 -0
- package/dist/docs/en/features/daily.md +37 -7
- package/dist/docs/en/features/ecosystem.md +3 -1
- package/dist/docs/en/features/extend.md +7 -1
- package/dist/docs/en/features/freedom.md +4 -0
- package/dist/docs/en/features/index.md +6 -5
- package/dist/docs/en/features/long-work.md +23 -5
- package/dist/docs/en/features/look.md +1 -1
- package/dist/docs/en/features/people.md +10 -2
- package/dist/docs/en/features/spaces.md +16 -4
- package/dist/docs/en/features/workbench.md +11 -3
- package/dist/docs/en/getting-started/desktop-app.md +44 -29
- package/dist/docs/en/getting-started/first-launch.md +32 -21
- package/dist/docs/en/getting-started/installation.md +27 -12
- package/dist/docs/en/getting-started/use-cases.md +35 -35
- package/dist/docs/en/guides/goals.md +9 -7
- package/dist/docs/en/guides/interaction.md +26 -26
- package/dist/docs/en/guides/interface.md +18 -14
- package/dist/docs/en/guides/memory.md +43 -14
- package/dist/docs/en/guides/sessions.md +32 -26
- package/dist/docs/en/guides/settings.md +60 -29
- package/dist/docs/en/index.md +8 -2
- package/dist/docs/en/reference/command.md +8 -4
- package/dist/docs/en/reference/keyboard.md +18 -4
- package/dist/docs/en/reference/model-vocabulary.md +6 -8
- package/dist/docs/en/reference/slash-commands.md +4 -4
- package/dist/docs/en/reference/tools.md +92 -15
- package/dist/docs/en/release-notes/changelog.md +1 -9
- package/dist/docs/en/server/acp.md +1 -1
- package/dist/docs/en/server/ide.md +1 -1
- package/dist/docs/en/server/local-server.md +5 -5
- package/dist/docs/en/server/mcp.md +2 -2
- package/dist/docs/en/server/rest-api.md +79 -5
- package/dist/docs/en/server/sdk.md +2 -2
- package/dist/docs/zh/configuration/config-files.md +56 -15
- package/dist/docs/zh/configuration/data-locations.md +12 -4
- package/dist/docs/zh/configuration/env-vars.md +4 -6
- package/dist/docs/zh/configuration/overrides.md +13 -14
- package/dist/docs/zh/configuration/providers.md +7 -5
- package/dist/docs/zh/customization/agent-profiles.md +31 -36
- package/dist/docs/zh/customization/agents.md +120 -98
- package/dist/docs/zh/customization/hooks.md +35 -42
- package/dist/docs/zh/customization/personas.md +16 -18
- package/dist/docs/zh/customization/plugins.md +167 -142
- package/dist/docs/zh/customization/prompt-fields.md +9 -5
- package/dist/docs/zh/customization/skills.md +10 -12
- package/dist/docs/zh/customization/skins.md +19 -23
- package/dist/docs/zh/customization/themes.md +12 -12
- package/dist/docs/zh/features/agents.md +85 -0
- package/dist/docs/zh/features/daily.md +37 -7
- package/dist/docs/zh/features/ecosystem.md +3 -1
- package/dist/docs/zh/features/extend.md +7 -1
- package/dist/docs/zh/features/freedom.md +4 -0
- package/dist/docs/zh/features/index.md +6 -5
- package/dist/docs/zh/features/long-work.md +22 -4
- package/dist/docs/zh/features/look.md +1 -1
- package/dist/docs/zh/features/people.md +10 -2
- package/dist/docs/zh/features/spaces.md +15 -3
- package/dist/docs/zh/features/workbench.md +11 -3
- package/dist/docs/zh/getting-started/desktop-app.md +43 -28
- package/dist/docs/zh/getting-started/first-launch.md +32 -21
- package/dist/docs/zh/getting-started/installation.md +26 -11
- package/dist/docs/zh/getting-started/use-cases.md +35 -37
- package/dist/docs/zh/guides/goals.md +8 -8
- package/dist/docs/zh/guides/interaction.md +25 -25
- package/dist/docs/zh/guides/interface.md +18 -14
- package/dist/docs/zh/guides/memory.md +43 -14
- package/dist/docs/zh/guides/sessions.md +30 -24
- package/dist/docs/zh/guides/settings.md +54 -23
- package/dist/docs/zh/index.md +7 -1
- package/dist/docs/zh/reference/command.md +7 -3
- package/dist/docs/zh/reference/keyboard.md +18 -4
- package/dist/docs/zh/reference/model-vocabulary.md +6 -8
- package/dist/docs/zh/reference/slash-commands.md +3 -3
- package/dist/docs/zh/reference/tools.md +74 -9
- package/dist/docs/zh/release-notes/changelog.md +1 -9
- package/dist/docs/zh/server/acp.md +1 -1
- package/dist/docs/zh/server/ide.md +1 -1
- package/dist/docs/zh/server/local-server.md +5 -5
- package/dist/docs/zh/server/mcp.md +2 -2
- package/dist/docs/zh/server/rest-api.md +69 -1
- package/dist/docs/zh/server/sdk.md +2 -2
- package/dist/main.mjs +12545 -3456
- package/dist/web/assets/AppErrorBoundary-RFIAb-Uf.js +1 -0
- package/dist/web/assets/NavScopeBoundary-DY_ET7A-.js +1 -0
- package/dist/web/assets/{arc-y2SkSoyr.js → arc-CMgTB1m7.js} +1 -1
- package/dist/web/assets/{architectureDiagram-3BPJPVTR-uCwLz53m.js → architectureDiagram-3BPJPVTR-BU79ou2C.js} +1 -1
- package/dist/web/assets/{blockDiagram-GPEHLZMM-BZyWv36G.js → blockDiagram-GPEHLZMM-Bkuldod2.js} +1 -1
- package/dist/web/assets/{c4Diagram-AAUBKEIU-DKGx9i50.js → c4Diagram-AAUBKEIU-C3WMeqyu.js} +1 -1
- package/dist/web/assets/channel-DpDZUJRn.js +1 -0
- package/dist/web/assets/{chunk-2J33WTMH-CSkrhrsp.js → chunk-2J33WTMH-CesyWmwo.js} +1 -1
- package/dist/web/assets/{chunk-4BX2VUAB-CtxMoJ68.js → chunk-4BX2VUAB-C7rghYTf.js} +1 -1
- package/dist/web/assets/{chunk-55IACEB6-Dos3ftEy.js → chunk-55IACEB6-BqRHhwtz.js} +1 -1
- package/dist/web/assets/{chunk-727SXJPM-wbzEYK9z.js → chunk-727SXJPM-BhSqCRBc.js} +1 -1
- package/dist/web/assets/{chunk-AQP2D5EJ-B9GKvCD6.js → chunk-AQP2D5EJ-DdYE2ZVZ.js} +1 -1
- package/dist/web/assets/{chunk-FMBD7UC4-u5Y2P6IX.js → chunk-FMBD7UC4-BCRPUxDF.js} +1 -1
- package/dist/web/assets/{chunk-ND2GUHAM-B8rFKkTV.js → chunk-ND2GUHAM-CuvyDjTR.js} +1 -1
- package/dist/web/assets/{chunk-QZHKN3VN-EQsKtuD-.js → chunk-QZHKN3VN-BU5vAS78.js} +1 -1
- package/dist/web/assets/classDiagram-4FO5ZUOK-Bju1GfNu.js +1 -0
- package/dist/web/assets/classDiagram-v2-Q7XG4LA2-Bju1GfNu.js +1 -0
- package/dist/web/assets/client-C0oH7-8r.js +2 -0
- package/dist/web/assets/connection-BhO2nh7P.js +1 -0
- package/dist/web/assets/{cose-bilkent-S5V4N54A-D6dr5mIW.js → cose-bilkent-S5V4N54A-CXrvsA1a.js} +1 -1
- package/dist/web/assets/{dagre-BM42HDAG-Dnyhc4Hn.js → dagre-BM42HDAG-TaAea3Rt.js} +1 -1
- package/dist/web/assets/{diagram-2AECGRRQ-CYXkWdne.js → diagram-2AECGRRQ-CdEH4jGt.js} +1 -1
- package/dist/web/assets/{diagram-5GNKFQAL-DPwBf5Ag.js → diagram-5GNKFQAL-A0jZ_p-T.js} +1 -1
- package/dist/web/assets/{diagram-KO2AKTUF-DNeLYZ8X.js → diagram-KO2AKTUF-miHWORz3.js} +1 -1
- package/dist/web/assets/{diagram-LMA3HP47-zU8RsQTX.js → diagram-LMA3HP47-BlUIwEIg.js} +1 -1
- package/dist/web/assets/{diagram-OG6HWLK6-Cf9Mm94H.js → diagram-OG6HWLK6-DwDzMhEg.js} +1 -1
- package/dist/web/assets/{erDiagram-TEJ5UH35-Ch4CeiUI.js → erDiagram-TEJ5UH35-BJr5w62i.js} +1 -1
- package/dist/web/assets/export-BlxaZKEe.js +2 -0
- package/dist/web/assets/{flowDiagram-I6XJVG4X-Csn6WqEH.js → flowDiagram-I6XJVG4X-BP7KSFjx.js} +1 -1
- package/dist/web/assets/{ganttDiagram-6RSMTGT7-DsuBgEyu.js → ganttDiagram-6RSMTGT7-BstLBBof.js} +1 -1
- package/dist/web/assets/{gitGraphDiagram-PVQCEYII-CPA7jCxU.js → gitGraphDiagram-PVQCEYII-C57s7nZ-.js} +1 -1
- package/dist/web/assets/highlighted-body-OFNGDK62-BVb-7KsA.js +1 -0
- package/dist/web/assets/index-69qhvTvD.js +1 -0
- package/dist/web/assets/{index-BYUHmd8w.js → index-BDNM6yJI.js} +2 -2
- package/dist/web/assets/{index-BGgZxlEQ.js → index-BJF_gEDs.js} +2 -2
- package/dist/web/assets/index-BOwMP6BP.js +1 -0
- package/dist/web/assets/{index-C69a5Mcz.js → index-BZsyXCqm.js} +1 -1
- package/dist/web/assets/{index-C7EA7a_g.js → index-Bfl4JiNq.js} +2 -2
- package/dist/web/assets/index-BlD3AKX-.js +1 -0
- package/dist/web/assets/{index-CIymCfcP.js → index-BnvW0EvQ.js} +1 -1
- package/dist/web/assets/index-C4rmWyOm.js +1 -0
- package/dist/web/assets/index-CGLcb3HY.js +1 -0
- package/dist/web/assets/{index-kWBxPqIX.js → index-CPvOeQPX.js} +1 -1
- package/dist/web/assets/index-Cjbe0JKM.js +1 -0
- package/dist/web/assets/index-CmYoJWUm.js +1 -0
- package/dist/web/assets/index-CtUFrjKe.js +1 -0
- package/dist/web/assets/index-DDvDRMTK.js +1 -0
- package/dist/web/assets/index-DSpndwAR.css +1 -0
- package/dist/web/assets/index-D_JjTHxi.js +1 -0
- package/dist/web/assets/index-DbuwcnbT.js +1 -0
- package/dist/web/assets/index-DcXyS0nN.js +1 -0
- package/dist/web/assets/index-Dcl9ruKA.js +1 -0
- package/dist/web/assets/index-DgwALPNA.js +121 -0
- package/dist/web/assets/{index-DoN1FTEe.js → index-DkE8hRT1.js} +2 -2
- package/dist/web/assets/index-DsyRBZ4h.js +1 -0
- package/dist/web/assets/{index-29zav3JI.js → index-DuudNhLL.js} +4 -4
- package/dist/web/assets/index-Gc4F0b2f.js +1 -0
- package/dist/web/assets/index-HGqqwKoV.js +13 -0
- package/dist/web/assets/index-KchrJnno.js +3 -0
- package/dist/web/assets/{index-B0KNSyji.js → index-Tmi2BPYU.js} +1 -1
- package/dist/web/assets/index-Ya4GuDs0.js +1 -0
- package/dist/web/assets/index-_aDaKqLB.js +1 -0
- package/dist/web/assets/index-_qwOAotB.js +1 -0
- package/dist/web/assets/index-hnIkczza.js +7 -0
- package/dist/web/assets/{infoDiagram-5YYISTIA-D3Q__m62.js → infoDiagram-5YYISTIA-CifuVY6C.js} +1 -1
- package/dist/web/assets/{ishikawaDiagram-YF4QCWOH-CcvCBuZ5.js → ishikawaDiagram-YF4QCWOH-Cd60vQUi.js} +1 -1
- package/dist/web/assets/{journeyDiagram-JHISSGLW-COZU4LNt.js → journeyDiagram-JHISSGLW-Cb3Xl_wl.js} +1 -1
- package/dist/web/assets/{kanban-definition-UN3LZRKU-BrXjBoAU.js → kanban-definition-UN3LZRKU-Ei6ThuZt.js} +1 -1
- package/dist/web/assets/{linear-BgP1STFi.js → linear-CDZJx-o2.js} +1 -1
- package/dist/web/assets/mermaid-GHXKKRXX-DFxyxD7G.js +331 -0
- package/dist/web/assets/{mindmap-definition-RKZ34NQL-CgjSrE5r.js → mindmap-definition-RKZ34NQL-B0ygxzkx.js} +1 -1
- package/dist/web/assets/navViewState-Ck_HK-TK.js +1 -0
- package/dist/web/assets/{pieDiagram-4H26LBE5-DTfe1sKA.js → pieDiagram-4H26LBE5-B2FdrvDv.js} +1 -1
- package/dist/web/assets/{quadrantDiagram-W4KKPZXB-D95hfh0q.js → quadrantDiagram-W4KKPZXB-CwpOTy3d.js} +1 -1
- package/dist/web/assets/{requirementDiagram-4Y6WPE33-DtSLi7Mh.js → requirementDiagram-4Y6WPE33-ExdZNzLQ.js} +1 -1
- package/dist/web/assets/{sankeyDiagram-5OEKKPKP-gi_dJpcU.js → sankeyDiagram-5OEKKPKP-u0EZKD7D.js} +1 -1
- package/dist/web/assets/{sequenceDiagram-3UESZ5HK-DKQ9a72t.js → sequenceDiagram-3UESZ5HK-BXHMy5DY.js} +1 -1
- package/dist/web/assets/{spaces-B2Ccyh_T.js → spaces-C8n7xQPx.js} +1 -1
- package/dist/web/assets/{stateDiagram-AJRCARHV-Bz7tmSqa.js → stateDiagram-AJRCARHV-DMXx7ell.js} +1 -1
- package/dist/web/assets/stateDiagram-v2-BHNVJYJU-Bydq1_By.js +1 -0
- package/dist/web/assets/theme-BBnHttAf.js +1 -0
- package/dist/web/assets/{timeline-definition-PNZ67QCA-BfMXPwhV.js → timeline-definition-PNZ67QCA-DtqVG_4u.js} +1 -1
- package/dist/web/assets/{vennDiagram-CIIHVFJN-WLxW2KT5.js → vennDiagram-CIIHVFJN-Dom0ex8r.js} +1 -1
- package/dist/web/assets/{wardley-L42UT6IY-DiiqwIdq.js → wardley-L42UT6IY-C-RstmuQ.js} +1 -1
- package/dist/web/assets/{wardleyDiagram-YWT4CUSO-DmCukWuw.js → wardleyDiagram-YWT4CUSO-C8CzNfdf.js} +1 -1
- package/dist/web/assets/{xychartDiagram-2RQKCTM6-Cfq1W2tT.js → xychartDiagram-2RQKCTM6-1AxVTyB6.js} +1 -1
- package/dist/web/index.html +2 -2
- package/native/auth-native/prebuilds/linux-arm64/auth-native.node +0 -0
- package/native/auth-native/prebuilds/linux-x64/auth-native.node +0 -0
- package/native/auth-native/prebuilds/win32-arm64/auth-native.node +0 -0
- package/native/auth-native/prebuilds/win32-x64/auth-native.node +0 -0
- package/package.json +1 -1
- package/dist/web/assets/AppErrorBoundary-DWpgwxFV.js +0 -1
- package/dist/web/assets/NavScopeBoundary-D8Lf1G0U.js +0 -1
- package/dist/web/assets/channel-BGdXootG.js +0 -1
- package/dist/web/assets/classDiagram-4FO5ZUOK-CPcnLy_H.js +0 -1
- package/dist/web/assets/classDiagram-v2-Q7XG4LA2-CPcnLy_H.js +0 -1
- package/dist/web/assets/client-DSIbyfoz.js +0 -2
- package/dist/web/assets/connection-DYZn9oPZ.js +0 -1
- package/dist/web/assets/export-Bq8ZECqX.js +0 -2
- package/dist/web/assets/highlighted-body-OFNGDK62-CDPBxM_E.js +0 -1
- package/dist/web/assets/index-AksnytJj.js +0 -1
- package/dist/web/assets/index-B8xhhYDh.css +0 -1
- package/dist/web/assets/index-BUrlrKap.js +0 -1
- package/dist/web/assets/index-B_5-HLed.js +0 -62
- package/dist/web/assets/index-BfmoxdpP.js +0 -1
- package/dist/web/assets/index-Bo3e-ohM.js +0 -3
- package/dist/web/assets/index-BrYV9gV_.js +0 -1
- package/dist/web/assets/index-C8XUtAvK.js +0 -1
- package/dist/web/assets/index-C9uil5my.js +0 -13
- package/dist/web/assets/index-CKpWHSp9.js +0 -1
- package/dist/web/assets/index-CLKBgQxV.js +0 -1
- package/dist/web/assets/index-CTyyUNWj.js +0 -7
- package/dist/web/assets/index-D7cg9qYZ.js +0 -1
- package/dist/web/assets/index-D7dg8R_q.js +0 -1
- package/dist/web/assets/index-DCSpedV_.js +0 -1
- package/dist/web/assets/index-DLbD0Nx5.js +0 -1
- package/dist/web/assets/index-DaEzbvvu.js +0 -1
- package/dist/web/assets/index-DhbcjMZF.js +0 -1
- package/dist/web/assets/index-Dw2h88mF.js +0 -1
- package/dist/web/assets/index-FcMtfmKv.js +0 -1
- package/dist/web/assets/index-XFq9Kgg0.js +0 -1
- package/dist/web/assets/index-iI2mM43w.js +0 -1
- package/dist/web/assets/index-oXOF7lko.js +0 -1
- package/dist/web/assets/locale-CANfezJ4.js +0 -17
- package/dist/web/assets/mermaid-GHXKKRXX-_JLagMll.js +0 -321
- package/dist/web/assets/navViewState-DS5LnMYc.js +0 -1
- package/dist/web/assets/settings-CcwMWXbp.js +0 -42
- package/dist/web/assets/stateDiagram-v2-BHNVJYJU-D6-wdUbw.js +0 -1
- 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
|
|
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
|
-
|
|
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
|
-
| [
|
|
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**
|
|
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** —
|
|
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
|
|
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
|
|
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) —
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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 **
|
|
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
|
-
|
|
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
|
|
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
|
|
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,
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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 |
|
|
24
|
+
| Channel | What it offers | Update feed |
|
|
16
25
|
| --- | --- | --- |
|
|
17
|
-
| Stable |
|
|
18
|
-
| Beta |
|
|
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
|
|
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
|
-
|
|
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
|
|
27
|
-
2. Download the `Kiki_*_x64-setup.exe` installer and
|
|
28
|
-
3. In
|
|
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.
|
|
36
|
-
5. Run the installer
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
##
|
|
26
|
+
## Connect a model
|
|
27
27
|
|
|
28
|
-
|
|
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
|
-
|
|
34
|
+
That opens a picker with four options:
|
|
35
35
|
|
|
36
|
-
- **Kimi Code (
|
|
37
|
-
- **Kimi
|
|
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
|
-
|
|
41
|
+
`/logout` clears the current credentials.
|
|
40
42
|
|
|
41
|
-
::: tip
|
|
42
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
##
|
|
82
|
+
## Commands and shortcuts worth knowing now
|
|
72
83
|
|
|
73
|
-
|
|
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
|
|
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
|
|