Skip to content

KingYoSun/kukuri

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,149 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

English | 日本語

kukuri

kukuri is a topic-first P2P social app and protocol. It keeps Nostr-derived identity and signed envelope semantics where they are useful, but its internal sync plane is built around separated docs, blobs, hints, and connectivity instead of a relay-first design.

Builder Preview

What To Try In 3 Minutes

  1. Launch the app and wait for the preloaded community node to become ready.
  2. Open one of the starter topics: kukuri:topic:demo, kukuri:topic:iroh, kukuri:topic:nostr, or kukuri:topic:operators.
  3. Publish a public post or reply in-thread.
  4. Create or join a private channel under the same topic.
  5. Export diagnostics and send feedback through GitHub before you close the app.

What Community Nodes Do

  • Community nodes are bootstrap, auth, control-plane, and connectivity-assist components.
  • They help the app discover connectivity URLs and seed peers.
  • They are not the canonical content store for user data.
  • Each configured node stays part of the same Community Node model. Preview automation is controlled per node with an auto_approve policy, not with a separate official/custom split.

What kukuri Is Not

  • kukuri is not a full Nostr client.
  • Nostr compatibility is limited to identity, envelope shape, and selected semantics.
  • kukuri is not relay-first internally.
  • Community nodes are not relays with canonical content ownership.

What Is kukuri

  • Topics are the main browsing and publishing surface.
  • Channels are audience scopes under a topic, not standalone workspaces.
  • The same design aims to cover public timelines, private channels, pairwise DM, live sessions, and game rooms.
  • Users keep local key ownership and publish signed objects from their own identity.

Core Concepts

  • Signed envelopes are proof and metadata, not the whole data plane.
  • Hints are notifications and sync triggers, not a source of truth.
  • Structured state is synchronized through docs.
  • Media and other large payloads are synchronized through blobs.
  • Connectivity comes from static-peer links, seeded DHT discovery, and community-node assist.
  • Durability is designed around offline use, restart recovery, and late join backfill.
  • Community nodes are bootstrap, auth, control-plane, and connectivity-assist components, not the canonical store for user content.
  • Nostr compatibility is a limited subset for identity, envelope shape, and some tags; kukuri's internal sync model is its own.

What Works Today

  • Desktop targets: Linux and Windows.
  • Connectivity: static-peer, seeded DHT discovery, and community-node connectivity/auth.
  • Topic timeline flow: public posts, reply/thread, image attachments, and video attachments.
  • Social graph v1: public profiles, follow/unfollow, mutual, and friend of friend display.
  • Private channel audience v1: invite_only, friend_only, and friend_plus with epoch-aware lifecycle.
  • Pairwise DM v1: 1:1, mutual-only, offline-capable, local transcript/delete, and image/video attachments.
  • Live session and game room state that recover from docs + blobs.

Current scope is defined by foundation progress and the accepted ADRs under docs/adr/.

Longer-Term Direction

  • Search and suggestion can be provided by optional specialized services instead of becoming required parts of the core sync plane.
  • Gateway and bridge layers can provide selective import/export and ecosystem interoperability.
  • Trust, moderation, and policy-assist functions can grow around community nodes without turning them into the canonical content store.
  • These are planned directions and optional ecosystem services, not a statement that they are all shipped in the current workspace.

For Contributors

Entry Points

cargo xtask doctor
cargo xtask check
cargo xtask test
cargo xtask e2e-smoke

cd apps/desktop
npx [email protected] install
npx [email protected] dev

For day-to-day commands and validation paths, use docs/runbooks/dev.md.

License

MIT