Canvas is a local-first, peer-to-peer synced database with an embedded runtime and sync engine.
Canvas applications are easy to configure and have several useful properties:
- Off-chain. No transaction fees or confirmation wait times. Any number of peers can concurrently execute new actions, without waiting for consensus.
- Real-time p2p. Peers connect and sync directly with each other over libp2p, and use GossipSub topics to broadcast actions.
- Eventually consistent. Actions can freely read and write to a relational database. Every peer's database state will deterministically converge regardless of the order in which the actions are received.
- Self-authenticating. Every action is signed by a session key authorized by an end user identity, using e.g. SIWE for Ethereum identities. The entire action log can be verified and replayed by anyone at any time; applications are trustless and portable.
- Cross-platform. Canvas apps run in the browser or server, with NodeJS. They persist data to IndexedDB in-browser, SQLite with on-disk storage, or Postgres with an in-memory Merkle index.
Canvas is designed to be maximally interoperable and data-agnostic. We expect to support a wide range of signed data formats, plus the ability to sync Canvas networks to non-blockchain data sources.
For more information, see the Canvas documentation. Please note that the system is in active development and docs may not always be up-to-date.
To install the latest published CLI:
npm install -g @canvas-js/cli
canvas init <path>
: Initialize a sample applicationcanvas info <path>
: Display application metadatacanvas run <path>
: Run an applicationcanvas export <path>
: Export the action log as JSON to stdoutcanvas import <path>
: Import an action log from stdin
You can run each command with --help for more detailed documentation.
Canvas is currently developed and maintained by a small team. For suggestions or contributions, we recommend first opening an issue or discussing with an existing contributor before opening a pull request.
For information about how to build this repo, see DEVELOPING.md.
MIT © Canvas Technologies, Inc.