Blog post
5 min read

Hello, Dartfrog!

Written by
Kinode
Published on
June 28, 2024

Last week, Kinode turned one year old and, to celebrate, we wrote up a laundry list of our accomplishments. Among them we discussed Meme Deck, the earliest third party app developed on the Kinode platform. But as Kinode has stabilized and proved how capable its architecture is, it has also attracted more third party developer interest and apps. One of our favorite recent additions is called Dartfrog, which started life as a simple peer-to-peer chat app. Its developer, Tim, has continued to iterate on Dartfrog to the point that it has some great new features for users, like chess and multiplayer piano, with more on the way. But, as if often the case, the really cool stuff is what's happening under the hood. Let’s take a look at Tim’s vision for Dartfrog, and how the app aims to become an “app browser for the Kinternet”.

Dartfrog’s Architecture

Dartfrog addresses some challenges common to peer-to-peer app development, particularly in network efficiency and session management. Many p2p apps “take the easy way out” and use gossip protocols, everyone-to-everyone connections, or persistent client-server subscriptions, which can lead to network congestion and excessive resource consumption. Dartfrog, on the other hand, implements high-level, activity oriented, explicit point-to-point sessions that automatically manage connections. Here’s how the Dartfrog implementation improves “network hygiene”:

  • Activity based connections:
    • Dartfrog only maintains active connections for users currently interacting with the system. It closes inactive sessions.
  • Explicit point-to-point:
    • Dartfrog does not broadcast to all nodes, instead creating connections between relevant parties.
  • Automatic Session Management:
    • The system handles the connection lifecycle, including timeouts and heartbeats, to ensure resources are used efficiently.

This design supports high-bandwidth apps, like those that offer real-time collaboration, while keeping the network running smoothly. It’s particularly beneficial in environments with many users who have varying levels of activity, since it prevents inactive users from consuming network resources unnecessarily.

The “Kinternet Browser” Concept

Dartfrog’s components compile to Wasm and, like Kinode itself, it can support multiple programming languages. Plugins are in fact just iframes of other Kinode apps that integrate with the Dartfrog API. The Kinode Identity System handles user authentication and management, and Dartfrog uses Kinode’s peer-to-peer networking to enable direct communication between users.

Dartfrog itself implements an open protocol for service discovery, where users can request information about services from other users they’ve encountered on the frontend. What this means is that Dartfrog eventually becomes an “app browser for the Kinternet”, where any service which uses the Dartfrog API can potentially be discovered and shared through the Dartfrog app.

Dartfrog 0.2.3

The latest release of Dartfrog brings several improvements and new features:

  • Overhauled plugin system:
    • Plugins are now iframes of other Kinode apps that integrate with the Dartfrog API.
  • Enhanced Service Features:
    • Introduction of service links for easier sharing.
    • Users can now click on a tab title to copy the service link.
    • Improved service discovery with additional metadata, including the number of online users and active time.
  • New Communication Features:
    • Added a text-to-speech function accessible via the /tts command.
    • Chat sound effects can be muted for a quieter experience.
  • Improvements to Existing Apps:
    • Chess gets an enhanced user interface and sound effects.
    • Piano has light-up keys and the UI displays which user is playing each note.

The Future of Dartfrog

Dartfrog exemplifies the potential of Kinode as a place to build and deploy scalable decentralized applications. Future expansions include DMs, invites, and onchain profiles, easy deployment of high speed, multiplayer games, webRTC, a lobby system, and more. And, like Kinode, the Dartfrog API will eventually become backward compatible so developers can release apps that live forever without fear of breaking changes.

If you’d like to develop on Kinode (or Dartfrog!), you can find our developer docs here. In addition to helpful code examples and walkthroughs, you’ll also find how to set up your own Kinode.

For the less technically-savvy, you can get on Kinode by signing up for our hosting waitlist here.

And we’re always available on Discord or Telegram to take your questions or just have a chat.

Come join us. Challenge one of us to a game of p2p chess or just try typing “/robust” in the Dartfrog chat (our community manager loves this feature).

We can’t wait to see you on Kinode.