Voicebar
A voice-first keyboard for Android that works alongside Gboard. Tap Voice, talk, and a tidy message lands in the box.
opbox is an experimental open-source daemon that syncs directories of plain text files between machines in real time — CRDT merges, any editor, end-to-end encrypted, offline-friendly.
ProductivityRust · ShellGitHub @s2-streamstoreOnlineOwner 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
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗⚠️ Warning: Use this software with caution. Always keep additional backups of your data.
Real-time, editor agnostic, multiplayer sync for regular UTF-8 text files.
Great for collaborating on an Obsidian graph or a codebase without going through git for everything.
A local daemon listens for both local and remote changes to files in a synced workspace directory.
For every text file in your directory, opbox locally maintains a CRDT-backed shadow version of it. When you save a change to a local file, it solves for an equivalent CRDT operation by doing a regular text diff, then modeling it as an update operation to the CRDT document.
This op is then published to other sync daemons by appending it to a shared, durable journal (S2).
Daemons listen for new ops on the journal, update the local CRDT shadow, and then materialize new versions of the text files on disk.
See docs/architecture.md for more detail.
The only external service this relies on is s2.dev. You can sign up for an account and use the cloud version, or run s2-lite yourself.
[!TIP] Head over to the quickstart to get up and running.
See the in-progress architecture notes and design notes.
Sync correctness is exercised with deterministic simulation testing — see sim/ for the setup and how to run it.
Monitor the shared log (CRDT operations being read from S2) in real time within a workspace:
my-opbox-project % ob spy
spying on opbox workspace d5nev0w5bmzxrh44vsc6jd38rqhb03pb (pid 97662)
session daemon=jc99r2
#4@1782939393173 169B namespace from=n20f2d(remote) obj=ae1fxx +claim="hello.txt" (text)
#5@1782939393173 13B text from=n20f2d(remote) obj=ae1fxx +0ch -0
#6@1782939397685 41B text from=n20f2d(remote) obj=ae1fxx +13ch -0 insert="hello world!\n"
#7@1782939411995 65B namespace from=n20f2d(remote) obj=ae1fxx -claim="hello.txt" (text)
#8@1782939448876 169B namespace from=jc99r2(you) obj=fej65k +claim="world.txt" (text)
#9@1782939448876 13B text from=jc99r2(you) obj=fej65k +0ch -0
#10@1782939458443 31B text from=n20f2d(remote) obj=fej65k +3ch -0 insert="yo\n"
#11@1782939468828 37B text from=jc99r2(you) obj=fej65k +9ch -0 insert="hi there "
ob config manages typed opbox configuration. By default it writes user-wide defaults, such as the S2 access token and default basin:
ob config set access-token "MY_TOKEN"
ob config set default-basin "MY_BASIN"
You can override selected values for just the current workspace:
ob config --workspace set basin "WORKSPACE_BASIN"
ob config --workspace set daemon-log-level "opbox_core=trace,opbox_daemon=trace,info"
Workspace config lives in .opbox/config.toml and takes precedence over the user-wide config for that workspace. Restart the daemon after changing daemon settings:
ob stop && ob start
ob logs --follow