GitHub - doshareme/synchole: P2P Data Sync Protocol · GitHub
/" data-turbo-transient="true" />
Skip to content
Search or jump to...
Search code, repositories, users, issues, pull requests...
-->
Search
Clear
Search syntax tips
Provide feedback
--><br>We read every piece of feedback, and take your input very seriously.
Include my email address so I can be contacted
Cancel
Submit feedback
Saved searches
Use saved searches to filter your results more quickly
-->
Name
Query
To see all available qualifiers, see our documentation.
Cancel
Create saved search
Sign in
/;ref_cta:Sign up;ref_loc:header logged out"}"<br>Sign up
Appearance settings
Resetting focus
You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.
Dismiss alert
{{ message }}
doshareme
synchole
Public
Notifications<br>You must be signed in to change notification settings
Fork
Star
main
BranchesTags
Go to file
CodeOpen more actions menu
Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit
History<br>1 Commit<br>1 Commit
.github/workflows
.github/workflows
MyApplication
MyApplication
benches
benches
bindings
bindings
crates
crates
docs
docs
examples
examples
sample_tkinter_dll_app
sample_tkinter_dll_app
sample_todo_sync_tkinter_app
sample_todo_sync_tkinter_app
tests
tests
.gitignore
.gitignore
Cargo.toml
Cargo.toml
LICENSE
LICENSE
README.md
README.md
rust-toolchain.toml
rust-toolchain.toml
View all files
Repository files navigation
Synchole
Synchole is a Rust-first, multiplatform device-to-device synchronization framework.<br>It is designed for offline-first applications that need encrypted peer sync across<br>Android, iOS, Windows, macOS, Linux, and browser/Web Worker environments.
The network architecture is inspired by Tailscale-style private networking:<br>stable device identity, peer discovery, NAT traversal, encrypted peer tunnels,<br>direct transfer when possible, and relay fallback when direct paths fail.
Workspace
crates/synchole: public SDK facade.
crates/synchole-core: shared IDs, errors, clocks, config, and version vectors.
crates/synchole-identity: device identity, signatures, trust policy, and keyring traits.
crates/synchole-discovery: peer discovery traits and coordination metadata.
crates/synchole-transport: secure tunnel traits, path selection, and frame types.
crates/synchole-nat: STUN/TURN/ICE-style NAT traversal contracts.
crates/synchole-relay: DERP-like relay fallback contracts.
crates/synchole-storage: SQLite storage abstraction with binary, SQL, and document modes.
crates/synchole-sync: sync protocol, conflict resolution, and replication engine.
crates/synchole-bindings: Kotlin/Java, Swift, C ABI, and WASM binding surface.
Documentation
Architecture
Storage
Testing
Security
Example
synchole::Result {<br>let store = SQLiteStore::open("app-sync.db", StorageConfig::new(StorageMode::Binary)).await?;
let sdk = Synchole::builder()<br>.with_config(SyncholeConfig::default())<br>.with_storage(Arc::new(store))<br>.build()<br>.await?;
sdk.put_binary(<br>CollectionId::from("notes"),<br>ObjectId::from("note-1"),<br>b"encrypted application payload".to_vec(),<br>.await?;
let report = sdk.sync_once().await?;<br>println!("synced {} peers", report.peers_contacted);<br># Ok(())<br># }">use std::sync::Arc;
use synchole::{<br>CollectionId, ObjectId, SQLiteStore, StorageConfig, StorageMode, Synchole,<br>SyncholeConfig,<br>};
# async fn example() -> synchole::Result()> {<br>let store = SQLiteStore::open("app-sync.db", StorageConfig::new(StorageMode::Binary)).await?;
let sdk = Synchole::builder()<br>.with_config(SyncholeConfig::default())<br>.with_storage(Arc::new(store))<br>.build()<br>.await?;
sdk.put_binary(<br>CollectionId::from("notes"),<br>ObjectId::from("note-1"),<br>b"encrypted application payload".to_vec(),<br>.await?;
let report = sdk.sync_once().await?;<br>println!("synced {} peers", report.peers_contacted);<br># Ok(())<br># }
This repository is a production-oriented architecture scaffold. Network adapters,<br>platform keychains, and production relay services are intentionally behind traits so<br>applications can choose concrete backends without changing sync semantics.
About
P2P Data Sync Protocol
Resources
Readme
License
MIT license
Security policy
Security policy
Uh oh!
There was an error while loading. Please reload this page.
Activity
Custom properties
Stars
stars
Watchers
watching
Forks
forks
Report repository
Releases
No releases published
Packages
Uh oh!
There was an error while loading. Please reload this page.
Contributors
Uh oh!
There was an error while loading. Please reload this page.
Languages
Rust<br>57.3%
Python<br>38.5%
Kotlin<br>4.1%
Batchfile<br>0.1%
You can’t perform that action at this time.