Wrangler Overview

Wrangler is a collection of rulesets written in KRL that allow management of a single pico, groups of picos, pico lifecycle, and relationships between picos. It can be viewed as an "operating system" for the pico, where Wrangler is an environment for the pico. Through both raising events to trigger actions, such as creating a new pico, or listening to events, such as an added relationship, the KRL programmer can respond to and manipulate picos.

An example of pico creation using Wrangler:

Wrangler Rulesets

  • io.picolabs.wrangler

    • General pico manipulation. Preinstalled on every pico. Create and delete child picos. Install and uninstall rulesets on a pico. Manage parent-child relationships. A few general utility functions.
  • io.picolabs.subscription

    • Provides a simple framework for relationships between picos. Preinstalled on every pico. If two picos both have this installed they can form a subscription to each other, so that they can send messages between them. Supports signed and encrypted messages in existing subscriptions.

  • io.picolabs.prototypes

    • Utilizes io.picolabs.subscription and io.picolabs.wrangler to allow the KRL programmer to define a set of picos and their relationships as a data structure (pico prototype), and then create that structure when desired. Useful for instantiating predetermined groups of picos and the relationships between them.
  • io.picolabs.collection

    • Wrapper around io.picolabs.subscription for managing a collection of member picos. Intended to be wrapped by a developer-supplied ruleset which uses it as a module, and shields them from the complexities of the subscription ruleset.

  • io.picolabs.ds

    • Provides a simple cross-ruleset datastore with key-value pairs under differing domains.
  • io.picolabs.wrangler.profile

    • Provides a way of storing basic profile data in a pico.
  • io.picolabs.logging

    • Through engine interaction creates easily browsable logs of events and queries related to a pico.

  • io.picolabs.test

    • Provides a framework written in KRL for testing other rulesets. The programmer designs a data structure that describes tests for event chains within a target ruleset.