Vauchi Principles

The single source of truth for core principles and philosophy.

All solutions must be validated against these principles before implementation.


Core Value Statement

Vauchi is built on five interlocking commitments:

1. Privacy is a right, not an option

All design starts with: "How would we build this if users were our only concern?"

  • E2E encryption for all communications
  • Zero-knowledge relay (sees only encrypted blobs)
  • No tracking, analytics, or telemetry
  • User owns and controls their data

2. Trust is earned in person

Human recognition is the security anchor, not passwords or platforms.

  • QR exchange with physical proximity verification for full trust; opt-in remote discovery at reduced trust
  • No accounts or registration (device IS the identity)
  • Social vouching for recovery (people you've actually met)
  • No trust-on-first-use, no platform-mediated relationships

3. Quality comes from rigorous methodology

Confidence through discipline, not hope.

  • Test-Driven Development (TDD) is mandatory
  • Problem-first workflow with full traceability
  • Threat modeling drives security decisions
  • No hacks, no tech debt, no ignored tests

4. Simplicity serves the user

Vauchi respects your time and attention — it does one thing well and stays out of your way.

  • No engagement tricks, no notifications designed to pull you back
  • Clear, minimal interface — useful without a learning curve
  • Features earn their place by solving real problems, not adding complexity
  • The app is a tool, not a destination

5. Beauty adapts to the user

Simplicity and beauty go hand in hand — and beauty is personal.

  • Design that feels good without demanding attention
  • Theming and customisation let users make it their own
  • Aesthetic choices serve clarity, never compete with it
  • A beautiful tool is one that fits the person using it

Principle Categories

Privacy Principles

PrincipleStatement
User OwnershipAll data stored locally on device, encrypted, under user control
Zero KnowledgeRelay cannot decrypt content; sees only encrypted blobs and metadata
No HarvestingNo analytics, telemetry, location tracking, or advertising IDs
No SharingUser data never shared with third parties
Selective VisibilityUsers control per-field, per-contact visibility

Security Principles

PrincipleStatement
Proximity Anchors Full TrustQR + BLE/ultrasonic required for full trust; opt-in remote contact at restricted visibility, no recovery/introduction privileges
Audited Crypto OnlyRustCrypto audited crates primary (ed25519-dalek, x25519-dalek: Trail of Bits; sha2, hmac, hkdf: RustCrypto); chacha20poly1305 and argon2 spec-mandated; aws-lc-rs retained for TLS only (via rustls); no custom cryptography
Forward SecrecyDouble Ratchet ensures past messages safe if keys compromised
Memory SafetyRust enforces safety; no unsafe in crypto paths
Defense in DepthMultiple layers: encryption, signing, verification

Technical Principles

PrincipleStatement
TDD MandatoryTidy→Red→Green→Refactor. Tidy first, test first. No exceptions
90%+ CoverageFor vauchi-core; real crypto in tests (no mocking)
Rust CoreMemory safety, no GC, cross-platform compilation
Clean Dependenciesvauchi-core standalone; downstream repos use git deps
Gherkin TraceabilityFeatures in features/*.feature drive test writing

UX Principles

PrincipleStatement
Complexity HiddenUsers see "scan QR, contact added"; encryption invisible
In-Person TrustHuman recognition is the security anchor
Offline-FirstQR exchange works without connectivity
Portable IdentityNo vendor lock-in; restore from backup, switch devices
Cross-Platform ConsistencySame experience on iOS, Android, desktop

Process Principles

PrincipleStatement
Problem-FirstEvery task starts as a problem; ideas restated as problems
Artifacts AccumulateInvestigation, rejected solutions, retrospectives attached to problems
No Wasted RejectionsArchive rejected solutions with reasoning
Small Atomic CommitsAfter each green, after each refactor
Retrospective RequiredLearn from every completed problem

Using These Principles

For Solution Validation

When evaluating a proposed solution, check:

  1. Does it align with Core Principles? (Privacy, Trust, Quality, Simplicity, Beauty)
  2. Does it fit the Culture? (Process Principles)
  3. Is it compatible with Current Implementation? (Technical Principles)
  4. Does it support existing Features? (UX Principles)

If a solution conflicts with any principle, it must be rejected with documented reasoning.

For Decision Making

When facing a design decision:

  1. Start with the user's perspective
  2. Assume adversarial conditions (what could go wrong?)
  3. Choose the option that best upholds all five core values
  4. Document the decision and rationale

For New Contributors

Read these principles before contributing. They are non-negotiable. If you disagree with a principle, open a problem record to discuss changing it—don't ignore it.


Amending Principles

Principles can be amended, but only through the Problem Workflow:

  1. Create a problem record explaining why the principle should change
  2. Investigate impact across codebase and documentation
  3. Validate the change against remaining principles
  4. Implement with full retrospective

Principles are not immutable, but changes must be deliberate and documented.