Skip to content

OBJECTSHQ/protocol

OBJECTS Protocol

Design engineering protocol for modern craftspeople.

Docs License Rust Version CI Chat Follow on Bluesky Follow on X

What is OBJECTS?

OBJECTS is a protocol for building physical design apps with identity and sync built in. Developers get a network of users and their data through simple API calls. The protocol handles discovery, connections, and sync regardless of NAT, firewalls, or network topology.

Data is stored locally and synced peer-to-peer over QUIC with automatic hole-punching and relay fallback. Identity and data belong to users, not apps.

Capabilities

  • Identity — Passkey and wallet-based identities with human-readable handles
  • Sync — Content-addressed blob transfer with BLAKE3 verification
  • Offline-first — Work independently, sync when connected
  • End-to-end Encrypted — All data and communications encrypted by default

Getting Started

# Clone and build
git clone https://github.com/objectshq/protocol
cd protocol
cargo build --workspace

# Run tests
cargo test --workspace

# Run the CLI
cargo run -p objects-cli -- --help

Devnet Quickstart

Run through the full flow: start a node, create an identity, share a project with a peer.

Prerequisites

1. Run a Node

# Start the node daemon (connects to devnet automatically)
cargo run -p objects-node

The node connects to the OBJECTS relay and bootstrap nodes by default. Override with environment variables if needed:

Variable Default Description
OBJECTS_DATA_DIR ~/.objects Local data storage directory
OBJECTS_API_PORT 3420 HTTP API port
OBJECTS_QUIC_PORT 3421 QUIC transport port
OBJECTS_REGISTRY_URL https://registry.objects.foundation Identity registry
OBJECTS_BOOTSTRAP_NODES (hardcoded devnet nodes) Comma-separated node IDs

2. Create an Identity

cargo run -p objects-cli -- identity create --handle "my-handle"

3. Create a Project

cargo run -p objects-cli -- project create --name "My Project"
# Returns a project ID (32 hex characters)

4. Add an Asset

cargo run -p objects-cli -- asset add --project <project-id> ./file.obj

5. Share with a Peer

On Node A — generate a share ticket:

cargo run -p objects-cli -- ticket create --project <project-id>
# Prints a ticket string

On Node B — redeem the ticket:

# Start a second node (different ports)
OBJECTS_API_PORT=3422 OBJECTS_QUIC_PORT=3423 cargo run -p objects-node

# Redeem the ticket
cargo run -p objects-cli -- ticket redeem <ticket>

6. Verify Sync

On Node B, confirm the project and assets arrived:

cargo run -p objects-cli -- project list
cargo run -p objects-cli -- asset list --project <project-id>

Repository Structure

crates/
├── objects-identity    # Identity ID derivation, signatures, handle validation
├── objects-data        # Asset, Project, Reference types
├── objects-transport   # Iroh wrapper, ALPN config, peer discovery
├── objects-sync        # Blob + metadata sync
└── objects-test-utils  # Shared test utilities and fixtures

bins/
├── objects-cli         # CLI tool
└── objects-node        # Node daemon

proto/
└── objects/            # Protobuf definitions (identity/v1, data/v1)

Contributing

See CONTRIBUTING.md for development setup and guidelines. Please follow our Code of Conduct.

Report a Bug · Request a Feature · Open a Pull Request

License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.

About

OBJECTS is a protocol for building physical design apps with identity and sync built in. Users own their design memories. Developers get a network of users through simple API calls.

Topics

Resources

License

MIT, Apache-2.0 licenses found

Licenses found

MIT
LICENSE
Apache-2.0
LICENSE-APACHE

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors