reflex-agent 0.19.0 → 0.19.1
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/.next/BUILD_ID +1 -1
- package/.next/app-build-manifest.json +96 -94
- package/.next/app-path-routes-manifest.json +9 -9
- package/.next/build-manifest.json +5 -5
- package/.next/prerender-manifest.json +3 -3
- package/.next/react-loadable-manifest.json +1 -1
- package/.next/server/app/_not-found/page.js +1 -1
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/agents/[agentId]/page.js +1 -1
- package/.next/server/app/agents/[agentId]/page.js.nft.json +1 -1
- package/.next/server/app/agents/[agentId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agents/[agentId]/respond/route.js +1 -1
- package/.next/server/app/api/agents/[agentId]/respond/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/images/[rootId]/[file]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/start/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/roots/[id]/attachments/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/roots/[id]/chat/[topicId]/send/route.js +1 -1
- package/.next/server/app/api/roots/[id]/chat/[topicId]/send/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/roots/[id]/chat/[topicId]/stop/route.js +1 -1
- package/.next/server/app/api/roots/[id]/chat/[topicId]/stop/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/roots/[id]/chat/[topicId]/stream/route.js +2 -2
- package/.next/server/app/api/roots/[id]/chat/[topicId]/stream/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/roots/[id]/dashboard/route.js +1 -1
- package/.next/server/app/api/roots/[id]/dashboard/route.js.nft.json +1 -1
- package/.next/server/app/api/roots/[id]/dashboard/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/roots/[id]/suggestions/route.js +1 -1
- package/.next/server/app/api/roots/[id]/suggestions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/utilities/[scope]/[id]/bundle.js/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/utilities/[scope]/[id]/host/route.js +1 -1
- package/.next/server/app/api/utilities/[scope]/[id]/host/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/utilities/[scope]/[id]/host-api.mjs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/utilities/[scope]/[id]/host-ui.mjs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/utilities/[scope]/[id]/iframe/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/utilities/[scope]/[id]/style.css/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/utilities/install-archive/route_client-reference-manifest.js +1 -1
- package/.next/server/app/audit/page.js +2 -2
- package/.next/server/app/audit/page.js.nft.json +1 -1
- package/.next/server/app/audit/page_client-reference-manifest.js +1 -1
- package/.next/server/app/dispatcher/page.js +1 -1
- package/.next/server/app/dispatcher/page.js.nft.json +1 -1
- package/.next/server/app/dispatcher/page_client-reference-manifest.js +1 -1
- package/.next/server/app/onboarding/page.js +2 -2
- package/.next/server/app/onboarding/page.js.nft.json +1 -1
- package/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page.js +2 -2
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/roots/[id]/chat/[topicId]/page.js +2 -2
- package/.next/server/app/roots/[id]/chat/[topicId]/page.js.nft.json +1 -1
- package/.next/server/app/roots/[id]/chat/[topicId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/roots/[id]/kb/[...slug]/page.js +2 -2
- package/.next/server/app/roots/[id]/kb/[...slug]/page.js.nft.json +1 -1
- package/.next/server/app/roots/[id]/kb/[...slug]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/roots/[id]/memory/page.js +1 -1
- package/.next/server/app/roots/[id]/memory/page.js.nft.json +1 -1
- package/.next/server/app/roots/[id]/memory/page_client-reference-manifest.js +1 -1
- package/.next/server/app/roots/[id]/page.js +6 -6
- package/.next/server/app/roots/[id]/page.js.nft.json +1 -1
- package/.next/server/app/roots/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/roots/[id]/workflows/[wfId]/page.js +2 -2
- package/.next/server/app/roots/[id]/workflows/[wfId]/page.js.nft.json +1 -1
- package/.next/server/app/roots/[id]/workflows/[wfId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/roots/[id]/workflows/page.js +2 -2
- package/.next/server/app/roots/[id]/workflows/page.js.nft.json +1 -1
- package/.next/server/app/roots/[id]/workflows/page_client-reference-manifest.js +1 -1
- package/.next/server/app/roots/new/page.js +4 -4
- package/.next/server/app/roots/new/page.js.nft.json +1 -1
- package/.next/server/app/roots/new/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/page.js +6 -6
- package/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/share/[id]/file/page.js +2 -2
- package/.next/server/app/share/[id]/file/page.js.nft.json +1 -1
- package/.next/server/app/share/[id]/file/page_client-reference-manifest.js +1 -1
- package/.next/server/app/share/[id]/page.js +2 -2
- package/.next/server/app/share/[id]/page.js.nft.json +1 -1
- package/.next/server/app/share/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/utilities/[scope]/[id]/page.js +2 -2
- package/.next/server/app/utilities/[scope]/[id]/page.js.nft.json +1 -1
- package/.next/server/app/utilities/[scope]/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/utilities/page.js +2 -2
- package/.next/server/app/utilities/page.js.nft.json +1 -1
- package/.next/server/app/utilities/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +9 -9
- package/.next/server/chunks/1116.js +1 -1
- package/.next/server/chunks/127.js +1 -0
- package/.next/server/chunks/1437.js +1 -0
- package/.next/server/chunks/1960.js +1 -1
- package/.next/server/chunks/2485.js +2 -2
- package/.next/server/chunks/285.js +5 -5
- package/.next/server/chunks/316.js +1 -0
- package/.next/server/chunks/3236.js +1 -0
- package/.next/server/chunks/3332.js +1 -1
- package/.next/server/chunks/3474.js +2 -2
- package/.next/server/chunks/3631.js +1 -1
- package/.next/server/chunks/383.js +80 -1
- package/.next/server/chunks/4031.js +2 -2
- package/.next/server/chunks/412.js +4 -0
- package/.next/server/chunks/4230.js +1 -1
- package/.next/server/chunks/4639.js +1 -1
- package/.next/server/chunks/4812.js +1 -1
- package/.next/server/chunks/6483.js +1 -1
- package/.next/server/chunks/8609.js +3 -3
- package/.next/server/chunks/8845.js +1 -0
- package/.next/server/chunks/9098.js +1 -1
- package/.next/server/chunks/9579.js +1 -1
- package/.next/server/chunks/9744.js +3 -0
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-manifest.json +5 -5
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/1607-15c6d55d9e53ff93.js +1 -0
- package/.next/static/chunks/3087-89315a04ad02f248.js +1 -0
- package/.next/static/chunks/4108.94b29b464eb76def.js +1 -0
- package/.next/static/chunks/434-111636f3d1607ae6.js +1 -0
- package/.next/static/chunks/5906-b510bcfd22b3cb54.js +1 -0
- package/.next/static/chunks/8275-b0235bf4164f80c8.js +1 -0
- package/.next/static/chunks/app/layout-ff235b86ba1c2051.js +1 -0
- package/.next/static/chunks/app/onboarding/{page-b1b1e6a4467ed781.js → page-2d69151514462c2f.js} +1 -1
- package/.next/static/chunks/app/page-bf7e4b271092499e.js +1 -0
- package/.next/static/chunks/app/roots/[id]/chat/[topicId]/page-99b5fd894d818407.js +1 -0
- package/.next/static/chunks/app/roots/[id]/kb/[...slug]/page-1770f40a6ebbe963.js +1 -0
- package/.next/static/chunks/app/roots/[id]/memory/{page-1f6bc3a624b141a5.js → page-d9df1020e2518e08.js} +1 -1
- package/.next/static/chunks/app/roots/[id]/page-5dbe59ec1a056767.js +1 -0
- package/.next/static/chunks/app/roots/[id]/workflows/[wfId]/page-24f3dbbc8c66fe66.js +1 -0
- package/.next/static/chunks/app/roots/[id]/workflows/page-d8a1dfdf2ae79306.js +1 -0
- package/.next/static/chunks/app/roots/new/page-29d4085ff97398aa.js +1 -0
- package/.next/static/chunks/app/settings/page-375f180a307b7982.js +1 -0
- package/.next/static/chunks/app/share/[id]/page-5802433c7b5b4a5b.js +1 -0
- package/.next/static/chunks/app/utilities/[scope]/[id]/page-d2f2cf9a1d829587.js +1 -0
- package/.next/static/chunks/app/utilities/page-87a36f10ea33d4fc.js +1 -0
- package/.next/static/chunks/{webpack-88066a85eb2d605f.js → webpack-a39957c5072b4303.js} +1 -1
- package/.next/static/css/749ec7b5594bd012.css +1 -0
- package/.next/trace +116 -116
- package/LICENSE +21 -0
- package/README.md +105 -84
- package/package.json +1 -1
- package/.next/server/chunks/2764.js +0 -80
- package/.next/server/chunks/4294.js +0 -1
- package/.next/server/chunks/6970.js +0 -1
- package/.next/server/chunks/8032.js +0 -3
- package/.next/server/chunks/832.js +0 -1
- package/.next/server/chunks/8583.js +0 -4
- package/.next/static/chunks/3363-f417b308a8cd156d.js +0 -1
- package/.next/static/chunks/3695-3576767108de7f38.js +0 -1
- package/.next/static/chunks/4108.19abaa6d618295ed.js +0 -1
- package/.next/static/chunks/5933-4013a6dab4565b5e.js +0 -1
- package/.next/static/chunks/7552-def8a17828891c8c.js +0 -1
- package/.next/static/chunks/app/layout-baad68d32b917b8f.js +0 -1
- package/.next/static/chunks/app/page-556a2139313c3c71.js +0 -1
- package/.next/static/chunks/app/roots/[id]/chat/[topicId]/page-52223811258d07b2.js +0 -1
- package/.next/static/chunks/app/roots/[id]/kb/[...slug]/page-0df769f27549cd16.js +0 -1
- package/.next/static/chunks/app/roots/[id]/page-17493991b2d391b3.js +0 -1
- package/.next/static/chunks/app/roots/[id]/workflows/[wfId]/page-a21fe3541418a80a.js +0 -1
- package/.next/static/chunks/app/roots/[id]/workflows/page-0952e5fb53d53c3e.js +0 -1
- package/.next/static/chunks/app/roots/new/page-4f571184c1856103.js +0 -1
- package/.next/static/chunks/app/settings/page-8c0ad1c1856da988.js +0 -1
- package/.next/static/chunks/app/share/[id]/page-b27a0bc7b9c6cda9.js +0 -1
- package/.next/static/chunks/app/utilities/[scope]/[id]/page-0fe4c377098064d5.js +0 -1
- package/.next/static/chunks/app/utilities/page-445933dcd5a500ae.js +0 -1
- package/.next/static/css/eef5a7cce3f3a4b3.css +0 -1
- /package/.next/static/{EXoiX_YvMRCB6oNXqJnaz → pJmMEuKKdWVEE__TmxHJk}/_buildManifest.js +0 -0
- /package/.next/static/{EXoiX_YvMRCB6oNXqJnaz → pJmMEuKKdWVEE__TmxHJk}/_ssgManifest.js +0 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Reflex authors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,54 +1,75 @@
|
|
|
1
|
-
# Reflex
|
|
1
|
+
# Reflex — local-first AI agent + knowledge base for your files
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
**Reflex turns any folder into a second brain run by an AI agent.** Point it at
|
|
4
|
+
a directory, and Claude Code or OpenAI Codex maintains a living knowledge base,
|
|
5
|
+
remembers every conversation, runs scheduled workflows in the background, and
|
|
6
|
+
dispatches sub-tasks in isolated git worktrees — all stored as plain markdown on
|
|
7
|
+
your machine. No cloud, no database, no daemon.
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
[](https://www.npmjs.com/package/reflex-agent)
|
|
10
|
+

|
|
11
|
+

|
|
12
|
+

|
|
13
|
+
[](LICENSE)
|
|
12
14
|
|
|
13
|
-
|
|
15
|
+
```sh
|
|
16
|
+
npm i -g reflex-agent
|
|
17
|
+
reflex start # opens the web UI at http://localhost:3210
|
|
18
|
+
```
|
|
14
19
|
|
|
15
|
-
|
|
20
|
+
> **Local-first AI assistant · personal knowledge management (PKM) · second
|
|
21
|
+
> brain · autonomous agent platform.** Your notes, chats, and automations live
|
|
22
|
+
> in your filesystem as markdown you can read, grep, and version-control —
|
|
23
|
+
> Reflex just makes an agent fluent in them.
|
|
16
24
|
|
|
17
|
-
|
|
18
|
-
Node 24 recommended (built-in SQLite powers session search).
|
|
19
|
-
- A coding-agent CLI authenticated:
|
|
20
|
-
- `npm i -g @openai/codex && codex login`, or
|
|
21
|
-
- `npm i -g @anthropic-ai/claude-code && claude login`
|
|
25
|
+
---
|
|
22
26
|
|
|
23
|
-
|
|
27
|
+
## Why Reflex?
|
|
24
28
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
+
A cloud chatbot forgets you between sessions, can't act while you're away, and
|
|
30
|
+
keeps your data on someone else's server. Reflex is built the other way around:
|
|
31
|
+
|
|
32
|
+
- **Local-first & private.** Everything is markdown + JSON under your control.
|
|
33
|
+
Network access is opt-in (LLM calls, web fetch, GitHub installs); Reflex
|
|
34
|
+
browses and reads fully offline.
|
|
35
|
+
- **Persistent memory & recall.** A durable per-project memory plus full-text
|
|
36
|
+
search over *every* past conversation — the agent never re-asks who you are.
|
|
37
|
+
- **Autonomous by schedule.** Background workflows wake on their own clock
|
|
38
|
+
(hourly / daily / weekly) and do work without you in the loop.
|
|
39
|
+
- **A platform, not a prompt.** Installable mini-app **utilities** add UI,
|
|
40
|
+
commands, skills, and automations — and can securely share data with each
|
|
41
|
+
other through a permissioned, audited grant system.
|
|
42
|
+
- **Bring your own agent.** Runs on **Claude Code** or **OpenAI Codex**, with
|
|
43
|
+
**MCP** servers as on-demand tools.
|
|
29
44
|
|
|
30
|
-
|
|
45
|
+
## Quickstart
|
|
46
|
+
|
|
47
|
+
**Prerequisites**
|
|
48
|
+
|
|
49
|
+
- **Node.js 22+** ([nodejs.org](https://nodejs.org/) or `nvm`/`fnm`). Node 24
|
|
50
|
+
recommended — its built-in SQLite powers conversation search.
|
|
51
|
+
- An authenticated coding-agent CLI:
|
|
52
|
+
- `npm i -g @openai/codex && codex login`, or
|
|
53
|
+
- `npm i -g @anthropic-ai/claude-code && claude login`
|
|
54
|
+
|
|
55
|
+
**Install & run**
|
|
31
56
|
|
|
32
57
|
```sh
|
|
33
|
-
reflex
|
|
58
|
+
npm i -g reflex-agent # or: pnpm add -g reflex-agent
|
|
59
|
+
reflex start # http://localhost:3210
|
|
34
60
|
reflex start --port 4000 --no-open
|
|
35
61
|
```
|
|
36
62
|
|
|
37
|
-
|
|
38
|
-
`reflex start` can co-exist without a port collision.
|
|
39
|
-
|
|
40
|
-
## First run
|
|
63
|
+
**First run**
|
|
41
64
|
|
|
42
|
-
1. Click **Add a root**
|
|
43
|
-
2.
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
`.reflex/` tree, your memory files, and (with permission) shell +
|
|
47
|
-
web tools.
|
|
65
|
+
1. Click **Add a root** and pick a directory — that folder becomes a *Space*.
|
|
66
|
+
2. The onboarding wizard seeds memory and suggests a first workflow.
|
|
67
|
+
3. Open a chat and type in plain language. The agent reads/writes the
|
|
68
|
+
`.reflex/` tree, your memory files, and (with permission) shell + web tools.
|
|
48
69
|
|
|
49
|
-
##
|
|
70
|
+
## Features
|
|
50
71
|
|
|
51
|
-
### A knowledge base per Space
|
|
72
|
+
### 📚 A knowledge base per Space
|
|
52
73
|
|
|
53
74
|
The agent builds a tree of markdown notes under `<your-dir>/.reflex/`:
|
|
54
75
|
|
|
@@ -68,57 +89,57 @@ The agent builds a tree of markdown notes under `<your-dir>/.reflex/`:
|
|
|
68
89
|
|
|
69
90
|
See [docs/kb.md](docs/kb.md) and [docs/architecture.md](docs/architecture.md).
|
|
70
91
|
|
|
71
|
-
### Cross-session memory
|
|
72
|
-
|
|
73
|
-
Eight bounded markdown files capture who the user is and what the
|
|
74
|
-
project is about. Every chat starts with this loaded into the system
|
|
75
|
-
prompt — the agent never re-asks who you are.
|
|
76
|
-
|
|
77
|
-
A weekly system task rolls up journal entries into a `RECENT.md`
|
|
78
|
-
summary. A hygiene scanner refuses memory writes that look like
|
|
79
|
-
prompt injection, credentials, or invisible unicode.
|
|
80
|
-
|
|
81
|
-
See [docs/memory.md](docs/memory.md).
|
|
92
|
+
### 🧠 Cross-session memory
|
|
82
93
|
|
|
83
|
-
|
|
94
|
+
Eight bounded markdown files capture who you are and what the project is about,
|
|
95
|
+
loaded into every chat's system prompt. A weekly task rolls up the journal into
|
|
96
|
+
a summary; a hygiene scanner refuses writes that look like prompt injection,
|
|
97
|
+
credentials, or invisible unicode. See [docs/memory.md](docs/memory.md).
|
|
84
98
|
|
|
85
|
-
|
|
86
|
-
into a SQLite FTS5 database under `$REFLEX_HOME/sessions.db`. The
|
|
87
|
-
agent (or you, or a utility) can ask "what did we say about X?" with
|
|
88
|
-
ranked snippets returning in milliseconds.
|
|
99
|
+
### 🔎 Searchable conversation history
|
|
89
100
|
|
|
101
|
+
Every journal entry and chat transcript across every Space is indexed into a
|
|
102
|
+
SQLite **FTS5** database. Ask *"what did we decide about X?"* and get
|
|
103
|
+
ranked snippets in milliseconds — the substrate for true long-term recall.
|
|
90
104
|
See [docs/sessions.md](docs/sessions.md).
|
|
91
105
|
|
|
92
|
-
###
|
|
93
|
-
|
|
94
|
-
The user (or the agent) composes "recipes" from typed steps —
|
|
95
|
-
`web-fetch`, `ask-agent`, `kb-write`, `image-generate`, etc. The
|
|
96
|
-
background scheduler fires triggered ones hourly / daily / weekly.
|
|
106
|
+
### ⏰ Scheduled, autonomous workflows
|
|
97
107
|
|
|
108
|
+
Compose "recipes" from typed steps — `web-fetch`, `ask-agent`, `kb-write`,
|
|
109
|
+
`image-generate`, `notify`, and more. The in-process scheduler fires triggered
|
|
110
|
+
workflows hourly / daily / weekly, so the agent acts while you're away.
|
|
98
111
|
See [docs/workflows.md](docs/workflows.md).
|
|
99
112
|
|
|
100
|
-
### Installable utilities
|
|
101
|
-
|
|
102
|
-
Mini-apps that bring a UI iframe, server actions, slash commands,
|
|
103
|
-
skills, system-prompt addenda, and workflows. Shipped curated or
|
|
104
|
-
installed from GitHub. Two examples ship by default:
|
|
113
|
+
### 🧩 Installable utilities + the Share Plane
|
|
105
114
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
115
|
+
Utilities are mini-apps that bundle a UI iframe, server actions, slash commands,
|
|
116
|
+
skills, system-prompt addenda, and workflows — shipped curated or installed from
|
|
117
|
+
GitHub. They can **share data with each other** through the **Share Plane**: a
|
|
118
|
+
permission-gated, fully-audited grant system where one utility reads another's
|
|
119
|
+
data (`kb.scoped*`) or calls a verb it exports (`capabilities.invoke`), only
|
|
120
|
+
with your **just-in-time consent** — never blanket access. Two utilities ship by
|
|
121
|
+
default:
|
|
110
122
|
|
|
111
|
-
|
|
123
|
+
- **`learn-anything`** — chat-driven topic learning, materialised into the KB.
|
|
124
|
+
- **`task-board`** — Kanban board with agent-dispatch, git worktrees, pre/post
|
|
125
|
+
hooks, and auto-pickup.
|
|
112
126
|
|
|
113
|
-
|
|
127
|
+
See [docs/utilities.md](docs/utilities.md) and [docs/sharing.md](docs/sharing.md).
|
|
114
128
|
|
|
115
|
-
|
|
116
|
-
on `task/<slug>`, so two parallel agents can work on the same repo
|
|
117
|
-
without stepping on each other. PR mode auto-detects `gh` CLI and
|
|
118
|
-
turns "Merge" into "Open PR".
|
|
129
|
+
### 🌳 Worktree-isolated agent dispatch
|
|
119
130
|
|
|
131
|
+
Code tasks dispatched from the task-board each get an isolated git worktree on
|
|
132
|
+
`task/<slug>`, so parallel agents work the same repo without colliding. PR mode
|
|
133
|
+
auto-detects the `gh` CLI and turns "Merge" into "Open PR".
|
|
120
134
|
See [docs/tasks.md](docs/tasks.md).
|
|
121
135
|
|
|
136
|
+
### 🔐 Permissions + audit trail
|
|
137
|
+
|
|
138
|
+
Every utility runs sandboxed and declares an explicit permission allowlist;
|
|
139
|
+
every host-API call is recorded in an append-only audit log you can inspect.
|
|
140
|
+
Sensitive powers (spawning agents, mutating git) require dedicated, consented
|
|
141
|
+
permission slots. See [docs/host-api.md](docs/host-api.md).
|
|
142
|
+
|
|
122
143
|
## Architecture at a glance
|
|
123
144
|
|
|
124
145
|
One Node process. Inside it:
|
|
@@ -129,10 +150,8 @@ One Node process. Inside it:
|
|
|
129
150
|
- Subprocess agents (Claude Code / Codex) spawned per topic.
|
|
130
151
|
- MCP servers on demand.
|
|
131
152
|
|
|
132
|
-
Two filesystem homes: `REFLEX_HOME` (global state) and
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
For the full layer diagram and component map see
|
|
153
|
+
Two filesystem homes: `REFLEX_HOME` (global state) and `<root>/.reflex/`
|
|
154
|
+
(per-Space). For the full layer diagram see
|
|
136
155
|
[docs/architecture.md](docs/architecture.md).
|
|
137
156
|
|
|
138
157
|
## Documentation
|
|
@@ -146,6 +165,7 @@ For the full layer diagram and component map see
|
|
|
146
165
|
| [docs/kb.md](docs/kb.md) | Knowledge-base entries, kinds, slug rules |
|
|
147
166
|
| [docs/workflows.md](docs/workflows.md) | Step kinds, templates, scheduler, system tasks |
|
|
148
167
|
| [docs/utilities.md](docs/utilities.md) | Extension model, manifest, permissions, iframe + worker |
|
|
168
|
+
| [docs/sharing.md](docs/sharing.md) | Cross-utility data sharing (the Share Plane) |
|
|
149
169
|
| [docs/host-api.md](docs/host-api.md) | Full `reflex.*` method reference |
|
|
150
170
|
| [docs/markers.md](docs/markers.md) | `<<reflex:*>>` protocol reference |
|
|
151
171
|
| [docs/skills.md](docs/skills.md) | Skill files, scopes, marker authoring |
|
|
@@ -163,8 +183,8 @@ reflex chat <dir> # open a chat scoped to dir's KB
|
|
|
163
183
|
|
|
164
184
|
## Data directory
|
|
165
185
|
|
|
166
|
-
Reflex stores its global state (registered roots, settings, MCP config,
|
|
167
|
-
|
|
186
|
+
Reflex stores its global state (registered roots, settings, MCP config, secrets,
|
|
187
|
+
skills, sessions index, …) in one directory:
|
|
168
188
|
|
|
169
189
|
- **Dev (`pnpm dev`)** → `~/.reflex`
|
|
170
190
|
- **Prod (`reflex start` via npm-installed CLI)** → `~/.reflex-agent`
|
|
@@ -175,13 +195,14 @@ Override either by setting `REFLEX_HOME=/your/path` before launching.
|
|
|
175
195
|
|
|
176
196
|
```sh
|
|
177
197
|
pnpm install
|
|
178
|
-
pnpm dev
|
|
179
|
-
pnpm build
|
|
198
|
+
pnpm dev # http://localhost:3211 (Next dev server with HMR)
|
|
199
|
+
pnpm build # produce dist/ + .next/ for `reflex start`
|
|
180
200
|
pnpm typecheck
|
|
201
|
+
pnpm test # vitest
|
|
181
202
|
```
|
|
182
203
|
|
|
183
|
-
PRs welcome. The codebase favours small, focused modules — when in
|
|
184
|
-
|
|
204
|
+
PRs welcome. The codebase favours small, focused modules — when in doubt, look
|
|
205
|
+
at neighbouring files and match the style.
|
|
185
206
|
|
|
186
207
|
## Config (`.reflex/config.json`)
|
|
187
208
|
|
|
@@ -193,9 +214,9 @@ doubt, look at neighbouring files and match the style.
|
|
|
193
214
|
}
|
|
194
215
|
```
|
|
195
216
|
|
|
196
|
-
`watchDebounceMs` defaults to 30 minutes (`1800000`). Lower it for
|
|
197
|
-
|
|
217
|
+
`watchDebounceMs` defaults to 30 minutes (`1800000`). Lower it for tighter
|
|
218
|
+
loops; the enforced minimum is 1 second (anti-thrash).
|
|
198
219
|
|
|
199
220
|
## License
|
|
200
221
|
|
|
201
|
-
MIT.
|
|
222
|
+
[MIT](LICENSE) © the Reflex authors.
|