@xopcai/xopc 0.0.44 → 0.0.45
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 +138 -102
- package/README.zh-CN.md +155 -67
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/{agents-DPpa_rdl.js → agents-Bk2uuFvC.js} +2 -2
- package/dist/gateway/static/root/assets/{agents-DPpa_rdl.js.map → agents-Bk2uuFvC.js.map} +1 -1
- package/dist/gateway/static/root/assets/{apps-page-DyD3FTHu.js → apps-page-CbSr8cvX.js} +2 -2
- package/dist/gateway/static/root/assets/{apps-page-DyD3FTHu.js.map → apps-page-CbSr8cvX.js.map} +1 -1
- package/dist/gateway/static/root/assets/{channels-settings-SMYa0dg9.js → channels-settings-Dn-hIRl1.js} +2 -2
- package/dist/gateway/static/root/assets/{channels-settings-SMYa0dg9.js.map → channels-settings-Dn-hIRl1.js.map} +1 -1
- package/dist/gateway/static/root/assets/{cron-dreaming-jobs-CwHDRLBz.js → cron-dreaming-jobs-D460WnXB.js} +2 -2
- package/dist/gateway/static/root/assets/{cron-dreaming-jobs-CwHDRLBz.js.map → cron-dreaming-jobs-D460WnXB.js.map} +1 -1
- package/dist/gateway/static/root/assets/{cron-page-CFlueTZj.js → cron-page-Df6AyXfn.js} +2 -2
- package/dist/gateway/static/root/assets/{cron-page-CFlueTZj.js.map → cron-page-Df6AyXfn.js.map} +1 -1
- package/dist/gateway/static/root/assets/{dist-CSVG5vdr.js → dist-DN37Fw0E.js} +2 -2
- package/dist/gateway/static/root/assets/{dist-CSVG5vdr.js.map → dist-DN37Fw0E.js.map} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-aOoL_ju3.js → extension-debug-page-CqdKfBv_.js} +2 -2
- package/dist/gateway/static/root/assets/{extension-debug-page-aOoL_ju3.js.map → extension-debug-page-CqdKfBv_.js.map} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-BxTM48B9.js → extension-page-DhxjnfDf.js} +2 -2
- package/dist/gateway/static/root/assets/{extension-page-BxTM48B9.js.map → extension-page-DhxjnfDf.js.map} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-OuCiHlNV.js → extension-settings-page-B3uhrA_f.js} +2 -2
- package/dist/gateway/static/root/assets/{extension-settings-page-OuCiHlNV.js.map → extension-settings-page-B3uhrA_f.js.map} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-config-api-BLvyaYuj.js → heartbeat-config-api-z1kl5_rE.js} +2 -2
- package/dist/gateway/static/root/assets/{heartbeat-config-api-BLvyaYuj.js.map → heartbeat-config-api-z1kl5_rE.js.map} +1 -1
- package/dist/gateway/static/root/assets/{index-K0ZDwzeJ.css → index-B8G4Y9YY.css} +1 -1
- package/dist/gateway/static/root/assets/{index-AWwayu4P.js → index-BUYGk2UT.js} +93 -93
- package/dist/gateway/static/root/assets/{index-AWwayu4P.js.map → index-BUYGk2UT.js.map} +1 -1
- package/dist/gateway/static/root/assets/{logs-page-DlOmjXKS.js → logs-page-Z9KRHWeO.js} +2 -2
- package/dist/gateway/static/root/assets/{logs-page-DlOmjXKS.js.map → logs-page-Z9KRHWeO.js.map} +1 -1
- package/dist/gateway/static/root/assets/{sessions-page-BYobQq7F.js → sessions-page-TlMYZxuv.js} +2 -2
- package/dist/gateway/static/root/assets/{sessions-page-BYobQq7F.js.map → sessions-page-TlMYZxuv.js.map} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-CEp0JJcg.js → settings-page-X8vVcB8e.js} +2 -2
- package/dist/gateway/static/root/assets/{settings-page-CEp0JJcg.js.map → settings-page-X8vVcB8e.js.map} +1 -1
- package/dist/gateway/static/root/assets/{skills-page-D9e20h42.js → skills-page-B-tO9-I7.js} +2 -2
- package/dist/gateway/static/root/assets/{skills-page-D9e20h42.js.map → skills-page-B-tO9-I7.js.map} +1 -1
- package/dist/gateway/static/root/assets/{use-image-provider-credentials-BmC6x4fR.js → use-image-provider-credentials-DsYECmye.js} +2 -2
- package/dist/gateway/static/root/assets/{use-image-provider-credentials-BmC6x4fR.js.map → use-image-provider-credentials-DsYECmye.js.map} +1 -1
- package/dist/gateway/static/root/index.html +2 -2
- package/dist/package.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -7,13 +7,13 @@
|
|
|
7
7
|
|
|
8
8
|
<p align="center">
|
|
9
9
|
<strong>The OPC workstation that grows with you.</strong><br />
|
|
10
|
-
|
|
10
|
+
A lightweight <strong>personal AI assistant</strong> for <strong>one-person companies</strong> — run it locally, bring your own keys, and extend it without forking core.
|
|
11
11
|
</p>
|
|
12
12
|
|
|
13
13
|
<p align="center">
|
|
14
14
|
<a href="https://github.com/xopcai/xopc"><img src="https://img.shields.io/badge/GitHub-xopcai%2Fxopc-181717?style=for-the-badge&logo=github" alt="GitHub"></a>
|
|
15
15
|
<a href="https://xopcai.github.io/xopc/"><img src="https://img.shields.io/badge/Docs-Documentation-228B22?style=for-the-badge" alt="Documentation"></a>
|
|
16
|
-
<a href="#quick-start
|
|
16
|
+
<a href="#quick-start"><img src="https://img.shields.io/badge/Quick_Start-CLI-blue?style=for-the-badge" alt="Quick Start"></a>
|
|
17
17
|
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-yellow?style=for-the-badge" alt="License"></a>
|
|
18
18
|
</p>
|
|
19
19
|
|
|
@@ -32,185 +32,187 @@
|
|
|
32
32
|
<a href="https://xopcai.github.io/xopc/cli">CLI</a>
|
|
33
33
|
</p>
|
|
34
34
|
|
|
35
|
-
**CLI**, **HTTP/WebSocket gateway** with a **React** console,
|
|
35
|
+
**xopc** is a self-hosted agent stack: **CLI**, full-screen **terminal UI (TUI)**, **HTTP/WebSocket gateway** with a **React** console, optional **Electron** desktop (**macOS**, **Windows**, **Linux**), and bundled **channel** plugins (Telegram, WeChat, Feishu/Lark, DingTalk). LLMs are wired through **[@earendil-works/pi-ai](https://github.com/earendil-works/pi-mono)** (20+ providers). Add **extensions** (tools, channels, providers) and **SKILL.md** skills — plus **gateway UI** extensions via the extension UI SDK.
|
|
36
36
|
|
|
37
37
|
---
|
|
38
38
|
|
|
39
|
-
##
|
|
39
|
+
## Why xopc
|
|
40
40
|
|
|
41
41
|
| | |
|
|
42
42
|
| --- | --- |
|
|
43
|
-
| **
|
|
44
|
-
| **
|
|
45
|
-
| **
|
|
46
|
-
| **Channels** | **Telegram** (
|
|
47
|
-
| **
|
|
48
|
-
| **
|
|
49
|
-
| **Workspace tools** | File search/read/edit, web search, browser tools (optional), progress feedback for long tasks. |
|
|
43
|
+
| **Local-first** | You run the process; data stays on your machine unless you configure outbound channels or tools. No mandatory vendor cloud for the runtime. |
|
|
44
|
+
| **BYOK** | API keys and OAuth profiles live in your config (`~/.xopc/xopc.json`) and environment — **DeepSeek** (recommended), OpenAI, Anthropic, Google, **Ollama / LM Studio / vLLM**, Bedrock, Azure, OpenRouter, gateways, and more. |
|
|
45
|
+
| **Surfaces** | **`xopc tui`** (rich terminal UI), **`xopc agent`** (TTY chat), **gateway + browser UI**, **Electron** app with the same console. |
|
|
46
|
+
| **Channels** | **Telegram**, **WeChat (Weixin)**, **Feishu/Lark**, **DingTalk** (bundled) + **web** chat in the gateway; DM/group **policies** (pairing, allowlist, …). |
|
|
47
|
+
| **Media** | **Images** (vision + generation where configured) and **voice** (STT/TTS) — e.g. Telegram and gateway paths; see docs. |
|
|
48
|
+
| **Extensible** | **Backend**: `ChannelPlugin`, tools, providers, cron. **UI**: customize the gateway console with **`@xopcai/xopc/extension-ui-sdk`**. |
|
|
50
49
|
|
|
51
50
|
---
|
|
52
51
|
|
|
53
|
-
##
|
|
52
|
+
## Install
|
|
54
53
|
|
|
55
|
-
**
|
|
54
|
+
**Requirements:** Node.js **≥ 22** (for the CLI and gateway). **pnpm** is recommended when working from a git clone.
|
|
56
55
|
|
|
57
56
|
```bash
|
|
58
57
|
npm install -g @xopcai/xopc
|
|
59
58
|
# or: pnpm add -g @xopcai/xopc
|
|
60
59
|
```
|
|
61
60
|
|
|
62
|
-
**
|
|
61
|
+
**First run:** interactive onboarding (models, keys, channels).
|
|
63
62
|
|
|
64
63
|
```bash
|
|
65
64
|
xopc onboard
|
|
66
|
-
#
|
|
65
|
+
# faster path: xopc onboard --quick
|
|
67
66
|
```
|
|
68
67
|
|
|
69
|
-
Then chat in the terminal or start the gateway for the Web UI and channel bots.
|
|
70
|
-
|
|
71
68
|
---
|
|
72
69
|
|
|
73
|
-
<a id="quick-start
|
|
70
|
+
<a id="quick-start"></a>
|
|
74
71
|
|
|
75
|
-
## Quick start
|
|
72
|
+
## Quick start
|
|
76
73
|
|
|
77
74
|
```bash
|
|
78
|
-
#
|
|
75
|
+
# Full-screen terminal UI (embedded agent; no gateway required)
|
|
76
|
+
xopc tui --local
|
|
77
|
+
|
|
78
|
+
# Classic interactive CLI chat
|
|
79
79
|
xopc agent -i
|
|
80
80
|
|
|
81
|
-
# One message
|
|
81
|
+
# One-shot message
|
|
82
82
|
xopc agent -m "Summarize the last 5 commits"
|
|
83
83
|
|
|
84
|
-
# Gateway
|
|
84
|
+
# Gateway: REST/SSE + static web console (URL from logs or gateway config)
|
|
85
85
|
xopc gateway
|
|
86
86
|
|
|
87
|
-
#
|
|
88
|
-
|
|
87
|
+
# Same gateway, detached (prints PID/URL; stop with `xopc gateway stop`)
|
|
88
|
+
xopc gateway --background
|
|
89
89
|
```
|
|
90
90
|
|
|
91
|
-
From source
|
|
91
|
+
**From source (development):**
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
git clone https://github.com/xopcai/xopc.git && cd xopc
|
|
95
|
+
pnpm install && pnpm run dev -- agent -i # no build needed for dev CLI
|
|
96
|
+
pnpm run build # Node + web console → dist/
|
|
97
|
+
```
|
|
92
98
|
|
|
93
99
|
---
|
|
94
100
|
|
|
95
|
-
|
|
101
|
+
<a id="electron-desktop"></a>
|
|
96
102
|
|
|
97
|
-
|
|
98
|
-
| --- | --- |
|
|
99
|
-
| Chat in the terminal | `xopc agent -i` or `xopc agent -m "…"` |
|
|
100
|
-
| Open the Web console | Run `xopc gateway`, open the URL from logs or your `gateway` config |
|
|
101
|
-
| Use Telegram / WeChat | Configure `channels.telegram` / `channels.weixin` in `~/.xopc/xopc.json`, run gateway; WeChat: `xopc channels login --channel weixin` on the gateway host |
|
|
102
|
-
| Onboarding / model setup | `xopc onboard` |
|
|
103
|
-
| Scheduled jobs | Enable `cron` in config; see [docs](https://xopcai.github.io/xopc/) |
|
|
103
|
+
## Electron desktop app
|
|
104
104
|
|
|
105
|
-
|
|
105
|
+
### Install from GitHub Releases
|
|
106
106
|
|
|
107
|
-
|
|
107
|
+
1. Open **[GitHub Releases](https://github.com/xopcai/xopc/releases)** for this repo.
|
|
108
|
+
2. Pick the asset for your OS (typical names: **`.dmg`** / **`.zip`** on macOS, **`.exe`** on Windows, **`.AppImage`** / **`.deb`** on Linux).
|
|
109
|
+
3. Install or run it like any desktop application. On macOS, first launch may ask for **microphone** access if you use voice in chat.
|
|
108
110
|
|
|
109
|
-
|
|
111
|
+
If your platform has no published build yet, use **`xopc gateway`** + npm CLI, or build from source below.
|
|
110
112
|
|
|
111
|
-
|
|
113
|
+
### Build from source (developers)
|
|
112
114
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
+
```bash
|
|
116
|
+
pnpm install
|
|
117
|
+
pnpm run electron:build # artifacts under dist/release/
|
|
118
|
+
```
|
|
115
119
|
|
|
116
120
|
---
|
|
117
121
|
|
|
118
|
-
##
|
|
122
|
+
## Chat surfaces (pick one)
|
|
119
123
|
|
|
120
|
-
|
|
|
121
|
-
| --- | --- |
|
|
122
|
-
|
|
|
123
|
-
|
|
|
124
|
-
|
|
|
125
|
-
| [
|
|
126
|
-
| [Extensions](https://xopcai.github.io/xopc/extensions) | Extension system |
|
|
127
|
-
| [Tools](https://xopcai.github.io/xopc/tools) | Built-in tools |
|
|
128
|
-
| [Skills](https://xopcai.github.io/xopc/skills) | Skills and SKILL.md |
|
|
129
|
-
| [Architecture](https://xopcai.github.io/xopc/architecture) | How pieces fit together |
|
|
124
|
+
| Surface | Command / how | Best for |
|
|
125
|
+
| --- | --- | --- |
|
|
126
|
+
| **TUI** | `xopc tui`, `xopc tui --local`, or `xopc tui --url …` | Full-screen terminal UX, optional remote gateway |
|
|
127
|
+
| **CLI** | `xopc agent -i` / `xopc agent -m "…"` | Scripting and minimal TTY |
|
|
128
|
+
| **Web** | `xopc gateway` (foreground) or `xopc gateway --background`, then open the console URL | Sharing one gateway, browser chat, settings |
|
|
129
|
+
| **Electron** | **[Install from Releases](#electron-desktop)** or build from source | Desktop app (macOS / Windows / Linux) |
|
|
130
130
|
|
|
131
131
|
---
|
|
132
132
|
|
|
133
|
-
##
|
|
133
|
+
## Bundled channels (config keys)
|
|
134
134
|
|
|
135
|
-
|
|
135
|
+
Enable and configure under **`channels.*`** in **`~/.xopc/xopc.json`** (override path with `XOPC_CONFIG` / `XOPC_CONFIG_PATH`). The gateway must run for IM bots; WeChat needs login on the gateway host.
|
|
136
136
|
|
|
137
|
-
| Channel | Notes |
|
|
138
|
-
| --- | --- |
|
|
139
|
-
| Telegram | Multi-account, streaming
|
|
140
|
-
| WeChat (Weixin) | QR login on
|
|
141
|
-
|
|
|
137
|
+
| Channel | Config section | Notes |
|
|
138
|
+
| --- | --- | --- |
|
|
139
|
+
| **Telegram** | `channels.telegram` | Multi-account, streaming, voice, documents; DM/group policies |
|
|
140
|
+
| **WeChat (Weixin)** | `channels.weixin` | QR login on gateway host; DM/group policies |
|
|
141
|
+
| **Feishu / Lark** | `channels.feishu` | Bot / webhook style setup per docs |
|
|
142
|
+
| **DingTalk** | `channels.dingtalk` | Stream mode; app credentials per docs |
|
|
143
|
+
| **Web** | *(gateway)* | React SPA served with the gateway — not a separate IM |
|
|
142
144
|
|
|
143
|
-
|
|
145
|
+
Full field reference and security defaults: **[Channels](https://xopcai.github.io/xopc/channels)** and **[Configuration](https://xopcai.github.io/xopc/configuration)**.
|
|
144
146
|
|
|
145
147
|
---
|
|
146
148
|
|
|
147
|
-
##
|
|
149
|
+
## Local-first & BYOK
|
|
148
150
|
|
|
149
|
-
|
|
151
|
+
- **You control credentials:** set `providers.*` in config and/or provider env vars (see [Models](https://xopcai.github.io/xopc/models)).
|
|
152
|
+
- **On-prem inference:** point the default model at **Ollama**, **LM Studio**, **vLLM**, or other OpenAI-compatible bases — no cloud LLM required.
|
|
153
|
+
- **Optional tools** (e.g. browser automation) are **off until you enable** them; install Playwright Chromium if you use browser tools.
|
|
150
154
|
|
|
151
155
|
---
|
|
152
156
|
|
|
153
|
-
##
|
|
157
|
+
## CLI vs gateway
|
|
154
158
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
```
|
|
159
|
+
| Goal | Command / flow |
|
|
160
|
+
| --- | --- |
|
|
161
|
+
| Terminal chat | `xopc tui --local` or `xopc agent -i` |
|
|
162
|
+
| Web console | `xopc gateway` → open the URL from logs / config |
|
|
163
|
+
| Gateway in background | `xopc gateway --background` — then `xopc gateway status`, `xopc gateway stop`, `xopc gateway restart`, `xopc gateway logs` as needed |
|
|
164
|
+
| Telegram / WeChat / Feishu / DingTalk | Configure `channels.*`, run gateway; WeChat: `xopc channels login --channel weixin` on the gateway host |
|
|
165
|
+
| Onboarding | `xopc onboard` |
|
|
166
|
+
| Schedules | Enable `cron` in config |
|
|
164
167
|
|
|
165
|
-
|
|
168
|
+
CLI reference: **[CLI](https://xopcai.github.io/xopc/cli)**.
|
|
166
169
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
├── config/ # Schema and loader
|
|
173
|
-
├── cron/ # Scheduled tasks
|
|
174
|
-
├── gateway/ # HTTP/WebSocket server
|
|
175
|
-
├── providers/ # Model registry
|
|
176
|
-
├── session/ # Sessions
|
|
177
|
-
└── …
|
|
178
|
-
web/ # Gateway console (React + Vite)
|
|
179
|
-
```
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## Security
|
|
173
|
+
|
|
174
|
+
Treat inbound chat messages as **untrusted input**. Prefer **pairing** or **allowlist** for DMs until you understand exposure. Bind the gateway appropriately and keep gateway tokens secret — see **[Channels](https://xopcai.github.io/xopc/channels)**.
|
|
180
175
|
|
|
181
176
|
---
|
|
182
177
|
|
|
183
|
-
##
|
|
178
|
+
## Documentation
|
|
184
179
|
|
|
185
|
-
|
|
180
|
+
| Guide | Description |
|
|
181
|
+
| --- | --- |
|
|
182
|
+
| [Getting started](https://xopcai.github.io/xopc/getting-started) | Install, onboard, first chat |
|
|
183
|
+
| [Configuration](https://xopcai.github.io/xopc/configuration) | `xopc.json` reference |
|
|
184
|
+
| [CLI](https://xopcai.github.io/xopc/cli) | Commands and flags |
|
|
185
|
+
| [Channels](https://xopcai.github.io/xopc/channels) | All bundled channels |
|
|
186
|
+
| [Extensions](https://xopcai.github.io/xopc/extensions) | Extension system |
|
|
187
|
+
| [Tools](https://xopcai.github.io/xopc/tools) | Built-in tools |
|
|
188
|
+
| [Skills](https://xopcai.github.io/xopc/skills) | SKILL.md skills |
|
|
189
|
+
| [Voice](https://xopcai.github.io/xopc/voice) | STT/TTS |
|
|
190
|
+
| [Architecture](https://xopcai.github.io/xopc/architecture) | How pieces fit together |
|
|
186
191
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
```
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## LLM providers (overview)
|
|
191
195
|
|
|
192
|
-
[
|
|
196
|
+
**DeepSeek** (recommended), OpenAI, Anthropic, Google, Groq, OpenRouter, Mistral, xAI, Bedrock, Azure, Vertex, Vercel AI Gateway, OAuth flows (e.g. Copilot/Codex), and local stacks via pi-ai. Details: **[Models](https://xopcai.github.io/xopc/models)**.
|
|
193
197
|
|
|
194
|
-
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## Extensions & skills
|
|
195
201
|
|
|
196
202
|
```bash
|
|
203
|
+
xopc extension install xopc-extension-weather
|
|
204
|
+
xopc extension create my-extension --kind tool
|
|
197
205
|
xopc skills list
|
|
198
206
|
xopc skills install <name>
|
|
199
207
|
```
|
|
200
208
|
|
|
201
|
-
[Skills
|
|
202
|
-
|
|
203
|
-
### Voice (e.g. Telegram)
|
|
204
|
-
|
|
205
|
-
Configure `stt` / `tts` in your main config (`xopc.json` by default). [Voice docs](https://xopcai.github.io/xopc/voice).
|
|
209
|
+
Backend extensions can ship **tools**, **channels**, and **model bridges**. Gateway **UI** extensions use **`@xopcai/xopc/extension-ui-sdk`** (see `packages/extension-ui-sdk/`). Guides: **[Extensions](https://xopcai.github.io/xopc/extensions)**, **[Skills](https://xopcai.github.io/xopc/skills)**.
|
|
206
210
|
|
|
207
211
|
---
|
|
208
212
|
|
|
209
|
-
## Configuration
|
|
210
|
-
|
|
211
|
-
Default config path: **`~/.xopc/xopc.json`** (override with `XOPC_CONFIG`).
|
|
213
|
+
## Configuration snippet
|
|
212
214
|
|
|
213
|
-
|
|
215
|
+
Default path: **`~/.xopc/xopc.json`**.
|
|
214
216
|
|
|
215
217
|
```json
|
|
216
218
|
{
|
|
@@ -236,7 +238,40 @@ Minimal example:
|
|
|
236
238
|
}
|
|
237
239
|
```
|
|
238
240
|
|
|
239
|
-
[
|
|
241
|
+
Add **`channels.weixin`**, **`channels.feishu`**, **`channels.dingtalk`** as needed — see the **[configuration](https://xopcai.github.io/xopc/configuration)** and **[channels](https://xopcai.github.io/xopc/channels)** docs for full schemas.
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
## Repository layout
|
|
246
|
+
|
|
247
|
+
```
|
|
248
|
+
src/
|
|
249
|
+
├── agent/ # Agent service, tools, memory, prompts
|
|
250
|
+
├── channels/ # Channel plugin host
|
|
251
|
+
├── cli/ # Commands
|
|
252
|
+
├── config/ # Schema and loader
|
|
253
|
+
├── cron/ # Scheduled tasks
|
|
254
|
+
├── gateway/ # HTTP/WebSocket server
|
|
255
|
+
├── providers/ # Model registry
|
|
256
|
+
├── session/ # Sessions
|
|
257
|
+
├── tui/ # Terminal UI (pi-tui)
|
|
258
|
+
└── …
|
|
259
|
+
web/ # Gateway console (React + Vite)
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
Contributor notes: **[AGENTS.md](./AGENTS.md)**.
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
## Development
|
|
267
|
+
|
|
268
|
+
```bash
|
|
269
|
+
pnpm install
|
|
270
|
+
pnpm run dev # CLI via tsx
|
|
271
|
+
pnpm run build # Node + web → dist
|
|
272
|
+
pnpm test
|
|
273
|
+
pnpm run lint
|
|
274
|
+
```
|
|
240
275
|
|
|
241
276
|
---
|
|
242
277
|
|
|
@@ -244,6 +279,7 @@ Minimal example:
|
|
|
244
279
|
|
|
245
280
|
- LLM layer: [@earendil-works/pi-ai](https://github.com/earendil-works/pi-mono)
|
|
246
281
|
- Agent runtime: [@earendil-works/pi-agent-core](https://github.com/earendil-works/pi-mono)
|
|
282
|
+
- Inspired by [openclaw/openclaw](https://github.com/openclaw/openclaw) and [NousResearch/hermes-agent](https://github.com/NousResearch/hermes-agent)
|
|
247
283
|
|
|
248
284
|
---
|
|
249
285
|
|