Directories
¶
| Path | Synopsis |
|---|---|
|
cmd
|
|
|
jsync
command
Command jsync is the CLI client: a short-lived process that talks to the local or remote jsyncd node over NATS to trigger one-off operations (share, pull, watch, resolve, keys) — it does not itself keep any long-running state, that belongs to the daemon (Fase 4).
|
Command jsync is the CLI client: a short-lived process that talks to the local or remote jsyncd node over NATS to trigger one-off operations (share, pull, watch, resolve, keys) — it does not itself keep any long-running state, that belongs to the daemon (Fase 4). |
|
jsyncd
command
Command jsyncd is the always-running node process (Fase 4): it bootstraps the NATS connection in either hub or peer role (Fase 1), answers handshake requests, consumes JetStream transfers, and runs the Fase 5 filesystem watcher for any configured sync roots.
|
Command jsyncd is the always-running node process (Fase 4): it bootstraps the NATS connection in either hub or peer role (Fase 1), answers handshake requests, consumes JetStream transfers, and runs the Fase 5 filesystem watcher for any configured sync roots. |
|
internal
|
|
|
auditlog
Package auditlog is a forward-only, append-only record of the filesystem mutations a Fase 5 Watcher session applied locally (Dir "in") or published to the peer (Dir "out").
|
Package auditlog is a forward-only, append-only record of the filesystem mutations a Fase 5 Watcher session applied locally (Dir "in") or published to the peer (Dir "out"). |
|
config
Package config loads config.yaml: default download path, machine ID, max payload size, authorized_clients path, and the node's network role (hub or peer, Fase 1) plus its hub connection target when acting as a peer.
|
Package config loads config.yaml: default download path, machine ID, max payload size, authorized_clients path, and the node's network role (hub or peer, Fase 1) plus its hub connection target when acting as a peer. |
|
crypto/ratchet
Package ratchet implements a classical Double Ratchet chain (Fase 3): KDF_RK for the one DH ratchet step X3DH's SK needs to bootstrap a chain, and KDF_CK for per-chunk message key evolution after that.
|
Package ratchet implements a classical Double Ratchet chain (Fase 3): KDF_RK for the one DH ratchet step X3DH's SK needs to bootstrap a chain, and KDF_CK for per-chunk message key evolution after that. |
|
crypto/x3dh
Package x3dh implements X3DH (Extended Triple Diffie-Hellman) session establishment (Fase 3): prekey bundle generation on the responding side (Identity Key, Signed PreKey + signature, One-Time PreKeys), rotation of that material, and the initiator-side derivation of the shared secret SK from a received bundle.
|
Package x3dh implements X3DH (Extended Triple Diffie-Hellman) session establishment (Fase 3): prekey bundle generation on the responding side (Identity Key, Signed PreKey + signature, One-Time PreKeys), rotation of that material, and the initiator-side derivation of the shared secret SK from a received bundle. |
|
daemon
Package daemon is the always-running node process (Fase 4): the NATS message dispatcher, the handshake worker, the disk sandbox/atomic-commit worker (.jsync_tmp_<session_id> -> os.Rename), and the orphaned-session watchdog/garbage collector.
|
Package daemon is the always-running node process (Fase 4): the NATS message dispatcher, the handshake worker, the disk sandbox/atomic-commit worker (.jsync_tmp_<session_id> -> os.Rename), and the orphaned-session watchdog/garbage collector. |
|
handshake
Package handshake implements the Fase 1 challenge-response protocol: nonce + timestamp generation, Ed25519 signing/verification, protocol version negotiation, and the ephemeral session registry (Session ID, TTL, agreed parameters, and per-session NATS subject permissions).
|
Package handshake implements the Fase 1 challenge-response protocol: nonce + timestamp generation, Ed25519 signing/verification, protocol version negotiation, and the ephemeral session registry (Session ID, TTL, agreed parameters, and per-session NATS subject permissions). |
|
identity
Package identity owns each node's Ed25519 machine identity (Fase 1 §2): generating and loading the private/public identity keypair, computing the machine ID, and reading/writing the authorized_clients trust list (the authorized_keys equivalent).
|
Package identity owns each node's Ed25519 machine identity (Fase 1 §2): generating and loading the private/public identity keypair, computing the machine ID, and reading/writing the authorized_clients trust list (the authorized_keys equivalent). |
|
ignore
Package ignore parses .jsyncignore files (gitignore syntax: globs, negation with !, comments) via github.com/sabhiram/go-gitignore rather than hand-rolling glob semantics — those have enough real edge cases (anchoring, **, character classes) that reusing a well-exercised parser is worth the dependency.
|
Package ignore parses .jsyncignore files (gitignore syntax: globs, negation with !, comments) via github.com/sabhiram/go-gitignore rather than hand-rolling glob semantics — those have enough real edge cases (anchoring, **, character classes) that reusing a well-exercised parser is worth the dependency. |
|
pipeline
Package pipeline is the Fase 2 streaming engine: the sender side chains FS walk -> tar -> gzip -> chunk splitter -> JetStream publish entirely through io.Reader/io.Writer (via io.Pipe), never buffering a whole file or archive in memory.
|
Package pipeline is the Fase 2 streaming engine: the sender side chains FS walk -> tar -> gzip -> chunk splitter -> JetStream publish entirely through io.Reader/io.Writer (via io.Pipe), never buffering a whole file or archive in memory. |
|
progress
Package progress consumes the jsync.status.<session_id> subject (Fase 2 §5) and exposes transfer progress (chunk count, throughput, ETA) for the CLI to render.
|
Package progress consumes the jsync.status.<session_id> subject (Fase 2 §5) and exposes transfer progress (chunk count, throughput, ETA) for the CLI to render. |
|
syncfs
Package syncfs is the Fase 5 reactive sync engine sitting on top of internal/watch: the event protocol (CREATE/WRITE/REMOVE/RENAME + content hash), echo-loop suppression by comparing content hashes instead of counting events, conflict detection via per-file version vectors (genuine concurrent edits are marked as *.conflict-<machine_id>-<ts> files and surfaced to the user, never silently merged), and the hash(RelPath)-partitioned JetStream consumer lanes that keep per-file ordering without serializing the whole tree behind one consumer.
|
Package syncfs is the Fase 5 reactive sync engine sitting on top of internal/watch: the event protocol (CREATE/WRITE/REMOVE/RENAME + content hash), echo-loop suppression by comparing content hashes instead of counting events, conflict detection via per-file version vectors (genuine concurrent edits are marked as *.conflict-<machine_id>-<ts> files and surfaced to the user, never silently merged), and the hash(RelPath)-partitioned JetStream consumer lanes that keep per-file ordering without serializing the whole tree behind one consumer. |
|
transport/nats
Package nats wraps connection bootstrap for both network roles defined in Fase 1: hub (embeds and owns a NATS server) and peer (connects out as a Leaf Node to a hub's broker).
|
Package nats wraps connection bootstrap for both network roles defined in Fase 1: hub (embeds and owns a NATS server) and peer (connects out as a Leaf Node to a hub's broker). |
|
watch
Package watch is the native, per-platform recursive filesystem watcher backing Fase 5.
|
Package watch is the native, per-platform recursive filesystem watcher backing Fase 5. |
|
wizard
Package wizard is the interactive setup REPL shared by `jsync configure` and `jsyncd install`.
|
Package wizard is the interactive setup REPL shared by `jsync configure` and `jsyncd install`. |
|
yamledit
Package yamledit holds the yaml.Node helpers that `jsync allow`, `jsync node`, `jsync configure` and `jsyncd install` all use to edit the jsync config file in place — key by key, so existing comments and key order survive a rewrite (a plain Unmarshal -> struct -> Marshal round trip would drop both).
|
Package yamledit holds the yaml.Node helpers that `jsync allow`, `jsync node`, `jsync configure` and `jsyncd install` all use to edit the jsync config file in place — key by key, so existing comments and key order survive a rewrite (a plain Unmarshal -> struct -> Marshal round trip would drop both). |
Click to show internal directories.
Click to hide internal directories.