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.