Website · Package repository · Русский
An experimental source-based package manager for Linux, written in Go.
Still early in development. No magic, no promises of replacing your distro's package manager.
YOSI is my attempt to build a source-based package manager from scratch — and understand every part of the process along the way.
The idea is straightforward: keep package metadata and build recipes in a repository, then let the client fetch, verify, build and install software from source. The client should know exactly what it installed, and the user should be able to see what's going on.
There's a fair amount left to build. That's part of the project.
Here is where things stand today:
| Status | Feature |
|---|---|
| ✅ | Search packages from the remote repository index |
| ✅ | Read package information from TOML manifests |
| ✅ | Parse and validate package manifests |
| ✅ | Fetch and decode TOML build recipes in the Go repository code |
| 🚧 | Downloading, SHA-256 verification and building sources |
| 🚧 | Staging with DESTDIR, installation and file tracking |
| ⏳ | Dependency resolution and local package database |
| ⏳ | Package removal and upgrades |
YOSI cannot install packages yet. The next milestone is a real end-to-end yosi install termtris, not a command that only pretends to work.
You'll need Go and Git. For now, running the client from the source tree is the simplest option:
git clone https://github.com/developv0id/yosi.git
cd yosi
go run ./cmd/yosi helpLook for a package:
go run ./cmd/yosi search termtrisRead its manifest:
go run ./cmd/yosi info termtrisCheck the client version:
go run ./cmd/yosi versionsearch and info contact the public YOSI repository, so they need an internet connection and a reachable server.
Warning
YOSI is experimental software. It is not ready to manage packages on a production system.
The public package index lives at repo.yosi-repo.ru.
The server serves package metadata and build recipes over HTTPS. The client does the interesting work: reading the metadata and, eventually, running the build and keeping track of installed files.
The first example package is termtris 1.9:
manifest.toml— package details, sources and dependencies.build.toml— the build recipe.
Having a recipe in the repository doesn't mean the installer is finished. Right now these files help define and test the format.
The formats are still evolving. If you want to see how they're defined, start here:
- Manifest format, V2.0 draft
- Earlier manifest example, V1.0
- Earlier build recipe example, V1.0
- Contributing guidelines
The client is written in Go. The repository index uses JSON, while package manifests and build recipes use TOML.
cmd/yosi/ Command-line client
internal/repo/ Repository HTTP client, metadata and validation
internal/builder/ Build engine (planned)
internal/installer/ Installation and staging (planned)
internal/resolver/ Dependency resolution (planned)
internal/db/ Local package state (planned)
packages/ Package manifests and build recipes
docs/ Format drafts and project images
tests/ Tests
Most of the heavy lifting is still ahead. I prefer adding one working piece at a time rather than making a huge CLI with commands that don't do anything.
The website and package repository are hosted on my own physical Debian server with nginx and HTTPS. I wanted to get my hands dirty with the server side of package distribution too.
Yosya is YOSI's unofficial Infrastructure Supervisor. She oversees cables, watches development and occasionally reviews questionable technical decisions. Without saying a word.
Found a bug? Have an idea? Open an issue. Technical discussions are welcome. For bigger changes, please start with an issue before writing a large patch, and have a look at CONTRIBUTING.md.
Created and maintained by Sergey Varakin (v0id).
Copyright © 2026 Sergey Varakin.
YOSI source code and documentation are licensed under the GNU General Public License v3.0 or later (GPL-3.0-or-later). Photographs, personal images and third-party assets are not covered by the GPL unless explicitly stated otherwise.


