# picc Tree Data in picc is structured in a tree of paths, rooted at `app.picc.`, where `` uniquely identifies the server. It must be a series of strings composed of lower case letters, numbers and/or symbols `-` and `_`, separated by periods (`.`); in other words a hostname. The same structure is used for the [directory](#data-directory), where data can be queried, and the [data streams](#data-streams), which are AMQP topics/routing keys for pub-sub access to the data. ## Data Directory The picc directory is key-value store where keys are picc paths and values are JSON documents. It serves both as a place for looking up system configuration and for latest values in the data streams. System information is available under > `app.picc..sys.people.person_` for information about people, and > `app.picc..sys.places.site_.building_.room_` for information about the building. Data stream values are available under the same paths they are using to publish to AMQP, see [Data Streams](#data-streams). ## Data Streams Data streams are AMQP routing keys where drivers and entities publish their data. ### Entity Tree Like the system tree, the entity streams tree is divided into people streams > `app.picc..streams.people.person_` and location streams > `app.picc..streams.places.site_.building_.room_` These streams are publishing processed data and are meant for user consumption. ### Device Tree The device tree, like the entity tree, contains streams of data. In this case, the data is coming from devices in relatively raw form. Leaves in the device tree are the basic building blocks of picc. They are AMQP topics where device drivers post data and accept commands. This data is meant to be processed by entities into user-friendly streams. > `app.picc..dev.lights.light_.*` > > `app.picc..dev.sensors.sensor_.*` > > `app.picc..dev.transformers.transformer_`