zigmini 0.8.0-beta.3 → 0.8.0-beta.5
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.ko.md +267 -0
- package/README.md +155 -129
- package/assets/agent/gateway-rules.md +1 -0
- package/assets/android/zigmini.apk +0 -0
- package/assets/android/zigmini.apk.json +3 -3
- package/assets/build.json +1 -1
- package/docs/manual.ko.md +382 -0
- package/docs/manual.md +382 -0
- package/host/omo-bridge/continuity-control.ts +5 -26
- package/host/omo-check/patches/omo-5.1.35-gateway-port.manifest.json +12 -4
- package/host/omo-check/patches/omo-5.1.35-image-replay.patch +45 -0
- package/host/omo-check/patches/omo-5.1.35-question-capability.patch +65 -0
- package/package.json +5 -2
- package/src/cli/doctor.ts +5 -5
- package/src/cli/main.ts +6 -1
- package/src/cli/setup-hint.ts +25 -0
- package/src/engine/schema-guard.ts +1 -1
- package/src/hub.ts +203 -52
- package/src/main.ts +7 -8
- package/src/manual.ts +31 -0
- package/src/omo/generations.ts +28 -2
- package/src/omo-check.ts +2 -2
- package/src/transcript.ts +1 -1
- package/src/update/handoff.ts +1 -1
- package/src/usage.ts +1 -1
- package/src/version.ts +6 -6
- package/web/app.js +123 -25
- package/web/cardbind.d.ts +3 -0
- package/web/cardbind.js +15 -0
- package/web/devlog.js +2 -2
- package/web/gc.js +1 -1
- package/web/index.html +15 -3
- package/web/manual.d.ts +7 -0
- package/web/manual.js +29 -0
- package/web/style.css +9 -0
- package/web/tooltip.d.ts +22 -0
- package/web/tooltip.js +117 -0
package/README.md
CHANGED
|
@@ -1,241 +1,267 @@
|
|
|
1
|
+
English | [한국어](README.ko.md)
|
|
2
|
+
|
|
1
3
|
# zigmini
|
|
2
4
|
|
|
3
|
-
zigmini
|
|
5
|
+
zigmini: a personal AI agent gateway that runs on a Mac. You talk with the agent, give it work and get notifications from the web screen on the Mac and from an Android app. launchd starts the gateway and the bridge automatically when you log in to macOS. Docker is not necessary.
|
|
4
6
|
|
|
5
|
-
##
|
|
7
|
+
## Requirements
|
|
6
8
|
|
|
7
|
-
- Apple Silicon(M
|
|
8
|
-
- [Bun](https://bun.sh) 1.4.0
|
|
9
|
-
-
|
|
10
|
-
- (
|
|
11
|
-
- (
|
|
9
|
+
- A Mac with Apple Silicon (M chip) and macOS. Intel Macs, Linux and Windows are not supported.
|
|
10
|
+
- [Bun](https://bun.sh) 1.4.0 or later. Bun is the only thing the installation needs. Node.js and npm are not necessary.
|
|
11
|
+
- A model account for the agent (for example a Claude or ChatGPT subscription). You log in after the installation.
|
|
12
|
+
- (Optional) An Android phone. The gateway serves the app itself.
|
|
13
|
+
- (Optional) To use the phone away from home: Tailscale, or your own domain with an HTTPS reverse proxy.
|
|
12
14
|
|
|
13
|
-
##
|
|
15
|
+
## Permission notice
|
|
14
16
|
|
|
15
|
-
|
|
17
|
+
The gateway runs the agent with the permission preset `full-access`. The agent does not ask for approval each time it uses a tool. Shell commands run without a sandbox, with the permissions of this macOS user account. Requests that a registered phone app sends also run with the same permissions.
|
|
16
18
|
|
|
17
|
-
`zigmini setup
|
|
19
|
+
`zigmini setup` shows the full permission notice before the installation. It installs only when you type `동의` ("I agree") exactly. Any other input or Enter means "I do not agree", and then it installs nothing. There is no option to skip the consent. When the notice changes, the gateway does not start until you agree again. Then run `zigmini consent` in a terminal on the Mac.
|
|
18
20
|
|
|
19
|
-
##
|
|
21
|
+
## Install
|
|
20
22
|
|
|
21
|
-
1. Bun
|
|
23
|
+
1. Check the Bun version. The package needs Bun `1.4.0` or later.
|
|
22
24
|
```sh
|
|
23
25
|
bun --version
|
|
24
26
|
```
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
-
2. Bun
|
|
27
|
+
- If the result is `1.4.0` or later (for example `1.4.2`), go to step 8.
|
|
28
|
+
- If the result is lower than `1.4.0` (for example `1.3.5`), go to step 2.
|
|
29
|
+
- If the result is `zsh: command not found: bun`, go to step 4.
|
|
30
|
+
2. Find where Bun is installed.
|
|
29
31
|
```sh
|
|
30
32
|
which bun
|
|
31
33
|
```
|
|
32
|
-
-
|
|
33
|
-
-
|
|
34
|
-
-
|
|
35
|
-
3.
|
|
36
|
-
-
|
|
37
|
-
-
|
|
38
|
-
4. (1
|
|
34
|
+
- If the result is `/opt/homebrew/bin/bun`, Homebrew installed Bun. Run `brew upgrade bun`. Then go to step 3.
|
|
35
|
+
- If the result ends with `/.bun/bin/bun`, the official install script installed Bun. Run `bun upgrade`. Then go to step 3.
|
|
36
|
+
- If the result is neither of the two paths, go to step 4. Step 4 installs a new Bun in `~/.bun/bin` with the official script, and step 6 puts that folder at the front of PATH.
|
|
37
|
+
3. Run the command of step 1 again.
|
|
38
|
+
- If the result is `1.4.0` or later, go to step 8.
|
|
39
|
+
- If the result is still lower than `1.4.0`, go to step 4.
|
|
40
|
+
4. (Only when the result of step 1 is `zsh: command not found: bun`, or when step 2 or 3 sent you here) Install Bun with the official install script.
|
|
39
41
|
```sh
|
|
40
42
|
curl -fsSL https://bun.sh/install | bash
|
|
41
43
|
```
|
|
42
|
-
-
|
|
43
|
-
- `~/.zshrc`
|
|
44
|
-
- `~/.zshrc`
|
|
45
|
-
5. `~/.zshrc`
|
|
44
|
+
- This script installs Bun in `~/.bun/bin/bun`.
|
|
45
|
+
- If the file `~/.zshrc` exists, the script adds a PATH line at the end of that file and prints `Added "~/.bun/bin" to $PATH in "~/.zshrc"`.
|
|
46
|
+
- If the file `~/.zshrc` does not exist, the script changes no file and prints `Manually add the directory to ~/.zshrc (or similar):`. Then new terminal windows also do not find `bun`.
|
|
47
|
+
5. Check whether the file `~/.zshrc` exists.
|
|
46
48
|
```sh
|
|
47
49
|
ls ~/.zshrc
|
|
48
50
|
```
|
|
49
|
-
-
|
|
50
|
-
-
|
|
51
|
+
- If the result is one line with a path that ends with `/.zshrc`, the script of step 4 added the PATH line. Go to step 6.
|
|
52
|
+
- If the result ends with `No such file or directory`, write the PATH line with this command. The command creates `~/.zshrc` and writes the same lines that the script writes. After this, new terminal windows find `bun`. Then go to step 6.
|
|
51
53
|
```sh
|
|
52
54
|
printf '\n# bun\nexport BUN_INSTALL="$HOME/.bun"\nexport PATH="$BUN_INSTALL/bin:$PATH"\n' >> ~/.zshrc
|
|
53
55
|
```
|
|
54
|
-
6.
|
|
56
|
+
6. Put the Bun folder in PATH in the current terminal window. This command applies only to the current terminal window and changes no file.
|
|
55
57
|
```sh
|
|
56
58
|
export PATH="$HOME/.bun/bin:$PATH"
|
|
57
59
|
```
|
|
58
|
-
7.
|
|
59
|
-
-
|
|
60
|
-
-
|
|
61
|
-
8. zigmini
|
|
60
|
+
7. Run the command of step 1 again.
|
|
61
|
+
- If the result is `1.4.0` or later, go to step 8.
|
|
62
|
+
- If the result is an error, stop the installation. Look for lines that start with `error:` in the output of the script of step 4.
|
|
63
|
+
8. Install zigmini. There is no install script (postinstall). This step only downloads the files.
|
|
62
64
|
```sh
|
|
63
65
|
bun add -g zigmini
|
|
64
66
|
```
|
|
65
|
-
|
|
67
|
+
- Until `zigmini setup` (step 15) has finished, the other commands print `` 아직 설치를 마치지 않았습니다. 먼저 `zigmini setup`을 실행하세요. `` (the installation is not finished yet; run `zigmini setup` first) on the error output. `--version`, `--help`, `setup`, `consent`, `migrate` and `migrate-run` do not print it. `zigmini --help` also says to run setup first.
|
|
68
|
+
9. Check that the shell finds the `zigmini` command.
|
|
66
69
|
```sh
|
|
67
70
|
zigmini --version
|
|
68
71
|
```
|
|
69
|
-
-
|
|
70
|
-
-
|
|
71
|
-
10.
|
|
72
|
+
- If the result is one version line that starts with a number (for example `0.8.0-beta.3`), go to step 15.
|
|
73
|
+
- If the result is `zsh: command not found: zigmini`, the Bun global command folder is not in PATH. Go to step 10.
|
|
74
|
+
10. Put the Bun global command folder in PATH in the current terminal window. This command applies only to the current terminal window and changes no file.
|
|
72
75
|
```sh
|
|
73
76
|
export PATH="$(bun pm bin -g):$PATH"
|
|
74
77
|
```
|
|
75
|
-
11. `~/.zshrc`
|
|
78
|
+
11. Check whether the file `~/.zshrc` exists.
|
|
76
79
|
```sh
|
|
77
80
|
ls ~/.zshrc
|
|
78
81
|
```
|
|
79
|
-
-
|
|
80
|
-
-
|
|
81
|
-
12. `~/.zshrc
|
|
82
|
+
- If the result is one line with a path that ends with `/.zshrc`, go to step 12.
|
|
83
|
+
- If the result ends with `No such file or directory`, go to step 13.
|
|
84
|
+
12. Check whether `~/.zshrc` already contains the Bun global command folder.
|
|
82
85
|
```sh
|
|
83
86
|
grep -cF "$(bun pm bin -g)" ~/.zshrc
|
|
84
87
|
```
|
|
85
|
-
-
|
|
86
|
-
-
|
|
87
|
-
13. `~/.zshrc`
|
|
88
|
+
- If the result is `0`, go to step 13.
|
|
89
|
+
- If the result is `1` or more, the folder is already in `~/.zshrc`. New terminal windows find it. Go to step 14.
|
|
90
|
+
13. Write a line at the end of `~/.zshrc` that puts the Bun global command folder in PATH. If the file does not exist, this command creates it. The line contains the folder path that `bun pm bin -g` prints. After this, new terminal windows find the folder.
|
|
88
91
|
```sh
|
|
89
92
|
printf '\nexport PATH="%s:$PATH"\n' "$(bun pm bin -g)" >> ~/.zshrc
|
|
90
93
|
```
|
|
91
|
-
14.
|
|
92
|
-
-
|
|
93
|
-
-
|
|
94
|
-
15.
|
|
94
|
+
14. Run the command of step 9 again.
|
|
95
|
+
- If the result is one version line that starts with a number, go to step 15.
|
|
96
|
+
- If the result is still `zsh: command not found: zigmini`, stop the installation. Run `ls "$(bun pm bin -g)"`. If the result does not contain `zigmini`, look for lines that start with `error:` in the output of `bun add -g zigmini` in step 8.
|
|
97
|
+
15. Finish the installation.
|
|
95
98
|
```sh
|
|
96
99
|
zigmini setup
|
|
97
100
|
```
|
|
98
101
|
|
|
99
|
-
`zigmini setup
|
|
102
|
+
`zigmini setup` does these steps in this order. You can run it again. It keeps the steps that are already done.
|
|
100
103
|
|
|
101
|
-
1.
|
|
102
|
-
2.
|
|
103
|
-
3.
|
|
104
|
-
4.
|
|
105
|
-
5. Notion
|
|
106
|
-
6.
|
|
107
|
-
7.
|
|
108
|
-
8.
|
|
104
|
+
1. It shows the permission notice and asks for your consent.
|
|
105
|
+
2. It creates the home folder `~/.zigmini`. If the rules file of this installation (`~/.zigmini/rules.md`) does not exist, it creates an empty one. See "Agent rules" below.
|
|
106
|
+
3. It downloads the pinned version of the agent engine (omo-ai), checks its hash and patches it. The package decides the version (`src/engine/compat.json`; engine 5.1.35 at the time of writing). It shows a summary of the engine license and asks for your consent (`y`).
|
|
107
|
+
4. It checks the agent folder and the login state of the model account. The default agent folder is `~/.omo/agent`. Other OMO installations that use the same folder share the login data. If you are not logged in, it prints a login command. Run that command, then type `/login`.
|
|
108
|
+
5. It asks for a Notion token (optional). If you leave it empty, the schedule feature is off.
|
|
109
|
+
6. It asks for the external access method. See "External access" below.
|
|
110
|
+
7. It writes the service settings (`~/.zigmini/config.env`, permission preset `full-access`) and leaves voice off.
|
|
111
|
+
8. It registers the gateway and the bridge with launchd and starts them. It waits until the gateway is ready (up to 600 seconds).
|
|
112
|
+
9. If you picked your own domain, it checks that the domain reaches the app port.
|
|
113
|
+
10. It draws the app download QR code and the phone registration QR code in the terminal.
|
|
109
114
|
|
|
110
|
-
|
|
115
|
+
When the installation is done, open http://127.0.0.1:8700 in a browser on the Mac.
|
|
111
116
|
|
|
112
|
-
|
|
117
|
+
To install without questions, use the options. You must still type the permission consent.
|
|
113
118
|
```sh
|
|
114
119
|
zigmini setup --non-interactive --accept-license --access lan
|
|
115
120
|
```
|
|
116
121
|
|
|
117
|
-
|
|
|
122
|
+
| Option | Meaning |
|
|
118
123
|
|---|---|
|
|
119
|
-
| `--non-interactive` |
|
|
120
|
-
| `--accept-license` |
|
|
121
|
-
| `--agent-dir <경로>` |
|
|
122
|
-
| `--notion-token-file <경로>` | Notion
|
|
123
|
-
| `--access <tailscale\|lan\|domain>`, `--domain <https://주소>` |
|
|
124
|
-
| `--engine-only` |
|
|
124
|
+
| `--non-interactive` | Asks nothing |
|
|
125
|
+
| `--accept-license` | Agrees to the engine license |
|
|
126
|
+
| `--agent-dir <경로>` | A dedicated agent folder to use instead of the shared `~/.omo/agent` (`<경로>`: path) |
|
|
127
|
+
| `--notion-token-file <경로>` | The Notion token file (`<경로>`: path) |
|
|
128
|
+
| `--access <tailscale\|lan\|domain>`, `--domain <https://주소>` | The external access method (`<https://주소>`: an https address) |
|
|
129
|
+
| `--engine-only` | Runs only the engine installation step |
|
|
125
130
|
|
|
126
|
-
##
|
|
131
|
+
## External access
|
|
127
132
|
|
|
128
|
-
|
|
133
|
+
The web screen opens only inside the Mac (`127.0.0.1`). The phone app connects to a separate app port (default 8701). Pick one of three ways to reach the app port. The phone registration QR code contains the address you pick.
|
|
129
134
|
|
|
130
|
-
|
|
|
135
|
+
| Method | Option | Where the phone works | Preparation |
|
|
131
136
|
|---|---|---|---|
|
|
132
|
-
| Tailscale | `--access tailscale` |
|
|
133
|
-
|
|
|
134
|
-
|
|
|
137
|
+
| Tailscale | `--access tailscale` | Anywhere | Install Tailscale on the Mac and the phone and log in with the same account. Turn on MagicDNS in the Tailscale admin console |
|
|
138
|
+
| Home Wi-Fi | `--access lan` | On the same network as the Mac | None. It uses the private IP address of the Mac |
|
|
139
|
+
| Your own domain | `--access domain --domain https://<도메인>` | Anywhere | An HTTPS reverse proxy that forwards to the app port. Only `https://` addresses are accepted (`<도메인>`: your domain) |
|
|
140
|
+
|
|
141
|
+
To change it later, run `zigmini setup --access <방식>` again (`<방식>`: method), or change it in "외부 접속" (External access) in the web screen settings. If you pick nothing, the phone cannot connect.
|
|
135
142
|
|
|
136
|
-
|
|
143
|
+
## Phone registration
|
|
137
144
|
|
|
138
|
-
|
|
145
|
+
1. On the phone, scan the app download QR code, download the APK and install it. If Android asks to allow "unknown apps" during the installation, allow it.
|
|
146
|
+
2. On the first screen of the app, push "QR로 등록" (Register with QR) and scan the phone registration QR code.
|
|
139
147
|
|
|
140
|
-
|
|
141
|
-
2. 앱 첫 화면에서 폰 등록 QR을 찍습니다.
|
|
148
|
+
The first screen of the app also has the fields "게이트웨이 주소" (gateway address) and "등록 토큰 붙여 넣기" (paste the enrollment token) for a registration without the camera. You can paste into the token field the whole `zigmini://enroll?...` text that the registration QR code contains; then the address in that text is used. The token works only once and only within its time limit.
|
|
142
149
|
|
|
143
|
-
|
|
150
|
+
The two QR codes appear at the end of `zigmini setup`. To make them again, use the commands below, or "기기 등록" (Register device) and "앱 내려받기" (Download app) in the web screen settings. The gateway must be running.
|
|
144
151
|
```sh
|
|
145
|
-
zigmini pair --apk #
|
|
146
|
-
zigmini pair #
|
|
152
|
+
zigmini pair --apk # app download QR code (valid for 10 minutes)
|
|
153
|
+
zigmini pair # phone registration QR code (valid for 10 minutes, single use)
|
|
147
154
|
```
|
|
148
155
|
|
|
149
|
-
|
|
156
|
+
One app can register more than one gateway. The app stores the address and the credentials of each gateway separately and receives the notifications of all gateways. When you tap a notification, the app switches to that gateway. You can see the registered devices in "등록된 기기" (Registered devices) in the web screen settings.
|
|
150
157
|
|
|
151
|
-
##
|
|
158
|
+
## App signing fingerprint
|
|
152
159
|
|
|
153
|
-
|
|
160
|
+
The Android app (APK) in the `zigmini` package is signed with only the certificate below. To check that an APK you received is genuine, read the SHA-256 fingerprint of the signing certificate from the APK file and compare it with the value below. For example: `certificate SHA-256 digest` in the output of `apksigner verify --print-certs zigmini.apk` from the Android SDK (it is printed in lower case without colons), or `SHA256` in the output of `keytool -printcert -jarfile zigmini.apk` from the JDK. If there is more than one certificate or the value is different, do not install the APK.
|
|
154
161
|
|
|
155
162
|
```text
|
|
156
163
|
F0:AB:B3:B2:DC:70:1A:45:19:85:69:7D:58:68:F5:FB:4F:AC:33:4F:D8:6A:68:DD:04:5C:53:B2:5C:94:77:8C
|
|
157
164
|
```
|
|
158
165
|
|
|
159
|
-
##
|
|
166
|
+
## User manual
|
|
167
|
+
|
|
168
|
+
The user manual ([English](docs/manual.md), [한국어](docs/manual.ko.md)) opens from the "매뉴얼" (Manual) button at the top of the web settings dialog, and in the app from the "매뉴얼" button on the connection screen that a short press on the header status tag opens.
|
|
169
|
+
|
|
170
|
+
## Voice
|
|
160
171
|
|
|
161
|
-
|
|
172
|
+
In a new installation, voice is off. To use speech recognition and speech synthesis, push the "음성 설치" (Install voice) button at the top of the web screen on the Mac. The button shows the download size. The gateway downloads uv, a Python environment and the voice models (about 8 GB) to `~/.zigmini/voice`. The chat shows the progress. If it fails, the same button starts again from the failed step. When the installation is done, push "음성 꺼짐" (Voice off) to turn voice on. You install voice and turn it on and off only in the web screen on the Mac. The app shows only the voice state. At the top of the web screen you can also turn on the wake word ("호출어"), double-clap detection ("박수 감지") and spoken answers ("음성 답변").
|
|
162
173
|
|
|
163
|
-
##
|
|
174
|
+
## Update
|
|
164
175
|
|
|
165
|
-
|
|
176
|
+
When a new version is available, a new-version line appears at the top of the web screen, and a version notice appears in the app. To update, use the "업데이트" (Update) button in the web screen settings ("지금 확인" (Check now) checks for a new version), the "업데이트" (Update) button of the version notice in the app, or the commands below.
|
|
166
177
|
```sh
|
|
167
|
-
zigmini update # latest
|
|
168
|
-
zigmini update <버전> #
|
|
178
|
+
zigmini update # update to latest
|
|
179
|
+
zigmini update <버전> # update to the given version (<버전>: version)
|
|
169
180
|
```
|
|
170
181
|
|
|
171
|
-
|
|
182
|
+
The update backs up the DB, installs the new version, restarts and then checks the state. If the check fails, it goes back to the previous version automatically. If the update changes the permission notice, agree to the new notice on the Mac first. An update from the app cannot accept a new notice.
|
|
172
183
|
|
|
173
|
-
|
|
184
|
+
The update does not start while a question waits for your answer in the inbox (main and works). Answer or delete the questions in the inbox first. `--force` does not override this.
|
|
174
185
|
|
|
175
|
-
|
|
176
|
-
2. 게이트웨이만 다시 시작합니다. 웹과 폰은 수 초 뒤 다시 연결됩니다.
|
|
177
|
-
3. 새 세션은 새 세대에서 열립니다. 이전 세대의 세션은 각자 턴이 끝나면 새 세대로 옮겨집니다.
|
|
178
|
-
4. 이전 세대는 세션이 모두 옮겨지면 끝납니다. 메모리가 충분하면 최대 6시간, 아니면 최대 1시간을 기다립니다. 그때까지 끝나지 않은 턴은 끊깁니다. 마무리되면 main 채팅에 한 줄 알림이 옵니다.
|
|
179
|
-
5. 이전 세대를 정리하는 동안에는 다음 업데이트를 받지 않습니다.
|
|
186
|
+
When a new app version is available, the app shows "새 앱 버전" (new app version) with a "내려받기" (Download) button. The button downloads the APK from the gateway. Android asks for the permission to install unknown apps.
|
|
180
187
|
|
|
181
|
-
|
|
188
|
+
If the new version supports a zero-downtime switch (versions after 0.8.0-beta.1), the update does not cut the turns in progress.
|
|
182
189
|
|
|
183
|
-
|
|
190
|
+
1. A new bridge and engine (a new runtime generation) start first on other ports and must pass a check. If the check fails, the update keeps the running ones and rolls back only the installation.
|
|
191
|
+
2. Only the gateway restarts. The web and the phone connect again after a few seconds.
|
|
192
|
+
3. New sessions open in the new generation. Each session of the previous generation moves to the new generation when its turn ends.
|
|
193
|
+
4. The previous generation ends when all its sessions have moved. It waits up to 6 hours if there is enough memory, otherwise up to 1 hour. Turns that are not done by then are cut. When the switch is complete, a one-line notice appears in the main chat.
|
|
194
|
+
5. While the previous generation is being cleaned up, the gateway does not accept the next update.
|
|
184
195
|
|
|
185
|
-
|
|
196
|
+
An update to a version that does not support the zero-downtime switch (including the update to 0.8.0-beta.1) restarts the bridge and the gateway together, as before. In that case the update does not start while a turn is in progress. If it is acceptable to cut the turn, add `--force`.
|
|
197
|
+
|
|
198
|
+
## Commands
|
|
199
|
+
|
|
200
|
+
| Command | What it does |
|
|
186
201
|
|---|---|
|
|
187
|
-
| `zigmini setup` |
|
|
188
|
-
| `zigmini start` |
|
|
189
|
-
| `zigmini stop` |
|
|
190
|
-
| `zigmini restart [gateway\|bridge]` |
|
|
191
|
-
| `zigmini status` | launchd
|
|
192
|
-
| `zigmini doctor [--json] [--fix]` |
|
|
193
|
-
| `zigmini pair [--apk]` |
|
|
194
|
-
| `zigmini consent` |
|
|
195
|
-
| `zigmini update [버전] [--force]` |
|
|
196
|
-
| `zigmini
|
|
197
|
-
| `zigmini
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
202
|
+
| `zigmini setup` | Installs |
|
|
203
|
+
| `zigmini start` | Registers the gateway and the bridge with launchd and starts them |
|
|
204
|
+
| `zigmini stop` | Stops the gateway and the bridge |
|
|
205
|
+
| `zigmini restart [gateway\|bridge]` | Restarts |
|
|
206
|
+
| `zigmini status` | Shows the launchd state, the health and the permission consent state |
|
|
207
|
+
| `zigmini doctor [--json] [--fix]` | Checks the whole state |
|
|
208
|
+
| `zigmini pair [--apk]` | Draws the phone registration QR code or the app download QR code |
|
|
209
|
+
| `zigmini consent` | Shows the permission notice and records the consent |
|
|
210
|
+
| `zigmini update [버전] [--force]` | Updates (`버전`: version) |
|
|
211
|
+
| `zigmini migrate` | Copies an old Docker installation (`~/.zigmini-gateway`) to the new layout. The old folder is not changed |
|
|
212
|
+
| `zigmini migrate-run` | Waits until idle, stops the old runtime, backs up, runs migrate and setup, then checks. If this fails, it goes back to the old runtime |
|
|
213
|
+
| `zigmini --version` | Prints the installed version |
|
|
214
|
+
| `zigmini --help` | Prints the help |
|
|
215
|
+
|
|
216
|
+
When you send `/usage` in the chat, the gateway replies at once with the usage of the logged-in model account.
|
|
217
|
+
|
|
218
|
+
## Agent rules
|
|
219
|
+
|
|
220
|
+
The bridge appends two rule files after the instructions of each agent session.
|
|
221
|
+
|
|
222
|
+
- `assets/agent/gateway-rules.md` in the package: rules common to all installations. An update changes it.
|
|
223
|
+
- `~/.zigmini/rules.md`: rules only for this installation (for example the form of address, the language, accounts). You edit it yourself. When the two files conflict, this file wins.
|
|
224
|
+
|
|
225
|
+
Sessions that open after a change use the new content. To apply it at once, run `zigmini restart bridge` while nothing is running.
|
|
226
|
+
|
|
227
|
+
## Troubleshooting
|
|
228
|
+
|
|
229
|
+
1. Look at the state.
|
|
204
230
|
```sh
|
|
205
231
|
zigmini status
|
|
206
232
|
```
|
|
207
|
-
2.
|
|
233
|
+
2. Check everything. The output shows the problems and what to do.
|
|
208
234
|
```sh
|
|
209
235
|
zigmini doctor
|
|
210
236
|
```
|
|
211
|
-
3.
|
|
237
|
+
3. If an agent has stopped, start it again. `--fix` starts again only the launchd agents that have a problem.
|
|
212
238
|
```sh
|
|
213
239
|
zigmini doctor --fix
|
|
214
240
|
```
|
|
215
|
-
4.
|
|
241
|
+
4. If this does not help, look at the log folder `~/.zigmini/logs`.
|
|
216
242
|
|
|
217
|
-
-
|
|
218
|
-
-
|
|
243
|
+
- If the gateway does not start and reports that there is no permission consent, run `zigmini consent`.
|
|
244
|
+
- Old DB backups, unused engine versions and files left by updates appear in "정리" (Clean up) in the web screen settings. Only the items you select are deleted.
|
|
219
245
|
|
|
220
|
-
##
|
|
246
|
+
## Uninstall
|
|
221
247
|
|
|
222
|
-
1.
|
|
248
|
+
1. Stop the gateway and the bridge and remove the launchd registration.
|
|
223
249
|
```sh
|
|
224
250
|
zigmini stop --uninstall
|
|
225
251
|
```
|
|
226
|
-
2.
|
|
252
|
+
2. Remove the package.
|
|
227
253
|
```sh
|
|
228
254
|
bun remove -g zigmini
|
|
229
255
|
```
|
|
230
|
-
3.
|
|
256
|
+
3. Remove the data. This deletes all conversation history, settings, engines and voice models.
|
|
231
257
|
```sh
|
|
232
258
|
rm -rf ~/.zigmini
|
|
233
259
|
```
|
|
234
260
|
|
|
235
|
-
|
|
261
|
+
Do not delete the shared agent folder `~/.omo/agent`, because other OMO installations also use it.
|
|
236
262
|
|
|
237
|
-
##
|
|
263
|
+
## License
|
|
238
264
|
|
|
239
|
-
|
|
265
|
+
This software is distributed under the [Sustainable Use License 1.0](LICENSE.md). You can use it for personal or non-commercial purposes and for internal business purposes of a company. You cannot sell it or offer it as a paid service. For the exact terms, see `LICENSE.md`.
|
|
240
266
|
|
|
241
|
-
|
|
267
|
+
The licenses of the engine omo-ai that the installation downloads and of the libraries included with it are in [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md). This software uses a patched omo-ai. The patched copy is a modified version.
|
|
@@ -18,3 +18,4 @@ zigmini 패키지 공통 에이전트 규칙입니다. 게이트웨이 브리지
|
|
|
18
18
|
13. 사용자의 시간 표현은 사용자의 현지 시간으로 해석합니다. 보고하는 시각도 현지 시간으로 씁니다.
|
|
19
19
|
14. 사용자는 게이트웨이 프로필의 닉네임으로 부릅니다.
|
|
20
20
|
15. main은 오래 기다리거나 오래 실행하는 작업(배포, 전체 테스트, 뮤테이션 테스트, 다른 작업 기다리기)을 맡기면, 그 작업의 세션 기록이 30분 넘게 바뀌지 않을 때 main을 깨우는 감시를 직접 겁니다. 작업이 끝나면 감시를 끕니다. 작업의 "기다리는 중"·"진행 중" 보고만 믿지 않습니다. 사용자에게 그렇게 말하기 전에 그 작업의 마지막 기록 시각과 실행 중인 프로세스를 확인합니다. 작업이 멈췄으면 바로 그 작업에 조치를 보내고 사용자에게 알립니다. 작업은 긴 명령을 세션과 분리해 실행하고, 결과 파일을 직접 확인하며, 시간 상한을 겁니다.
|
|
21
|
+
16. 작업 하나에 나눌 수 있는 항목이 여럿이거나(예: 버그 여러 개, 구현·검증·문서 단계) 앞 단계를 기다려야 하는 단계가 있으면, 작업 세션은 mass-ulw 스킬을 씁니다. 작업 세션은 처음에 단계와 하위 작업을 정합니다. 서로 기다릴 필요가 없는 하위 작업은 최대한 병렬로 돌립니다. main은 이런 작업을 맡길 때 작업 지시문에 mass-ulw를 쓰라고 적습니다. 파일 하나 고침, 문서 한 줄 같은 작은 작업에는 mass-ulw를 쓰지 않습니다. 같은 파일을 고치는 하위 작업은 같은 단계에서 함께 돌리지 않습니다. 이런 하위 작업은 각자 worktree를 쓰거나 순서대로 돌립니다. 하위 작업을 병렬로 돌려도 무거운 명령(전체 테스트, 뮤테이션 테스트, 빌드 등)은 그 프로젝트나 설치 규칙이 정한 동시 실행 상한을 지킵니다. 규칙 8의 정리와 규칙 15의 감시는 하위 작업에도 적용합니다. 사용자가 질문만 하면 진행 중인 작업을 mass-ulw로 바꾸지 않습니다(규칙 4).
|
|
Binary file
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"versionCode":
|
|
3
|
-
"versionName": "0.8.0-beta.
|
|
4
|
-
"sha256": "
|
|
2
|
+
"versionCode": 24,
|
|
3
|
+
"versionName": "0.8.0-beta.5",
|
|
4
|
+
"sha256": "783c65a373c2b3f7b9f117e66237c6081a85a8f225c7ef9af182049e3a8a5393"
|
|
5
5
|
}
|
package/assets/build.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"commit":"
|
|
1
|
+
{"commit":"6eea099deac067c0e19d44b3bb2890a341438510"}
|