Generated Computers
Locals는 Apple Silicon 엔진으로 로컬 LLM을 최대 3배 빠르게 실행하는 Generated Computers 제품
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 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.