MCPcopy Index your code
hub / github.com/coreos/rpm-ostree

github.com/coreos/rpm-ostree @v2026.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release v2026.2 ↗ · + Follow
2,921 symbols 6,878 edges 203 files 666 documented · 23%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

rpm-ostree: A true hybrid image/package system

rpm-ostree is a hybrid image/package system. It combines libostree as a base image format, and accepts RPM on both the client and server side, sharing code with the dnf project; specifically libdnf. and thus bringing many of the benefits of both together.

NOTE: Currently, development focus has shifted to bootc, dnf, and the ecosystem around those tools. However, rpm-ostree is widely in use today in many upstream projects and downstream products and continues to be supported. In general, new major features related to bootable containers should land in those projects instead.

flowchart TD
    rpmostree["rpm-ostree (daemon + CLI)
        status, upgrade, rollback
        package layering
        initramfs --enable"] 
    bootc["bootc (image system)
        fetch bootable container images
        transactional upgrades and rollbacks"]
    ostree["ostree (image system)
        fetch ostree repositories
        transactional upgrades and rollbacks"]
    libdnf["libdnf (pkg system) ties together
        libsolv (SAT solver)
        librepo (RPM repo downloads)
        librpm (RPM installation)
        "]

    rpmostree --> ostree
    rpmostree --> bootc
    rpmostree --> libdnf

Features:

  • Transactional, background image-based (versioned/checksummed) upgrades, using both bootable container images as well as an "ostree native" HTTP model
  • OS rollback without affecting user data (/usr but not /etc, /var) via libostree
  • Client-side package layering (and overrides)
  • Custom base images via rpm-ostree compose image (container) or rpm-ostree compose tree (ostree repo)

Documentation

For more information, see the project documentation or the project documentation website.

License

rpm-ostree includes code licensed under GPLv2+, LGPLv2+, (Apache 2.0 OR MIT). For more information, see LICENSE.

Extension points exported contracts — how you extend this code

OptionExtGetOrInsertDefault (Interface)
Implementation of https://github.com/rust-lang/rust/issues/82901 until it's stable. [1 implementers]
rust/src/utils.rs
CommandRunExt (Interface)
Helpers intended for [`std::process::Command`]. [1 implementers]
rust/src/cmdutils.rs
ExitStatusExt (Interface)
Helpers intended for [`std::process::ExitStatus`]. [1 implementers]
rust/src/cmdutils.rs
FFIGObjectWrapper (Interface)
A custom trait used to translate a *_sys C type wrapper to its GObject version.
rust/src/cxxrsutil.rs
FileHelpers (Interface)
(no doc) [1 implementers]
rust/src/fsutil.rs

Core symbols most depended-on inside this repo

as_ref
called by 167
rust/src/containers_storage.rs
move_nullify
called by 126
src/libpriv/rpmostree-util.h
context
called by 94
rust/src/cxxrsutil.rs
is_empty
called by 82
rust/src/treefile.rs
os_throw_dbus_invocation_error
called by 55
src/daemon/rpmostreed-os.cxx
rpmostreed_sysroot_get
called by 50
src/daemon/rpmostreed-sysroot.cxx
contains
called by 47
rust/src/dirdiff.rs
path
called by 45
rust/src/containers_storage.rs

Shape

Function 1,798
Method 710
Class 332
Enum 74
Interface 7

Languages

C++60%
Rust39%
C1%

Modules by API surface

rpmostree-cxxrs.cxx511 symbols
rust/src/treefile.rs256 symbols
rpmostree-cxxrs.h139 symbols
src/libpriv/rpmostree-core.cxx123 symbols
rust/cxx.h87 symbols
src/libpriv/rpmostree-rpm-util.cxx79 symbols
src/daemon/rpmostreed-transaction-types.cxx77 symbols
src/daemon/rpmostreed-os.cxx59 symbols
rust/src/passwd.rs58 symbols
rust/src/composepost.rs54 symbols
rust/src/history.rs50 symbols
src/libpriv/rpmostree-origin.cxx48 symbols

For agents

$ claude mcp add rpm-ostree \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page