Urbit Developers
  • Hoon

    • Overview
    • Cheat Sheet
    • Irregular forms
    • Hoon Errors
    • Hoon Style Guide
    • Basic Types
    • Advanced Types
    • Auras
    • Standard Library

      • 1a: Basic Arithmetic
      • 1b: Tree Addressing
      • 1c: Molds and Mold-Builders
      • 2a: Unit Logic
      • 2b: List Logic
      • 2c: Bit Arithmetic
      • 2d: Bit Logic
      • 2e: Insecure Hashing
      • 2f: Noun Ordering
      • 2g: Unsigned Powers
      • 2h: Set Logic
      • 2i: Map Logic
      • 2j: Jar and Jug Logic
      • 2k: Queue Logic
      • 2l: Container from Container
      • 2m: Container from Noun
      • 2n: Functional Hacks
      • 2o: Normalizing Containers
      • 2p: Serialization
      • 2q: Molds and Mold-Builders
      • 3a: Modular and Signed Ints
      • 3b: Floating Point
      • 3c: Urbit Time
      • 3d: SHA Hash Family
      • 3e: AES encryption (Removed)
      • 3f: Scrambling
      • 3g: Molds and Mold-Builders
      • 4a: Exotic Bases
      • 4b: Text Processing
      • 4c: Tank Printer
      • 4d: Parsing (Tracing)
      • 4e: Parsing (Combinators)
      • 4f: Parsing (Rule-Builders)
      • 4g: Parsing (Outside Caller)
      • 4h: Parsing (ASCII Glyphs)
      • 4i: Parsing (Useful Idioms)
      • 4j: Parsing (Bases and Base Digits)
      • 4k: Atom Printing
      • 4l: Atom Parsing
      • 4m: Formatting Functions
      • 4n: Virtualization
      • 4o: Molds
      • 5a: Compiler Utilities
      • 5b: Macro Expansion
      • 5c: Compiler Backend & Prettyprinter
      • 5d: Parser
      • 5e: Molds and mold builders
      • 5f: Profiling support
      • Runes

        • Atoms and strings
        • Nock . ('dot')
        • Wild ! ('zap')
        • Change Subject = ('tis')
        • Conditionals ? ('wut')
        • Cores | ('bar')
        • Arms + ('lus')
        • Cells : ('col')
        • Calls % ('cen')
        • Casts ^ ('ket')
        • Structures $ ('buc')
        • Make ; ('mic')
        • Hints ~ ('sig')
        • Imports / ('fas')
        • Terminators -- and ==
        • Limbs and wings

          • Limbs
          • Wings
          • Zuse

            • Table of Contents
            • 2d(1-5): To JSON, Wains
            • 2d(6): From JSON
            • 2d(7): From JSON (unit)
            • 2e(2-3): Print & Parse JSON
          • Arvo

            • Overview
            • Ames

              • Overview
              • Cryptography
              • API Reference
              • Scry Reference
              • Data Types
              • Behn

                • Overview
                • API Reference
                • Scry Reference
                • Examples
                • Clay

                  • Overview
                  • Architecture
                  • Using Clay
                  • Data Types
                  • Scry Reference
                  • API Reference
                  • Examples
                  • Marks

                    • Overview
                    • Writing Marks
                    • Using Marks
                    • Examples
                  • Dill

                    • Overview
                    • API Reference
                    • Scry Reference
                    • Data Types
                    • Eyre

                      • Overview
                      • External API Reference
                      • Internal API Reference
                      • Scry Reference
                      • Data Types
                      • Guide
                      • Gall

                        • Overview
                        • API Reference
                        • Data Types
                        • Threads Reference
                        • Iris

                          • Overview
                          • API Reference
                          • Data Types
                          • Example
                          • Jael

                            • Overview
                            • API Reference
                            • Scry Reference
                            • Data Types
                            • Examples
                            • Threads

                              • Overview
                              • HTTP API
                              • Reference
                              • Gall

                                • Start Thread
                                • Take Result
                                • Take Facts
                                • Stop Thread
                                • Poke Thread
                                • Examples

                                  • Fetch JSON
                                  • Child Thread
                                  • Main-loop
                                  • Poke Agent
                                  • Scry
                                  • Take Fact
                                • Concepts

                                  • Scries
                                  • Subscriptions
                                  • Tutorials

                                    • Move Trace
                                    • Reference

                                      • Cryptography
                                      • Filesystem Hierarchy
                                    • Nock

                                      • Nock Definition
                                      • Explanation
                                      • Example
                                      • Implementations
                                      • Vere

                                        • C Runtime System
                                        • Land of Nouns
                                        • API overview by prefix
                                        • C in Urbit
                                        • Writing Jets
                                        • Cryptography
                                        • Azimuth

                                          • Overview
                                          • Urbit HD Wallet
                                          • Azimuth Data Flow
                                          • Azimuth.eth
                                          • Ecliptic.eth
                                          • Advanced Azimuth Tools
                                          • Life and Rift
                                          • Layer 2

                                            • Layer 2 Overview
                                            • Layer 2 Actions
                                            • Transaction Format
                                            • Rollers
                                            • Roller HTTP RPC-API
                                            • Custom Roller Tutorial
                                          • Glossary

                                            • Agent
                                            • Ames
                                            • API
                                            • Aqua
                                            • Arm
                                            • Arvo
                                            • Atom
                                            • Aura
                                            • Aural ASCII
                                            • Azimuth
                                            • Battery
                                            • Behn
                                            • Bowl
                                            • Bridge
                                            • Bunt
                                            • Card
                                            • Case
                                            • Cask
                                            • Cell
                                            • Censures
                                            • Claims
                                            • Clay
                                            • Cold atom
                                            • Comet
                                            • Commit
                                            • Cons
                                            • Context
                                            • Cord
                                            • Core
                                            • Delegated Sending
                                            • Desk
                                            • Dill
                                            • Document Proposal
                                            • Dojo
                                            • Door
                                            • Double-boot
                                            • Dry Gate
                                            • Duct
                                            • Ecliptic
                                            • Entropy
                                            • Event Log
                                            • Eyre
                                            • Face
                                            • Fact
                                            • Foo Bar Baz
                                            • Galaxy
                                            • Gall
                                            • Garden
                                            • Gate
                                            • Generator
                                            • Gift
                                            • Glob
                                            • HD Wallet
                                            • Helm
                                            • Hood
                                            • Hoon
                                            • Invite Tree
                                            • Iris
                                            • Jael
                                            • Jet
                                            • Kelvin versioning
                                            • Kelvin versioning
                                            • Keyfile
                                            • Keywords
                                            • Khan
                                            • Kiln
                                            • Landscape
                                            • Leg
                                            • List
                                            • Loobean
                                            • Lull
                                            • Mark
                                            • Metals
                                            • Mold
                                            • Monad
                                            • Moon
                                            • Move
                                            • Nock
                                            • Noun
                                            • ~
                                            • OTA Updates
                                            • Path Prefix
                                            • Path
                                            • @p
                                            • Payload
                                            • Peek
                                            • pH
                                            • Pier
                                            • Pill
                                            • Planet
                                            • Poke
                                            • Proxies
                                            • Replay
                                            • Factory Reset
                                            • Roller
                                            • Naive rollups
                                            • Rune
                                            • Runtime
                                            • Sail
                                            • Sample
                                            • Scry
                                            • Senate
                                            • Ship
                                            • Slam
                                            • Spider
                                            • Star
                                            • String
                                            • Subject Oriented Programming
                                            • Subject
                                            • Subscription
                                            • Tape
                                            • Thread
                                            • Trap
                                            • Udon
                                            • Upgrade Proposal
                                            • Userspace
                                            • Vane
                                            • Vere
                                            • Voting
                                            • Warm atom
                                            • Wet Gate
                                            • Wing
                                            • Wire
                                            • Wrapper
                                            • ~zod
                                            • Zuse
                                            • Additional

                                              • Cryptography
                                              • Software Distribution

                                                • Overview
                                                • Docket File
                                                • Glob
                                                • Beacon

                                                  • Overview
                                                  • Subscriptions
                                                  • Scry Paths
                                                  • Types
                                                Urbit Developers
                                                • Hoon

                                                  • Overview
                                                  • Cheat Sheet
                                                  • Irregular forms
                                                  • Hoon Errors
                                                  • Hoon Style Guide
                                                  • Basic Types
                                                  • Advanced Types
                                                  • Auras
                                                  • Standard Library

                                                    • 1a: Basic Arithmetic
                                                    • 1b: Tree Addressing
                                                    • 1c: Molds and Mold-Builders
                                                    • 2a: Unit Logic
                                                    • 2b: List Logic
                                                    • 2c: Bit Arithmetic
                                                    • 2d: Bit Logic
                                                    • 2e: Insecure Hashing
                                                    • 2f: Noun Ordering
                                                    • 2g: Unsigned Powers
                                                    • 2h: Set Logic
                                                    • 2i: Map Logic
                                                    • 2j: Jar and Jug Logic
                                                    • 2k: Queue Logic
                                                    • 2l: Container from Container
                                                    • 2m: Container from Noun
                                                    • 2n: Functional Hacks
                                                    • 2o: Normalizing Containers
                                                    • 2p: Serialization
                                                    • 2q: Molds and Mold-Builders
                                                    • 3a: Modular and Signed Ints
                                                    • 3b: Floating Point
                                                    • 3c: Urbit Time
                                                    • 3d: SHA Hash Family
                                                    • 3e: AES encryption (Removed)
                                                    • 3f: Scrambling
                                                    • 3g: Molds and Mold-Builders
                                                    • 4a: Exotic Bases
                                                    • 4b: Text Processing
                                                    • 4c: Tank Printer
                                                    • 4d: Parsing (Tracing)
                                                    • 4e: Parsing (Combinators)
                                                    • 4f: Parsing (Rule-Builders)
                                                    • 4g: Parsing (Outside Caller)
                                                    • 4h: Parsing (ASCII Glyphs)
                                                    • 4i: Parsing (Useful Idioms)
                                                    • 4j: Parsing (Bases and Base Digits)
                                                    • 4k: Atom Printing
                                                    • 4l: Atom Parsing
                                                    • 4m: Formatting Functions
                                                    • 4n: Virtualization
                                                    • 4o: Molds
                                                    • 5a: Compiler Utilities
                                                    • 5b: Macro Expansion
                                                    • 5c: Compiler Backend & Prettyprinter
                                                    • 5d: Parser
                                                    • 5e: Molds and mold builders
                                                    • 5f: Profiling support
                                                    • Runes

                                                      • Atoms and strings
                                                      • Nock . ('dot')
                                                      • Wild ! ('zap')
                                                      • Change Subject = ('tis')
                                                      • Conditionals ? ('wut')
                                                      • Cores | ('bar')
                                                      • Arms + ('lus')
                                                      • Cells : ('col')
                                                      • Calls % ('cen')
                                                      • Casts ^ ('ket')
                                                      • Structures $ ('buc')
                                                      • Make ; ('mic')
                                                      • Hints ~ ('sig')
                                                      • Imports / ('fas')
                                                      • Terminators -- and ==
                                                      • Limbs and wings

                                                        • Limbs
                                                        • Wings
                                                        • Zuse

                                                          • Table of Contents
                                                          • 2d(1-5): To JSON, Wains
                                                          • 2d(6): From JSON
                                                          • 2d(7): From JSON (unit)
                                                          • 2e(2-3): Print & Parse JSON
                                                        • Arvo

                                                          • Overview
                                                          • Ames

                                                            • Overview
                                                            • Cryptography
                                                            • API Reference
                                                            • Scry Reference
                                                            • Data Types
                                                            • Behn

                                                              • Overview
                                                              • API Reference
                                                              • Scry Reference
                                                              • Examples
                                                              • Clay

                                                                • Overview
                                                                • Architecture
                                                                • Using Clay
                                                                • Data Types
                                                                • Scry Reference
                                                                • API Reference
                                                                • Examples
                                                                • Marks

                                                                  • Overview
                                                                  • Writing Marks
                                                                  • Using Marks
                                                                  • Examples
                                                                • Dill

                                                                  • Overview
                                                                  • API Reference
                                                                  • Scry Reference
                                                                  • Data Types
                                                                  • Eyre

                                                                    • Overview
                                                                    • External API Reference
                                                                    • Internal API Reference
                                                                    • Scry Reference
                                                                    • Data Types
                                                                    • Guide
                                                                    • Gall

                                                                      • Overview
                                                                      • API Reference
                                                                      • Data Types
                                                                      • Threads Reference
                                                                      • Iris

                                                                        • Overview
                                                                        • API Reference
                                                                        • Data Types
                                                                        • Example
                                                                        • Jael

                                                                          • Overview
                                                                          • API Reference
                                                                          • Scry Reference
                                                                          • Data Types
                                                                          • Examples
                                                                          • Threads

                                                                            • Overview
                                                                            • HTTP API
                                                                            • Reference
                                                                            • Gall

                                                                              • Start Thread
                                                                              • Take Result
                                                                              • Take Facts
                                                                              • Stop Thread
                                                                              • Poke Thread
                                                                              • Examples

                                                                                • Fetch JSON
                                                                                • Child Thread
                                                                                • Main-loop
                                                                                • Poke Agent
                                                                                • Scry
                                                                                • Take Fact
                                                                              • Concepts

                                                                                • Scries
                                                                                • Subscriptions
                                                                                • Tutorials

                                                                                  • Move Trace
                                                                                  • Reference

                                                                                    • Cryptography
                                                                                    • Filesystem Hierarchy
                                                                                  • Nock

                                                                                    • Nock Definition
                                                                                    • Explanation
                                                                                    • Example
                                                                                    • Implementations
                                                                                    • Vere

                                                                                      • C Runtime System
                                                                                      • Land of Nouns
                                                                                      • API overview by prefix
                                                                                      • C in Urbit
                                                                                      • Writing Jets
                                                                                      • Cryptography
                                                                                      • Azimuth

                                                                                        • Overview
                                                                                        • Urbit HD Wallet
                                                                                        • Azimuth Data Flow
                                                                                        • Azimuth.eth
                                                                                        • Ecliptic.eth
                                                                                        • Advanced Azimuth Tools
                                                                                        • Life and Rift
                                                                                        • Layer 2

                                                                                          • Layer 2 Overview
                                                                                          • Layer 2 Actions
                                                                                          • Transaction Format
                                                                                          • Rollers
                                                                                          • Roller HTTP RPC-API
                                                                                          • Custom Roller Tutorial
                                                                                        • Glossary

                                                                                          • Agent
                                                                                          • Ames
                                                                                          • API
                                                                                          • Aqua
                                                                                          • Arm
                                                                                          • Arvo
                                                                                          • Atom
                                                                                          • Aura
                                                                                          • Aural ASCII
                                                                                          • Azimuth
                                                                                          • Battery
                                                                                          • Behn
                                                                                          • Bowl
                                                                                          • Bridge
                                                                                          • Bunt
                                                                                          • Card
                                                                                          • Case
                                                                                          • Cask
                                                                                          • Cell
                                                                                          • Censures
                                                                                          • Claims
                                                                                          • Clay
                                                                                          • Cold atom
                                                                                          • Comet
                                                                                          • Commit
                                                                                          • Cons
                                                                                          • Context
                                                                                          • Cord
                                                                                          • Core
                                                                                          • Delegated Sending
                                                                                          • Desk
                                                                                          • Dill
                                                                                          • Document Proposal
                                                                                          • Dojo
                                                                                          • Door
                                                                                          • Double-boot
                                                                                          • Dry Gate
                                                                                          • Duct
                                                                                          • Ecliptic
                                                                                          • Entropy
                                                                                          • Event Log
                                                                                          • Eyre
                                                                                          • Face
                                                                                          • Fact
                                                                                          • Foo Bar Baz
                                                                                          • Galaxy
                                                                                          • Gall
                                                                                          • Garden
                                                                                          • Gate
                                                                                          • Generator
                                                                                          • Gift
                                                                                          • Glob
                                                                                          • HD Wallet
                                                                                          • Helm
                                                                                          • Hood
                                                                                          • Hoon
                                                                                          • Invite Tree
                                                                                          • Iris
                                                                                          • Jael
                                                                                          • Jet
                                                                                          • Kelvin versioning
                                                                                          • Kelvin versioning
                                                                                          • Keyfile
                                                                                          • Keywords
                                                                                          • Khan
                                                                                          • Kiln
                                                                                          • Landscape
                                                                                          • Leg
                                                                                          • List
                                                                                          • Loobean
                                                                                          • Lull
                                                                                          • Mark
                                                                                          • Metals
                                                                                          • Mold
                                                                                          • Monad
                                                                                          • Moon
                                                                                          • Move
                                                                                          • Nock
                                                                                          • Noun
                                                                                          • ~
                                                                                          • OTA Updates
                                                                                          • Path Prefix
                                                                                          • Path
                                                                                          • @p
                                                                                          • Payload
                                                                                          • Peek
                                                                                          • pH
                                                                                          • Pier
                                                                                          • Pill
                                                                                          • Planet
                                                                                          • Poke
                                                                                          • Proxies
                                                                                          • Replay
                                                                                          • Factory Reset
                                                                                          • Roller
                                                                                          • Naive rollups
                                                                                          • Rune
                                                                                          • Runtime
                                                                                          • Sail
                                                                                          • Sample
                                                                                          • Scry
                                                                                          • Senate
                                                                                          • Ship
                                                                                          • Slam
                                                                                          • Spider
                                                                                          • Star
                                                                                          • String
                                                                                          • Subject Oriented Programming
                                                                                          • Subject
                                                                                          • Subscription
                                                                                          • Tape
                                                                                          • Thread
                                                                                          • Trap
                                                                                          • Udon
                                                                                          • Upgrade Proposal
                                                                                          • Userspace
                                                                                          • Vane
                                                                                          • Vere
                                                                                          • Voting
                                                                                          • Warm atom
                                                                                          • Wet Gate
                                                                                          • Wing
                                                                                          • Wire
                                                                                          • Wrapper
                                                                                          • ~zod
                                                                                          • Zuse
                                                                                          • Additional

                                                                                            • Cryptography
                                                                                            • Software Distribution

                                                                                              • Overview
                                                                                              • Docket File
                                                                                              • Glob
                                                                                              • Beacon

                                                                                                • Overview
                                                                                                • Subscriptions
                                                                                                • Scry Paths
                                                                                                • Types
                                                                                              Reference/Arvo/Dill

                                                                                              Overview

                                                                                              The terminal driver vane.

                                                                                              Keyboard events and the like from Unix are received by Dill as %belt tasks, and Dill sends %blit gifts containing $blits back to the runtime to be displayed in the Unix terminal. The manner of interacting with Dill differs depending on whether you're in userspace or kernelspace, as we'll explore below.

                                                                                              Kernelspace

                                                                                              For technical reasons, Dill performs a handful of system tasks related to booting a ship and some memory operations. Aside from those, other Vanes mostly just pass Dill tasks to print error messages and the like to the terminal.

                                                                                              Userspace

                                                                                              Unlike in kernelspace, userspace applications are unlikely to %pass Dill tasks directly. Instead, Dill looks at things in terms of sessions. A session is a pipeline between a client and a handler, where:

                                                                                              • The client is an external input source and output sink; a terminal with with dimensions and so forth.
                                                                                              • The handler is an application in Urbit that interprets input, maybe does something with it, maybe produces output to be displayed in the client, etc.

                                                                                              There are plans for Dill to support multiple independent sessions (i.e. independent terminal clients displaying and processing different information at the same time), but at this stage Dill only supports a single session. The client for this default session is just the Unix terminal via the Urbit runtime. The handler for the default session is the %hood app, whose drum module does the heavy lifting.

                                                                                              drum is the CLI app manager. By default you'll have a couple of CLI applications running—%dojo and %chat-cli—which you can switch between with ctrl+x. You may also have additional CLI apps which you have attached with the |link command. It's drum that keeps track of which one is active, which one input should be routed to, which one should be displayed, what each prompt should look like, and so forth. Dill itself is oblivious to the distinction between these CLI apps. It only sees the default session with drum, so it just passes all input to drum and display whatever drum gives it.

                                                                                              While drum talks with Dill in $dill-belts and $dill-blits, it talks to CLI apps with $sole-actions and $sole-events, which are defined in the sole library. For more information on the sole library and the related shoe library, and for information on how to build CLI apps, you can refer to the CLI app tutorial.

                                                                                              To give a basic idea of how keyboard events flow through these systems and produce terminal output, here's a diagram showing the messages in pseudo-Hoon:

                                                                                              Dill userspace diagram

                                                                                              You can use a move trace to get a hands-on feel for this data flow.

                                                                                              Sections

                                                                                              API Reference - The tasks Dill takes and the gifts it returns.

                                                                                              Scry Reference - The scry endpoints of Dill.

                                                                                              Data Types - Reference documentation of the data types used by Dill.

                                                                                              API Reference

                                                                                              ->

                                                                                              Edit this page on GitHub

                                                                                              Last modified October 31, 2022