Skip to content

Definitions

RepositoryRegistry

RepositoryRegistry is Pepeunit's representation of an external Git repository (for example from GitLab or GitHub).
This entity stores a full copy of the repository and keeps its state synchronized with the external repository.
On top of this entity, Repo objects are created.

Repo

Repo is an internal Pepeunit entity that connects a RepositoryRegistry with a Unit and allows you to manage a pool of Units.
You can configure updates for all related Units at once and update them manually or automatically.
The main purpose of this entity is to decouple the logical Unit from its RepositoryRegistry.

Unit

Unit is a representation of a physical IoT device in Pepeunit.
This entity is created from a Repo and holds information about a specific physical IoT device and the firmware version available in that Repo.

UnitNode

UnitNode is a representation of an MQTT topic in Pepeunit.
This entity describes an interaction point with a Unit. A UnitNode can be of two types: Input and Output.
UnitNodes of different Units can be connected via links from one Output to many Inputs.

Datasource

Datasource is a data source in Grafana from which Grafana reads data for visualization.
The Backend exposes a ready-to-use REST endpoint for InfinityAPI for each organization.
Such a request, using headers and params, allows you to retrieve data accumulated by DataPipe mechanisms.

Visualization

Visualization (a panel) is a way to display data in Grafana.
Each separate visualization can contain several Datasources of one or more types.
You can bind multiple UnitNodes with configured DataPipes to a single visualization.
When building visualizations, make sure that the data format is consistent.

Dashboard

Dashboard is a set of Visualizations in Grafana combined on a single page for convenient monitoring and analysis.

schema_example.json

schema_example.json is a schema file that describes MQTT topics required by a Unit.
It is created by a Unit Developer and placed into every version of a Repo.
Using this file, Pepeunit creates UnitNode entities responsible for interacting with a Unit and enforcing access policies to that Unit's topics.
Learn more

schema.json

schema.json is the final schema file for a Unit generated by Pepeunit.
It contains links to UnitNodes and the base topics used to interact with Pepeunit.
Learn more

env_example.json

env_example.json is a file that describes the environment variables required for proper Unit operation.
It is created by a Unit Developer and placed into every Repo version.
Based on this file and the User input, Pepeunit can generate an env.json file for a Unit.
Learn more

env.json

env.json is a secret file that contains environment variables required for correct Unit operation.
This is exactly the file that makes your Unit different from other Units created from the same Repo.

It is created by the Unit owner together with Pepeunit and is stored in an encrypted form inside the Unit entity.
Learn more

pepeunit.toml

pepeunit.toml is a standardized information block of a Unit that contains exhaustive information about the Unit.
It is placed in the root of the Git repository and serves as a machine-readable description of the Unit for Pepeunit.
The closest analogue in software development is pyproject.toml.
Learn more

readme.md

readme.md or README.md is a documentation file inside a Git repository.
At the author's discretion, it may contain basic information about the repository, specifics, configuration steps, or any other information deemed important.
In Pepeunit, a generator based on pepeunit.toml is used to populate readme.md.
Learn more

.gitignore

.gitignore is a file that lists files and directories that Git must ignore.
It supports patterns to make cleanup easier.
Learn more

.pepeignore

.pepeignore is a file with syntax similar to .gitignore in Git repositories for Units.
It allows you to remove all listed files and directories from the repository when generating a program archive for Interpretable Units.
Learn more

LICENSE

LICENSE is a license file placed in the root of a Git repository that governs the legal aspects of repository usage.
Pepeunit repositories are published under the AGPL v3 license; authors of their own repositories choose a license themselves (see spdx.org).

Micropython

Micropython is a lean and efficient implementation of the Python 3 programming language that includes a small subset of the standard Python library and is optimized for microcontrollers and constrained environments.

Golang

Go, or Golang, is a compiled, statically typed programming language well suited for high-load systems.

Fediverse

Fediverse is a way of organizing server-to-server interaction that provides a decentralized model of information distribution and processing.

IoT

Internet of Things (IoT) is a global ecosystem of interconnected devices, where everyday objects such as fridges, light bulbs or cars gain common capabilities for interaction thanks to built‑in sensors, chips and internet connectivity, and autonomously exchange data to simplify human life.

Framework

Framework is a ready‑made software structure or scaffold for application development.
It defines the application architecture, controls execution flow and lifecycle, provides a set of components and tools, and offers extension points for plugging in your own logic.

Unlike a library, a framework dictates how code should be organized and calls user code at its own discretion.

Git

Git is a free, open‑source distributed version control system designed for fast and efficient work with projects of any size, from small to very large.

Interpretable

Interpretable refers to a family of programming languages in which code is executed by an interpreter (often via bytecode / JIT) without mandatory ahead‑of‑time compilation to a standalone executable.

Compilable

Compilable refers to a family of programming languages in which code is compiled to machine code or bytecode before execution, and is then run directly or via a virtual machine / JIT.

Git Commit

Commit is the recorded state of code or any other byte structure at a specific point in time in the Git version control system.
Each commit has a unique identifier and usually a description — a text summary of the changes it contains.

Git Tag

Tag is a special label pointing to a commit.
Tags are usually assigned to stable release commits of a program and represent its version.

Git Branch

Branch is an ordered set of commits arranged in chronological order in the Git version control system.

GitLab

GitLab is a web‑based lifecycle tool for Git repositories by GitLab Inc.
In this documentation, GitLab refers both to gitlab.com and any other instance of GitLab CE or GitLab EE.

GitHub

GitHub is a hosting service for Git repositories operated by GitHub, Inc..

SQL

SQL (Structured Query Language) is a declarative programming language for creating, modifying, and managing databases.

API

Application Programming Interface (API) is a set of interaction rules exposed by software that describes how to work with it.
It is usually described by a set of contracts.
For example, the Pepeunit Backend exposes REST, GQL, and MQTT APIs.

REST

REST API is an architectural style that describes how a program interacts with clients using HTTP requests.
The Pepeunit Backend uses Pydantic and the OpenAPI specification to expose a REST API.

GQL

GraphQL API is a query language and open‑source server runtime that uses HTTP(S) for requests.
The Pepeunit Backend uses strawberry-graphql to provide its GraphQL API.

MQTT

MQTT is a lightweight network protocol running on top of TCP/IP, focused on publish‑subscribe messaging.
The Pepeunit Backend uses fastapi-mqtt as a client to interact with EMQX.

Telegram

Telegram is a popular messaging application that provides Telegram Bot functionality.

Telegram Bot

Telegram Bot API is an open API for interacting with services external to Telegram, such as Pepeunit.
To integrate with the Telegram Bot API, Pepeunit uses AioGram as a client.
Telegram Bot API allows the Backend to verify Users.
Bots are managed via Bot Father.

YML

YML or YAML is a human‑readable data format used for serialization and configuration.
It is widely used in automation and pipelines to describe stages and their parameters.
Pepeunit uses it for data pipelines.