Generated Computers
Locals: an Apple Silicon engine that runs local LLMs up to 3x faster. A product of Generated Computers.
翻译准备中
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Knockbox is one Go binary and one SQLite file. It stores your messages, pushes them straight to Apple's servers, and serves the history to the iOS app. There is no relay in between and no account to sign up for — the server is yours.
There is a public instance at https://knockbox.miramiao.com/. Open it on your iPhone with the app installed and you have your own inbox: no sign-up, no password. It runs the same image as below, with quotas and a 30-day retention.
To keep your messages on your own hardware, run the server yourself.
docker run -d --name knockbox -p 8080:8080 -v knockbox-data:/app/data \
-e IGO_SERVER_EXTERNAL_URL=http://localhost:8080 \
ghcr.io/aichy126/knockbox
docker logs knockbox
The first start creates the database and an admin account, and prints that account's username and password in the log — once, and nowhere else. Open http://localhost:8080/login, sign in, and the pairing page shows a QR code to scan with the iOS app.
Set IGO_SERVER_EXTERNAL_URL to the address your phone will actually reach, for
example https://push.example.com. It goes into pairing links and attachment URLs, so
localhost works only while you are testing on the same machine.
Then send something:
curl -d "build failed" https://push.example.com/api/v1/send/<channel-token>
There is a compose.yaml for anything longer-lived, and prebuilt
binaries for Linux, macOS, Windows and FreeBSD on every tagged release.
No database server, no Redis — the whole thing is a binary and a .db file.
→ Running your own server
| Send however you like | Plain body, query string, multipart or JSON — every field also works from the query string, so a one-line curl is enough. → |
| Bodies without a length limit | The body is not in the push payload, so it can be far longer than a notification allows. Markdown, tables, code, images. → |
| Ask for an answer | Buttons to tap, checkboxes, a slider, or a field to type in. The answer is POSTed to a URL you provide, signed. → |
| One call, many people | send/batch takes a list of tokens and reports per-token results — no broadcast credential needed. → |
| An endpoint for agents | The same credential is an MCP endpoint over streamable HTTP, exposing one tool. → |
| A channel per thing | Sound, interruption level and mute live on the server, so a script never has to decide what counts as urgent. → |
| Every device, the whole history | A new device pairs by scanning a code and pulls everything. |
The server serves a sending guide at /docs — with your address already filled in and
a "send this one" button on every example. The public instance's copy is at
https://knockbox.miramiao.com/docs.
Behind /login there is an admin interface: an overview, message search, members and
their devices, pairing, and the settings that take effect without a restart.
Every page, this interface included, is English and Chinese, switchable from the top
right; the admin interface remembers the choice. Adding a language is adding one JSON
file to internal/api/web/locales/ — the server and the admin interface read the same
one, so there is no second copy to keep in step.
| Running your own server | Compose, Docker, binaries, source · reverse proxy · upgrades · backups · every setting |
| Sending and integrating | Fields · attachments · answers and callbacks · batch · MCP · limits · CLI |
| Security | What the embedded APNs key can and cannot reach, and how to report a problem |
| Contributing | How to build, test and propose a change |
These are choices, not omissions. Read them before you deploy.
retention.days for a limit. The security
boundary is that machine. →curl line and hashing would make that impossible. They are
write-only, scoped to one channel, rate-limited, and can be rotated at any time./admin/api/* is not a public contract. /api/v1 is. Everything under
/admin/api/ serves the admin interface that ships here and will change whenever it
does. →Deleting is real deleting. Clearing a channel physically removes the rows: the
server runs with secure_delete, then checkpoints the WAL and vacuums. Attachments are
reference-counted and the blob goes when the last message referencing it does. What
this does not promise is that the bytes are gone from an SSD — wear levelling is below
the application layer.
MIT. See LICENSE.