Voicebar
A voice-first keyboard for Android that works alongside Gboard. Tap Voice, talk, and a tidy message lands in the box.
Encrypted notebooks for text, ink, attachments and tasks, with team sharing and content decrypted in your browser.
ProductivityGo · TypeScriptGitHub @Busnes-appOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
KyNotes: end-to-end encrypted notes with text and canvas
Taken from the repository README
Loading the full README.
Read the full README ↗KyNotes is a browser-based notebook for encrypted text, handwriting, attachments and tasks, with shared team notebooks. Content is decrypted in the browser; an administrator manages accounts and the service rather than reading people’s notes.
Start here: Standalone installation, deployment settings, SSO, complete recovery. Local administrator and everyday accounts work without KyIdentity. A complete backup needs both the sealed capsule and a separate ciphertext blob mirror.
KyNotes stores encrypted notes and attachments; browsers own content decryption.
See deployment for setup and configuration, including the COMPOSE_FILE
line a source build must set so docker compose never swaps in the published image.
See SSO setup and upgrade for session-aware logout and the required re-login/re-pairing of linked accounts after migration 0016.
Administrators can pin a recovery public key, pair KyRecovery, schedule backups, retain local sealed copies, download capsules and run synthetic restore drills. Capsules hold the database and deployment secrets, while ciphertext blobs require separate recovery. Read the restore runbook before relying on a backup.
To check that a release image came from this repository's release workflow, and to rebuild its binary to the same bytes, see verifying releases. The security argument as a whole is in the assurance case; key sizes and the optional strong-key profile are in docs/STRONG-CRYPTO.md.
TLS protects the public key received at pairing, the deposit token and receipts even though the capsule is sealed. Pin the suite public key by hand or compare its fingerprint out of band. A product process never holds recovery private keys or custodian shares.
Local plaintext maintenance commands are copy-data-dir --out and
restore-data-dir --in; they require a stopped service. The sealed recovery commands are
deposit, export-capsule --out, backup-drill, and restore --in --to (shares on stdin).
deposit and backup-drill also work while the server runs (docker exec); use the admin
UI for the other operations then.
Ciphertext blobs have their own mirror: configure KYNOTES_BLOB_TARGET, then use Admin
Mirror now, scheduled backups, or the offline mirror-blobs --config PATH command.
test-blob-target verifies connectivity; fetch-blobs restores missing/corrupt ciphertext
after capsule restore. See deployment for
S3, pinned SFTP, SMB and local-mount settings and restore for the order.
SFTP destinations need strong keys and modern negotiation; read the deployment guide before
upgrading an old target or selecting legacy SMB/NTLM compatibility.
GET /healthz is public ky.health/1 JSON. It returns 200 when startup is
ready and SQLite responds to a ping, or 503 when either check fails. The
shared handler caches each evaluation for five seconds and bounds each check
to two seconds. Its response exposes fixed check names and statuses, never
database errors or user data. GET /livez preserves the former alive-only
200 {"status":"ok"} response. GET /readyz retains its startup-readiness
response. A router created without a database checks startup only.
Use Go matching go.mod and Node 26 as pinned by CI. From the repository root:
npm ci --prefix web
npm test --prefix web
npm run build --prefix web
go build ./...
go vet ./...
go test -race -count=1 ./...
These checks are not the complete release gate. CI also runs browser regressions, fuzz checks, the Docker/installer probe and vulnerability checks; see the workflow. Browser fixtures do not prove a live KyIdentity rollout or complete recovery. Test the real blob mirror and actual capsule-plus-blob restore separately before relying on them.
KyNotes Server is released under the MIT License.