Kinode Architecture There are many ways to describe Kinode. A decentralized operating system. A peer-to-peer application framework. A sovereign cloud computer and node network. All of this is true—but what does it mean in practice and how is it all put together?
One way to understand Kinode is to work backwards. Ultimately, Kinode aims to facilitate the writing and distribution of p2p software, with special attention paid to seamless blockchain and AI integration. To accomplish this, the Kinode OS runs on privately-held, personal server nodes or node clusters, connected by the Kinode Network. This node-based architecture allows Kinode to eliminate boilerplate and reduces the complexity of p2p software development by providing and tightly tying together four basic and necessary primitives: networking, identity, data persistence, and global state.
In doing so, Kinode enables a new generation of decentralized applications by integrating multiple fundamental primitives into a single system. From form, function.
Let’s start from the bottom.
Kinode is written in Rust; the core compiles to a binary that can run on multiple operating systems, while its processes, or applications, compile to Wasm, and are platform neutral. Wasm has the advantage of being highly predictable and portable, and many languages compile to Wasm, including Rust, C, Python, Java and more.
The kernel is lightweight, and exclusively handles message-passing between processes, as well as the initiation and termination of said processes. You can read more about Kinode applications and their structure in our handy Processes Primer.
All Kinode applications are sandboxed in the Kinode OS, which makes them secure; they are only as powerful as the permissions allowed them by the user. The base distribution includes processes for messaging and data storage, as well as an Ethereum wallet and indexer that allows apps to fetch blockchain data.
On Kinode, all identities are connected to an on-chain PKI. When a Kinode node is booted, it connects to this on-chain identity, which is employed for key signing and encryption. The on-chain PKI specifies whether a node is direct or indirect.
Direct nodes map to a physical IP address, which makes routing messages and connecting users through applications simple. Indirect nodes employ direct nodes for routing while allowing users to protect their IP address. That identity is persistent across applications makes them easily composable, and all Kinode applications are networked by default.
For a more thorough discussion of the Kinode Identity system, don’t worry, we’ve got you covered.
Kinode applications save data to a user’s node and create automatic failsafe backups. Kinode is agnostic as to the nature and location of user backups; users can store data on their local machine and then backup to either another harddrive or an arbitrary number of cloud nodes. This redundancy ensures data is not lost due to local failure or disconnection from the Kinode network. Essentially, Kinode offers a cloud backup experience, in which the system makes safe, consistent snapshots of your data that allows you to restore your applications to a working state no matter what happens to the computer running your node.
Kinode is blockchain agnostic. By default, Kinode will integrate with the Ethereum L1 and use Optimism to support its PKI. Future versions of Kinode will integrate with multiple L2 blockchains, such as Arbitrum, and developers will be able to build further integrations for blockchains of their choice. Kinode also will maintain the option to implement a native chain for maximum efficiency and flexibility.
But what does this all add up to?
Remember, Kinode started with a goal: simplify the development and distribution of decentralized software. In doing so, the core features described above actually reframe the internet computing experience to center the user over the application.
In the Web2 app-based model, applications are the silo—users connect to an outside application that stores data and connects to other users. It is centralized and severely limits application extensibility and third-party development.
In node-based computing, users (individuals, companies, DAOs, or other organizations) are the silo—users store data and run applications on their own machines and connect to other users directly. Kinode turns all users into a node, which then accesses the virtual Kinode network. Kinode users can operate this node either directly on their computer or through their browser.
In this way, Kinode empowers users by empowering developers, creating a framework for builders to finally produce robust, dynamic decentralized applications.