diff --git a/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/ByteString.java b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/ByteString.java
new file mode 100644
index 0000000..1a85547
--- /dev/null
+++ b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/ByteString.java
@@ -0,0 +1,41 @@
+package eu.mulk.jgvariant.ostree;
+
+import eu.mulk.jgvariant.core.Decoder;
+import java.util.Arrays;
+import java.util.HexFormat;
+
+/**
+ * A wrapper for a {@code byte[]} that implements {@link #equals(Object)}, {@link #hashCode()}, and
+ * {@link #toString()} according to value semantics.
+ */
+public record ByteString(byte[] bytes) {
+
+  private static final Decoder<ByteString> DECODER = Decoder.ofByteArray().map(ByteString::new);
+
+  public static Decoder<ByteString> decoder() {
+    return DECODER;
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    return (o instanceof ByteString byteString) && Arrays.equals(bytes, byteString.bytes);
+  }
+
+  @Override
+  public int hashCode() {
+    return Arrays.hashCode(bytes);
+  }
+
+  @Override
+  public String toString() {
+    return "ByteString{hex=\"%s\"}".formatted(hex());
+  }
+
+  public String hex() {
+    return HexFormat.of().formatHex(bytes);
+  }
+
+  public static ByteString ofHex(String hex) {
+    return new ByteString(HexFormat.of().parseHex(hex));
+  }
+}
diff --git a/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/Checksum.java b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/Checksum.java
new file mode 100644
index 0000000..f77eb57
--- /dev/null
+++ b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/Checksum.java
@@ -0,0 +1,24 @@
+package eu.mulk.jgvariant.ostree;
+
+import eu.mulk.jgvariant.core.Decoder;
+
+/**
+ * A wrapper for {@link ByteString} that refers to a content-addressed object in an OSTree
+ * repository.
+ */
+public record Checksum(ByteString bytes) {
+
+  private static final Decoder<Checksum> DECODER = ByteString.decoder().map(Checksum::new);
+
+  public static Decoder<Checksum> decoder() {
+    return DECODER;
+  }
+
+  public String hex() {
+    return bytes.hex();
+  }
+
+  public static Checksum ofHex(String hex) {
+    return new Checksum(ByteString.ofHex(hex));
+  }
+}
diff --git a/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/Commit.java b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/Commit.java
new file mode 100644
index 0000000..43909ba
--- /dev/null
+++ b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/Commit.java
@@ -0,0 +1,51 @@
+package eu.mulk.jgvariant.ostree;
+
+import eu.mulk.jgvariant.core.Decoder;
+import java.nio.ByteOrder;
+import java.nio.charset.StandardCharsets;
+import java.util.List;
+
+/**
+ * A commit in an OSTree repository.
+ *
+ * <p>Has an optional parent, a root directory, and various metadata.
+ *
+ * <p>Reference: {@code ostree-core.h#OSTREE_COMMIT_GVARIANT_STRING}
+ */
+public record Commit(
+    Metadata metadata,
+    Checksum parentChecksum,
+    List<RelatedObject> relatedObjects,
+    String subject,
+    String body,
+    long timestamp,
+    Checksum rootDirTreeChecksum,
+    Checksum rootDirMetaChecksum) {
+
+  public record RelatedObject(String ref, Checksum commitChecksum) {
+
+    private static final Decoder<RelatedObject> DECODER =
+        Decoder.ofStructure(
+            RelatedObject.class, Decoder.ofString(StandardCharsets.UTF_8), Checksum.decoder());
+
+    public static Decoder<RelatedObject> decoder() {
+      return DECODER;
+    }
+  }
+
+  private static final Decoder<Commit> DECODER =
+      Decoder.ofStructure(
+          Commit.class,
+          Metadata.decoder(),
+          Checksum.decoder(),
+          Decoder.ofArray(RelatedObject.decoder()),
+          Decoder.ofString(StandardCharsets.UTF_8),
+          Decoder.ofString(StandardCharsets.UTF_8),
+          Decoder.ofLong().withByteOrder(ByteOrder.BIG_ENDIAN),
+          Checksum.decoder(),
+          Checksum.decoder());
+
+  public static Decoder<Commit> decoder() {
+    return DECODER;
+  }
+}
diff --git a/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/DeltaFallback.java b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/DeltaFallback.java
new file mode 100644
index 0000000..1b3cc0a
--- /dev/null
+++ b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/DeltaFallback.java
@@ -0,0 +1,25 @@
+package eu.mulk.jgvariant.ostree;
+
+import eu.mulk.jgvariant.core.Decoder;
+import java.nio.ByteOrder;
+
+/**
+ * A fallback entry in a {@link DeltaSuperblock}.
+ *
+ * <p>Reference: {@code ostree-repo-static-delta-private.h#OSTREE_STATIC_DELTA_FALLBACK_FORMAT}
+ */
+public record DeltaFallback(
+    byte objectType, Checksum checksum, long compressedSize, long uncompressedSize) {
+
+  private static final Decoder<DeltaFallback> DECODER =
+      Decoder.ofStructure(
+          DeltaFallback.class,
+          Decoder.ofByte(),
+          Checksum.decoder(),
+          Decoder.ofLong().withByteOrder(ByteOrder.LITTLE_ENDIAN), // FIXME: non-canonical
+          Decoder.ofLong().withByteOrder(ByteOrder.LITTLE_ENDIAN)); // FIXME: non-canonical
+
+  public static Decoder<DeltaFallback> decoder() {
+    return DECODER;
+  }
+}
diff --git a/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/DeltaMetaEntry.java b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/DeltaMetaEntry.java
new file mode 100644
index 0000000..39ada86
--- /dev/null
+++ b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/DeltaMetaEntry.java
@@ -0,0 +1,38 @@
+package eu.mulk.jgvariant.ostree;
+
+import eu.mulk.jgvariant.core.Decoder;
+import java.nio.ByteOrder;
+import java.util.List;
+
+/**
+ * An entry in a {@link DeltaSuperblock}.
+ *
+ * <p>Reference: {@code ostree-repo-static-delta-private.h#OSTREE_STATIC_DELTA_META_ENTRY_FORMAT}
+ */
+public record DeltaMetaEntry(
+    int version, Checksum checksum, long size, long usize, List<DeltaObject> objects) {
+
+  record DeltaObject(byte objectType, Checksum checksum) {
+
+    private static final Decoder<DeltaObject> DECODER =
+        Decoder.ofStructure(DeltaObject.class, Decoder.ofByte(), Checksum.decoder());
+
+    public static Decoder<DeltaObject> decoder() {
+      return DECODER;
+    }
+  }
+
+  private static final Decoder<DeltaMetaEntry> DECODER =
+      Decoder.ofStructure(
+          DeltaMetaEntry.class,
+          Decoder.ofInt().withByteOrder(ByteOrder.LITTLE_ENDIAN), // FIXME: non-canonical
+          Checksum.decoder(),
+          Decoder.ofLong().withByteOrder(ByteOrder.LITTLE_ENDIAN), // FIXME: non-canonical
+          Decoder.ofLong().withByteOrder(ByteOrder.LITTLE_ENDIAN), // FIXME: non-canonical
+          Decoder.ofByteArray().map(x -> List.of()) // FIXME
+          );
+
+  public static Decoder<DeltaMetaEntry> decoder() {
+    return DECODER;
+  }
+}
diff --git a/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/DeltaPartPayload.java b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/DeltaPartPayload.java
new file mode 100644
index 0000000..c8c5fe7
--- /dev/null
+++ b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/DeltaPartPayload.java
@@ -0,0 +1,41 @@
+package eu.mulk.jgvariant.ostree;
+
+import eu.mulk.jgvariant.core.Decoder;
+import java.nio.ByteOrder;
+import java.util.List;
+
+/**
+ * Reference: {@code ostree-repo-static-delta-private.h#OSTREE_STATIC_DELTA_PART_PAYLOAD_FORMAT_V0}
+ */
+public record DeltaPartPayload(
+    List<FileMode> fileModes,
+    List<List<Xattr>> xattrs,
+    ByteString rawDataSource,
+    ByteString operations) {
+
+  private static final Decoder<DeltaPartPayload> DECODER =
+      Decoder.ofStructure(
+          DeltaPartPayload.class,
+          Decoder.ofArray(FileMode.decoder()),
+          Decoder.ofArray(Decoder.ofArray(Xattr.decoder())),
+          ByteString.decoder(),
+          ByteString.decoder());
+
+  public record FileMode(int uid, int gid, int mode) {
+
+    private static final Decoder<FileMode> DECODER =
+        Decoder.ofStructure(
+            FileMode.class,
+            Decoder.ofInt().withByteOrder(ByteOrder.LITTLE_ENDIAN),
+            Decoder.ofInt().withByteOrder(ByteOrder.LITTLE_ENDIAN),
+            Decoder.ofInt().withByteOrder(ByteOrder.LITTLE_ENDIAN));
+
+    public static Decoder<FileMode> decoder() {
+      return DECODER;
+    }
+  }
+
+  public static Decoder<DeltaPartPayload> decoder() {
+    return DECODER;
+  }
+}
diff --git a/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/DeltaSuperblock.java b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/DeltaSuperblock.java
new file mode 100644
index 0000000..2b09645
--- /dev/null
+++ b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/DeltaSuperblock.java
@@ -0,0 +1,43 @@
+package eu.mulk.jgvariant.ostree;
+
+import eu.mulk.jgvariant.core.Decoder;
+import java.nio.ByteOrder;
+import java.util.List;
+
+/** Reference: {@code ostree-repo-static-delta-private.h#OSTREE_STATIC_DELTA_SUPERBLOCK_FORMAT} */
+public record DeltaSuperblock(
+    Metadata metadata,
+    long timestamp,
+    Checksum fromChecksum,
+    Checksum toChecksum,
+    Commit commit,
+    List<DeltaName> dependencies,
+    List<DeltaMetaEntry> entries,
+    List<DeltaFallback> fallbacks) {
+
+  public record DeltaName(Checksum fromChecksum, Checksum toChecksum) {
+
+    private static final Decoder<DeltaName> DECODER =
+        Decoder.ofStructure(DeltaName.class, Checksum.decoder(), Checksum.decoder());
+
+    public static Decoder<DeltaName> decoder() {
+      return DECODER;
+    }
+  }
+
+  private static final Decoder<DeltaSuperblock> DECODER =
+      Decoder.ofStructure(
+          DeltaSuperblock.class,
+          Metadata.decoder(),
+          Decoder.ofLong().withByteOrder(ByteOrder.BIG_ENDIAN),
+          Checksum.decoder(),
+          Checksum.decoder(),
+          Commit.decoder(),
+          Decoder.ofByteArray().map(x -> List.of()), // FIXME
+          Decoder.ofArray(DeltaMetaEntry.decoder()),
+          Decoder.ofArray(DeltaFallback.decoder()));
+
+  public static Decoder<DeltaSuperblock> decoder() {
+    return DECODER;
+  }
+}
diff --git a/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/DirMeta.java b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/DirMeta.java
new file mode 100644
index 0000000..3a9672d
--- /dev/null
+++ b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/DirMeta.java
@@ -0,0 +1,25 @@
+package eu.mulk.jgvariant.ostree;
+
+import eu.mulk.jgvariant.core.Decoder;
+import java.nio.ByteOrder;
+import java.util.List;
+
+/**
+ * Permission bits and extended attributes for a directory.
+ *
+ * <p>Reference: {@code ostree-core.h#OSTREE_DIRMETA_GVARIANT_STRING}
+ */
+public record DirMeta(int uid, int gid, int mode, List<Xattr> xattrs) {
+
+  private static final Decoder<DirMeta> DECODER =
+      Decoder.ofStructure(
+          DirMeta.class,
+          Decoder.ofInt().withByteOrder(ByteOrder.BIG_ENDIAN),
+          Decoder.ofInt().withByteOrder(ByteOrder.BIG_ENDIAN),
+          Decoder.ofInt().withByteOrder(ByteOrder.BIG_ENDIAN),
+          Decoder.ofArray(Xattr.decoder()));
+
+  public static Decoder<DirMeta> decoder() {
+    return DECODER;
+  }
+}
diff --git a/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/DirTree.java b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/DirTree.java
new file mode 100644
index 0000000..3a14abb
--- /dev/null
+++ b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/DirTree.java
@@ -0,0 +1,49 @@
+package eu.mulk.jgvariant.ostree;
+
+import eu.mulk.jgvariant.core.Decoder;
+import java.nio.charset.StandardCharsets;
+import java.util.List;
+
+/**
+ * Metadata describing files and directories of a file tree.
+ *
+ * <p>Referenced by {@link Commit#rootDirTreeChecksum()} and recursively by {@link
+ * Directory#treeChecksum()}.
+ *
+ * <p>Reference: {@code ostree-core.h#OSTREE_TREE_GVARIANT_STRING}
+ */
+public record DirTree(List<File> files, List<Directory> directories) {
+
+  public record File(String name, Checksum checksum) {
+
+    private static final Decoder<File> DECODER =
+        Decoder.ofStructure(
+            File.class, Decoder.ofString(StandardCharsets.UTF_8), Checksum.decoder());
+
+    public static Decoder<File> decoder() {
+      return DECODER;
+    }
+  }
+
+  public record Directory(String name, Checksum treeChecksum, Checksum dirChecksum) {
+
+    private static final Decoder<Directory> DECODER =
+        Decoder.ofStructure(
+            Directory.class,
+            Decoder.ofString(StandardCharsets.UTF_8),
+            Checksum.decoder(),
+            Checksum.decoder());
+
+    public static Decoder<Directory> decoder() {
+      return DECODER;
+    }
+  }
+
+  private static final Decoder<DirTree> DECODER =
+      Decoder.ofStructure(
+          DirTree.class, Decoder.ofArray(File.decoder()), Decoder.ofArray(Directory.decoder()));
+
+  public static Decoder<DirTree> decoder() {
+    return DECODER;
+  }
+}
diff --git a/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/FileMeta.java b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/FileMeta.java
new file mode 100644
index 0000000..19e0677
--- /dev/null
+++ b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/FileMeta.java
@@ -0,0 +1,25 @@
+package eu.mulk.jgvariant.ostree;
+
+import eu.mulk.jgvariant.core.Decoder;
+import java.nio.ByteOrder;
+import java.util.List;
+
+/**
+ * Permission bits and extended attributes for a file.
+ *
+ * <p>Reference: {@code ostree-core.h#OSTREE_FILEMETA_GVARIANT_STRING}
+ */
+public record FileMeta(int uid, int gid, int mode, List<Xattr> xattrs) {
+
+  private static final Decoder<FileMeta> DECODER =
+      Decoder.ofStructure(
+          FileMeta.class,
+          Decoder.ofInt().withByteOrder(ByteOrder.BIG_ENDIAN),
+          Decoder.ofInt().withByteOrder(ByteOrder.BIG_ENDIAN),
+          Decoder.ofInt().withByteOrder(ByteOrder.BIG_ENDIAN),
+          Decoder.ofArray(Xattr.decoder()));
+
+  public static Decoder<FileMeta> decoder() {
+    return DECODER;
+  }
+}
diff --git a/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/Metadata.java b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/Metadata.java
new file mode 100644
index 0000000..cf838d3
--- /dev/null
+++ b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/Metadata.java
@@ -0,0 +1,33 @@
+package eu.mulk.jgvariant.ostree;
+
+import eu.mulk.jgvariant.core.Decoder;
+import eu.mulk.jgvariant.core.Variant;
+import java.nio.charset.StandardCharsets;
+import java.util.List;
+
+/**
+ * A wrapper for a list of metadata fields.
+ *
+ * <p>Reference: (embedded in other data types)
+ */
+public record Metadata(List<Field> fields) {
+
+  /** A metadata field with a key and a value. */
+  public record Field(String key, Variant value) {
+
+    private static final Decoder<Field> DECODER =
+        Decoder.ofStructure(
+            Field.class, Decoder.ofString(StandardCharsets.UTF_8), Decoder.ofVariant());
+
+    public static Decoder<Field> decoder() {
+      return DECODER;
+    }
+  }
+
+  private static final Decoder<Metadata> DECODER =
+      Decoder.ofArray(Field.decoder()).map(Metadata::new);
+
+  public static Decoder<Metadata> decoder() {
+    return DECODER;
+  }
+}
diff --git a/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/SignedDelta.java b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/SignedDelta.java
new file mode 100644
index 0000000..2fc5c25
--- /dev/null
+++ b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/SignedDelta.java
@@ -0,0 +1,38 @@
+package eu.mulk.jgvariant.ostree;
+
+import eu.mulk.jgvariant.core.Decoder;
+import eu.mulk.jgvariant.core.Variant;
+import java.nio.ByteOrder;
+import java.nio.charset.StandardCharsets;
+import java.util.List;
+
+/**
+ * A {@link DeltaSuperblock} signed with some sort of key.
+ *
+ * <p>Reference: {@code ostree-repo-static-delta-private.h#OSTREE_STATIC_DELTA_SIGNED_FORMAT}
+ */
+public record SignedDelta(
+    long magicNumber, ByteString superblock, List<SignedDelta.Signature> signatures) {
+
+  /** A cryptographic signature. */
+  public record Signature(String key, Variant data) {
+    private static final Decoder<Signature> DECODER =
+        Decoder.ofStructure(
+            Signature.class, Decoder.ofString(StandardCharsets.US_ASCII), Decoder.ofVariant());
+
+    public static Decoder<Signature> decoder() {
+      return DECODER;
+    }
+  }
+
+  private static final Decoder<SignedDelta> DECODER =
+      Decoder.ofStructure(
+          SignedDelta.class,
+          Decoder.ofLong().withByteOrder(ByteOrder.BIG_ENDIAN),
+          ByteString.decoder(),
+          Decoder.ofArray(Signature.decoder()));
+
+  public static Decoder<SignedDelta> decoder() {
+    return DECODER;
+  }
+}
diff --git a/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/Summary.java b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/Summary.java
new file mode 100644
index 0000000..8f4ddf6
--- /dev/null
+++ b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/Summary.java
@@ -0,0 +1,47 @@
+package eu.mulk.jgvariant.ostree;
+
+import eu.mulk.jgvariant.core.Decoder;
+import java.nio.ByteOrder;
+import java.nio.charset.StandardCharsets;
+import java.util.List;
+
+/**
+ * The summary file of an OSTree repository.
+ *
+ * <p>Stored as a file named {@code summary} in the OSTree repository root.
+ *
+ * <p>Reference: {@code ostree-core.h#OSTREE_SUMMARY_GVARIANT_STRING}
+ */
+public record Summary(List<Entry> entries, Metadata metadata) {
+
+  public record Entry(String ref, Value value) {
+
+    public record Value(long size, Checksum checksum, Metadata metadata) {
+
+      private static final Decoder<Value> DECODER =
+          Decoder.ofStructure(
+              Value.class,
+              Decoder.ofLong().withByteOrder(ByteOrder.LITTLE_ENDIAN),
+              Checksum.decoder(),
+              Metadata.decoder());
+
+      public static Decoder<Value> decoder() {
+        return DECODER;
+      }
+    }
+
+    private static final Decoder<Entry> DECODER =
+        Decoder.ofStructure(Entry.class, Decoder.ofString(StandardCharsets.UTF_8), Value.decoder());
+
+    public static Decoder<Entry> decoder() {
+      return DECODER;
+    }
+  }
+
+  private static final Decoder<Summary> DECODER =
+      Decoder.ofStructure(Summary.class, Decoder.ofArray(Entry.decoder()), Metadata.decoder());
+
+  public static Decoder<Summary> decoder() {
+    return DECODER;
+  }
+}
diff --git a/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/SummarySignature.java b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/SummarySignature.java
new file mode 100644
index 0000000..a05b96d
--- /dev/null
+++ b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/SummarySignature.java
@@ -0,0 +1,35 @@
+package eu.mulk.jgvariant.ostree;
+
+import eu.mulk.jgvariant.core.Decoder;
+import eu.mulk.jgvariant.core.Variant;
+import java.nio.charset.StandardCharsets;
+import java.util.List;
+
+/**
+ * A collection of cryptographic signatures for a {@link Summary}.
+ *
+ * <p>Stored as a file named {@code summary.sig} in the OSTree repository root.
+ *
+ * <p>Reference: {@code ostree-repo-static-delta-private.h#OSTREE_SUMMARY_SIG_GVARIANT_STRING}
+ */
+public record SummarySignature(List<Signature> signatures) {
+
+  /** A cryptographic signature. */
+  public record Signature(String key, Variant data) {
+
+    private static final Decoder<Signature> DECODER =
+        Decoder.ofStructure(
+            Signature.class, Decoder.ofString(StandardCharsets.UTF_8), Decoder.ofVariant());
+
+    public static Decoder<Signature> decoder() {
+      return DECODER;
+    }
+  }
+
+  private static final Decoder<SummarySignature> DECODER =
+      Decoder.ofArray(Signature.decoder()).map(SummarySignature::new);
+
+  public static Decoder<SummarySignature> decoder() {
+    return DECODER;
+  }
+}
diff --git a/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/Xattr.java b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/Xattr.java
new file mode 100644
index 0000000..68628c4
--- /dev/null
+++ b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/Xattr.java
@@ -0,0 +1,18 @@
+package eu.mulk.jgvariant.ostree;
+
+import eu.mulk.jgvariant.core.Decoder;
+
+/**
+ * Reference: (embedded in other data types, e.g. {@code
+ * ostree-core.h#OSTREE_DIRMETA_GVARIANT_STRING}, {@code
+ * ostree-core.h#OSTREE_FILEMETA_GVARIANT_STRING})
+ */
+public record Xattr(ByteString name, ByteString value) {
+
+  private static final Decoder<Xattr> DECODER =
+      Decoder.ofStructure(Xattr.class, ByteString.decoder(), ByteString.decoder());
+
+  public static Decoder<Xattr> decoder() {
+    return DECODER;
+  }
+}
diff --git a/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/package-info.java b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/package-info.java
new file mode 100644
index 0000000..c6a61f1
--- /dev/null
+++ b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/package-info.java
@@ -0,0 +1,10 @@
+/**
+ * Provides record classes describing the elements of <a
+ * href="https://ostreedev.github.io/ostree/">OSTree</a> repositories and factory methods to create
+ * {@link eu.mulk.jgvariant.core.Decoder} instances for them.
+ */
+@API(status = Status.EXPERIMENTAL)
+package eu.mulk.jgvariant.ostree;
+
+import org.apiguardian.api.API;
+import org.apiguardian.api.API.Status;
diff --git a/jgvariant-ostree/src/main/java/module-info.java b/jgvariant-ostree/src/main/java/module-info.java
new file mode 100644
index 0000000..e51c586
--- /dev/null
+++ b/jgvariant-ostree/src/main/java/module-info.java
@@ -0,0 +1,85 @@
+/**
+ * Provides a parser for the <a href="https://docs.gtk.org/glib/struct.Variant.html">GVariant</a>
+ * serialization format.
+ *
+ * <ul>
+ *   <li><a href="#sect-overview">Overview</a>
+ *   <li><a href="#sect-installation">Installation</a>
+ * </ul>
+ *
+ * <h2 id="sect-overview">Overview</h2>
+ *
+ * <p>The {@link eu.mulk.jgvariant.ostree} package contains record classes describing the elements
+ * of <a href="https://ostreedev.github.io/ostree/">OSTree</a> repositories and factory methods to
+ * create {@link eu.mulk.jgvariant.core.Decoder} instances for them.
+ *
+ * <h2 id="sect-installation">Installation</h2>
+ *
+ * <ul>
+ *   <li><a href="#sect-installation-maven">Usage with Maven</a>
+ *   <li><a href="#sect-installation-gradle">Usage with Gradle</a>
+ * </ul>
+ *
+ * <h3 id="sect-installation-maven">Usage with Maven</h3>
+ *
+ * <pre>{@code
+ * <project>
+ *   ...
+ *
+ *   <dependencyManagement>
+ *     ...
+ *
+ *     <dependencies>
+ *       <dependency>
+ *         <groupId>eu.mulk.jgvariant</groupId>
+ *         <artifactId>jgvariant-bom</artifactId>
+ *         <version>0.1.4</version>
+ *         <type>pom</type>
+ *         <scope>import</scope>
+ *       </dependency>
+ *     </dependencies>
+ *
+ *     ...
+ *   </dependencyManagement>
+ *
+ *   <dependencies>
+ *     ...
+ *
+ *     <dependency>
+ *       <groupId>eu.mulk.jgvariant</groupId>
+ *       <artifactId>jgvariant-core</artifactId>
+ *     </dependency>
+ *     <dependency>
+ *       <groupId>eu.mulk.jgvariant</groupId>
+ *       <artifactId>jgvariant-ostree</artifactId>
+ *     </dependency>
+ *
+ *     ...
+ *   </dependencies>
+ *
+ *   ...
+ * </project>
+ * }</pre>
+ *
+ * <h3 id="sect-installation-gradle">Usage with Gradle</h3>
+ *
+ * <pre>{@code
+ * dependencies {
+ *   ...
+ *
+ *   implementation(platform("eu.mulk.jgvariant:jgvariant-bom:0.1.4")
+ *   implementation("eu.mulk.jgvariant:jgvariant-core")
+ *   implementation("eu.mulk.jgvariant:jgvariant-ostree")
+ *
+ *   ...
+ * }
+ * }</pre>
+ */
+module eu.mulk.jgvariant.gvariant {
+  requires transitive eu.mulk.jgvariant.core;
+  requires com.google.errorprone.annotations;
+  requires org.jetbrains.annotations;
+  requires org.apiguardian.api;
+
+  exports eu.mulk.jgvariant.ostree;
+}
diff --git a/jgvariant-ostree/src/test/java/eu/mulk/jgvariant/ostree/OstreeDecoderTest.java b/jgvariant-ostree/src/test/java/eu/mulk/jgvariant/ostree/OstreeDecoderTest.java
new file mode 100644
index 0000000..5e4d37c
--- /dev/null
+++ b/jgvariant-ostree/src/test/java/eu/mulk/jgvariant/ostree/OstreeDecoderTest.java
@@ -0,0 +1,104 @@
+package eu.mulk.jgvariant.ostree;
+
+import static org.junit.jupiter.api.Assertions.assertAll;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import com.adelean.inject.resources.junit.jupiter.GivenBinaryResource;
+import com.adelean.inject.resources.junit.jupiter.TestWithResources;
+import eu.mulk.jgvariant.core.Signature;
+import eu.mulk.jgvariant.core.Variant;
+import java.nio.ByteBuffer;
+import java.util.List;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+@TestWithResources
+class OstreeDecoderTest {
+
+  @GivenBinaryResource("/ostree/summary")
+  byte[] summaryBytes;
+
+  @GivenBinaryResource(
+      "/ostree/objects/3d/3b3329dca38871f29aeda1bf5854d76c707fa269759a899d0985c91815fe6f.commit")
+  byte[] commitBytes;
+
+  @GivenBinaryResource(
+      "/ostree/objects/14/c9b958ac59df4979095a3485b4da5a045fe8737ffdba8cfbfff24988b238f7.dirtree")
+  byte[] dirTreeBytes;
+
+  @GivenBinaryResource(
+      "/ostree/objects/48/cc6a2ecdab284b9d1e5b0e875c905866ff32f65ee1e857df0e691285d6f14c.dirmeta")
+  byte[] dirMetaBytes;
+
+  @GivenBinaryResource("/ostree/deltas/Mc/iDXVydLGaHpQCRyFFC0bLYU_9Bap+4G07jB1RRDVI/superblock")
+  byte[] deltaSuperblockBytes;
+
+  @GivenBinaryResource("/ostree/deltas/Mc/iDXVydLGaHpQCRyFFC0bLYU_9Bap+4G07jB1RRDVI/0")
+  byte[] deltaPartPayloadBytes;
+
+  @Test
+  void testTrivial() {
+    assertTrue(true);
+  }
+
+  @Test
+  void testSummaryDecoder() {
+    var decoder = Summary.decoder();
+    var summary = decoder.decode(ByteBuffer.wrap(summaryBytes));
+    assertAll(
+        () ->
+            assertEquals(
+                List.of(
+                    new Summary.Entry(
+                        "mulkos/1.x/amd64",
+                        new Summary.Entry.Value(
+                            214,
+                            Checksum.ofHex(
+                                "66ff167ff35ce87daac817447a9490a262ee75f095f017716a6eb1a9d9eb3350"),
+                            new Metadata(
+                                List.of(
+                                    new Metadata.Field(
+                                        "ostree.commit.timestamp",
+                                        new Variant(Signature.parse("t"), 1640537170L))))))),
+                summary.entries()));
+    // FIXME: check metadata field
+    System.out.println(summary);
+  }
+
+  @Test
+  void testCommitDecoder() {
+    var decoder = Commit.decoder();
+    var commit = decoder.decode(ByteBuffer.wrap(commitBytes));
+    System.out.println(commit);
+  }
+
+  @Test
+  void testDirTreeDecoder() {
+    var decoder = DirTree.decoder();
+    var dirTree = decoder.decode(ByteBuffer.wrap(dirTreeBytes));
+    System.out.println(dirTree);
+  }
+
+  @Test
+  void testDirMetaDecoder() {
+    var decoder = DirMeta.decoder();
+    var dirMeta = decoder.decode(ByteBuffer.wrap(dirMetaBytes));
+    System.out.println(dirMeta);
+  }
+
+  @Test
+  void testSuperblockDecoder() {
+    var decoder = DeltaSuperblock.decoder();
+    var deltaSuperblock = decoder.decode(ByteBuffer.wrap(deltaSuperblockBytes));
+    System.out.println(deltaSuperblock);
+  }
+
+  @Disabled("invalid: compression byte not taken into account")
+  @Test
+  void testPartPayloadDecoder() {
+    var decoder = DeltaPartPayload.decoder();
+    var deltaPartPayload = decoder.decode(ByteBuffer.wrap(deltaPartPayloadBytes));
+    System.out.println(deltaPartPayload);
+  }
+}
diff --git a/jgvariant-ostree/src/test/resources/ostree/.lock b/jgvariant-ostree/src/test/resources/ostree/.lock
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/jgvariant-ostree/src/test/resources/ostree/.lock
diff --git a/jgvariant-ostree/src/test/resources/ostree/config b/jgvariant-ostree/src/test/resources/ostree/config
new file mode 100644
index 0000000..15694aa
--- /dev/null
+++ b/jgvariant-ostree/src/test/resources/ostree/config
@@ -0,0 +1,4 @@
+[core]
+repo_version=1
+mode=bare
+indexed-deltas=true
diff --git a/jgvariant-ostree/src/test/resources/ostree/delta-indexes/Mc/iDXVydLGaHpQCRyFFC0bLYU_9Bap+4G07jB1RRDVI.index b/jgvariant-ostree/src/test/resources/ostree/delta-indexes/Mc/iDXVydLGaHpQCRyFFC0bLYU_9Bap+4G07jB1RRDVI.index
new file mode 100644
index 0000000..455b34c
--- /dev/null
+++ b/jgvariant-ostree/src/test/resources/ostree/delta-indexes/Mc/iDXVydLGaHpQCRyFFC0bLYU_9Bap+4G07jB1RRDVI.index
Binary files differ
diff --git a/jgvariant-ostree/src/test/resources/ostree/delta-indexes/PT/szKdyjiHHymu2hv1hU12xwf6JpdZqJnQmFyRgV_m8.index b/jgvariant-ostree/src/test/resources/ostree/delta-indexes/PT/szKdyjiHHymu2hv1hU12xwf6JpdZqJnQmFyRgV_m8.index
new file mode 100644
index 0000000..4b44198
--- /dev/null
+++ b/jgvariant-ostree/src/test/resources/ostree/delta-indexes/PT/szKdyjiHHymu2hv1hU12xwf6JpdZqJnQmFyRgV_m8.index
Binary files differ
diff --git a/jgvariant-ostree/src/test/resources/ostree/delta-indexes/Zv/8Wf_Nc6H2qyBdEepSQomLudfCV8Bdxam6xqdnrM1A.index b/jgvariant-ostree/src/test/resources/ostree/delta-indexes/Zv/8Wf_Nc6H2qyBdEepSQomLudfCV8Bdxam6xqdnrM1A.index
new file mode 100644
index 0000000..2ff3e34
--- /dev/null
+++ b/jgvariant-ostree/src/test/resources/ostree/delta-indexes/Zv/8Wf_Nc6H2qyBdEepSQomLudfCV8Bdxam6xqdnrM1A.index
Binary files differ
diff --git a/jgvariant-ostree/src/test/resources/ostree/deltas/Mc/iDXVydLGaHpQCRyFFC0bLYU_9Bap+4G07jB1RRDVI-PTszKdyjiHHymu2hv1hU12xwf6JpdZqJnQmFyRgV_m8/0 b/jgvariant-ostree/src/test/resources/ostree/deltas/Mc/iDXVydLGaHpQCRyFFC0bLYU_9Bap+4G07jB1RRDVI-PTszKdyjiHHymu2hv1hU12xwf6JpdZqJnQmFyRgV_m8/0
new file mode 100644
index 0000000..8fbcd13
--- /dev/null
+++ b/jgvariant-ostree/src/test/resources/ostree/deltas/Mc/iDXVydLGaHpQCRyFFC0bLYU_9Bap+4G07jB1RRDVI-PTszKdyjiHHymu2hv1hU12xwf6JpdZqJnQmFyRgV_m8/0
Binary files differ
diff --git a/jgvariant-ostree/src/test/resources/ostree/deltas/Mc/iDXVydLGaHpQCRyFFC0bLYU_9Bap+4G07jB1RRDVI-PTszKdyjiHHymu2hv1hU12xwf6JpdZqJnQmFyRgV_m8/superblock b/jgvariant-ostree/src/test/resources/ostree/deltas/Mc/iDXVydLGaHpQCRyFFC0bLYU_9Bap+4G07jB1RRDVI-PTszKdyjiHHymu2hv1hU12xwf6JpdZqJnQmFyRgV_m8/superblock
new file mode 100644
index 0000000..24b2739
--- /dev/null
+++ b/jgvariant-ostree/src/test/resources/ostree/deltas/Mc/iDXVydLGaHpQCRyFFC0bLYU_9Bap+4G07jB1RRDVI-PTszKdyjiHHymu2hv1hU12xwf6JpdZqJnQmFyRgV_m8/superblock
Binary files differ
diff --git a/jgvariant-ostree/src/test/resources/ostree/deltas/Mc/iDXVydLGaHpQCRyFFC0bLYU_9Bap+4G07jB1RRDVI/0 b/jgvariant-ostree/src/test/resources/ostree/deltas/Mc/iDXVydLGaHpQCRyFFC0bLYU_9Bap+4G07jB1RRDVI/0
new file mode 100644
index 0000000..86a5de4
--- /dev/null
+++ b/jgvariant-ostree/src/test/resources/ostree/deltas/Mc/iDXVydLGaHpQCRyFFC0bLYU_9Bap+4G07jB1RRDVI/0
Binary files differ
diff --git a/jgvariant-ostree/src/test/resources/ostree/deltas/Mc/iDXVydLGaHpQCRyFFC0bLYU_9Bap+4G07jB1RRDVI/superblock b/jgvariant-ostree/src/test/resources/ostree/deltas/Mc/iDXVydLGaHpQCRyFFC0bLYU_9Bap+4G07jB1RRDVI/superblock
new file mode 100644
index 0000000..6a8ea75
--- /dev/null
+++ b/jgvariant-ostree/src/test/resources/ostree/deltas/Mc/iDXVydLGaHpQCRyFFC0bLYU_9Bap+4G07jB1RRDVI/superblock
Binary files differ
diff --git a/jgvariant-ostree/src/test/resources/ostree/deltas/PT/szKdyjiHHymu2hv1hU12xwf6JpdZqJnQmFyRgV_m8-Zv8Wf_Nc6H2qyBdEepSQomLudfCV8Bdxam6xqdnrM1A/0 b/jgvariant-ostree/src/test/resources/ostree/deltas/PT/szKdyjiHHymu2hv1hU12xwf6JpdZqJnQmFyRgV_m8-Zv8Wf_Nc6H2qyBdEepSQomLudfCV8Bdxam6xqdnrM1A/0
new file mode 100644
index 0000000..483db33
--- /dev/null
+++ b/jgvariant-ostree/src/test/resources/ostree/deltas/PT/szKdyjiHHymu2hv1hU12xwf6JpdZqJnQmFyRgV_m8-Zv8Wf_Nc6H2qyBdEepSQomLudfCV8Bdxam6xqdnrM1A/0
Binary files differ
diff --git a/jgvariant-ostree/src/test/resources/ostree/deltas/PT/szKdyjiHHymu2hv1hU12xwf6JpdZqJnQmFyRgV_m8-Zv8Wf_Nc6H2qyBdEepSQomLudfCV8Bdxam6xqdnrM1A/superblock b/jgvariant-ostree/src/test/resources/ostree/deltas/PT/szKdyjiHHymu2hv1hU12xwf6JpdZqJnQmFyRgV_m8-Zv8Wf_Nc6H2qyBdEepSQomLudfCV8Bdxam6xqdnrM1A/superblock
new file mode 100644
index 0000000..219c92a
--- /dev/null
+++ b/jgvariant-ostree/src/test/resources/ostree/deltas/PT/szKdyjiHHymu2hv1hU12xwf6JpdZqJnQmFyRgV_m8-Zv8Wf_Nc6H2qyBdEepSQomLudfCV8Bdxam6xqdnrM1A/superblock
Binary files differ
diff --git a/jgvariant-ostree/src/test/resources/ostree/objects/14/c9b958ac59df4979095a3485b4da5a045fe8737ffdba8cfbfff24988b238f7.dirtree b/jgvariant-ostree/src/test/resources/ostree/objects/14/c9b958ac59df4979095a3485b4da5a045fe8737ffdba8cfbfff24988b238f7.dirtree
new file mode 100644
index 0000000..8f4b074
--- /dev/null
+++ b/jgvariant-ostree/src/test/resources/ostree/objects/14/c9b958ac59df4979095a3485b4da5a045fe8737ffdba8cfbfff24988b238f7.dirtree
Binary files differ
diff --git a/jgvariant-ostree/src/test/resources/ostree/objects/15/87cb76cddd6ecdd5830a0f218d6ba60a95e79643ed8764ad62cf18e62a0b59.file b/jgvariant-ostree/src/test/resources/ostree/objects/15/87cb76cddd6ecdd5830a0f218d6ba60a95e79643ed8764ad62cf18e62a0b59.file
new file mode 100644
index 0000000..3987f9c
--- /dev/null
+++ b/jgvariant-ostree/src/test/resources/ostree/objects/15/87cb76cddd6ecdd5830a0f218d6ba60a95e79643ed8764ad62cf18e62a0b59.file
@@ -0,0 +1 @@
+version 1.1
diff --git a/jgvariant-ostree/src/test/resources/ostree/objects/31/c8835d5c9d2c6687a50091c85142d1b2d853ff416a9fb81b4ee30754510d52.commit b/jgvariant-ostree/src/test/resources/ostree/objects/31/c8835d5c9d2c6687a50091c85142d1b2d853ff416a9fb81b4ee30754510d52.commit
new file mode 100644
index 0000000..bcd2731
--- /dev/null
+++ b/jgvariant-ostree/src/test/resources/ostree/objects/31/c8835d5c9d2c6687a50091c85142d1b2d853ff416a9fb81b4ee30754510d52.commit
Binary files differ
diff --git a/jgvariant-ostree/src/test/resources/ostree/objects/3d/3b3329dca38871f29aeda1bf5854d76c707fa269759a899d0985c91815fe6f.commit b/jgvariant-ostree/src/test/resources/ostree/objects/3d/3b3329dca38871f29aeda1bf5854d76c707fa269759a899d0985c91815fe6f.commit
new file mode 100644
index 0000000..c6ab7dc
--- /dev/null
+++ b/jgvariant-ostree/src/test/resources/ostree/objects/3d/3b3329dca38871f29aeda1bf5854d76c707fa269759a899d0985c91815fe6f.commit
Binary files differ
diff --git a/jgvariant-ostree/src/test/resources/ostree/objects/46/22b8c6cdcb4cbe29b8f79641f0304b30066596194b6b32981e46422d12c282.dirtree b/jgvariant-ostree/src/test/resources/ostree/objects/46/22b8c6cdcb4cbe29b8f79641f0304b30066596194b6b32981e46422d12c282.dirtree
new file mode 100644
index 0000000..196a4bc
--- /dev/null
+++ b/jgvariant-ostree/src/test/resources/ostree/objects/46/22b8c6cdcb4cbe29b8f79641f0304b30066596194b6b32981e46422d12c282.dirtree
Binary files differ
diff --git a/jgvariant-ostree/src/test/resources/ostree/objects/48/cc6a2ecdab284b9d1e5b0e875c905866ff32f65ee1e857df0e691285d6f14c.dirmeta b/jgvariant-ostree/src/test/resources/ostree/objects/48/cc6a2ecdab284b9d1e5b0e875c905866ff32f65ee1e857df0e691285d6f14c.dirmeta
new file mode 100644
index 0000000..4c76b11
--- /dev/null
+++ b/jgvariant-ostree/src/test/resources/ostree/objects/48/cc6a2ecdab284b9d1e5b0e875c905866ff32f65ee1e857df0e691285d6f14c.dirmeta
Binary files differ
diff --git a/jgvariant-ostree/src/test/resources/ostree/objects/66/ff167ff35ce87daac817447a9490a262ee75f095f017716a6eb1a9d9eb3350.commit b/jgvariant-ostree/src/test/resources/ostree/objects/66/ff167ff35ce87daac817447a9490a262ee75f095f017716a6eb1a9d9eb3350.commit
new file mode 100644
index 0000000..45aaf5f
--- /dev/null
+++ b/jgvariant-ostree/src/test/resources/ostree/objects/66/ff167ff35ce87daac817447a9490a262ee75f095f017716a6eb1a9d9eb3350.commit
Binary files differ
diff --git a/jgvariant-ostree/src/test/resources/ostree/objects/73/4ed4332dd46f0ec95395ea6b404f9a19eacfc74de9100e19842cbe9b960d0a.dirtree b/jgvariant-ostree/src/test/resources/ostree/objects/73/4ed4332dd46f0ec95395ea6b404f9a19eacfc74de9100e19842cbe9b960d0a.dirtree
new file mode 100644
index 0000000..d7e9e1f
--- /dev/null
+++ b/jgvariant-ostree/src/test/resources/ostree/objects/73/4ed4332dd46f0ec95395ea6b404f9a19eacfc74de9100e19842cbe9b960d0a.dirtree
Binary files differ
diff --git a/jgvariant-ostree/src/test/resources/ostree/objects/76/766e52e4a737646788570c8c44a3cf70b17ece81ce4c9b44f4f5869f138e8d.dirtree b/jgvariant-ostree/src/test/resources/ostree/objects/76/766e52e4a737646788570c8c44a3cf70b17ece81ce4c9b44f4f5869f138e8d.dirtree
new file mode 100644
index 0000000..7a4ee69
--- /dev/null
+++ b/jgvariant-ostree/src/test/resources/ostree/objects/76/766e52e4a737646788570c8c44a3cf70b17ece81ce4c9b44f4f5869f138e8d.dirtree
Binary files differ
diff --git a/jgvariant-ostree/src/test/resources/ostree/objects/84/2d6670d6c0d116a9723bd4329cacec722079177e886bd833f182500b879bfe.dirtree b/jgvariant-ostree/src/test/resources/ostree/objects/84/2d6670d6c0d116a9723bd4329cacec722079177e886bd833f182500b879bfe.dirtree
new file mode 100644
index 0000000..cf37b48
--- /dev/null
+++ b/jgvariant-ostree/src/test/resources/ostree/objects/84/2d6670d6c0d116a9723bd4329cacec722079177e886bd833f182500b879bfe.dirtree
Binary files differ
diff --git a/jgvariant-ostree/src/test/resources/ostree/objects/88/534f940aa700c0f5d470c86f699179bf11fe486f3a8514f56a9703355d761b.dirtree b/jgvariant-ostree/src/test/resources/ostree/objects/88/534f940aa700c0f5d470c86f699179bf11fe486f3a8514f56a9703355d761b.dirtree
new file mode 100644
index 0000000..1005c58
--- /dev/null
+++ b/jgvariant-ostree/src/test/resources/ostree/objects/88/534f940aa700c0f5d470c86f699179bf11fe486f3a8514f56a9703355d761b.dirtree
Binary files differ
diff --git a/jgvariant-ostree/src/test/resources/ostree/objects/8f/576d91bd42c0d7682000271d40aa27866537d477220b2b97f536ada9da0d7c.file b/jgvariant-ostree/src/test/resources/ostree/objects/8f/576d91bd42c0d7682000271d40aa27866537d477220b2b97f536ada9da0d7c.file
new file mode 100644
index 0000000..26af6a8
--- /dev/null
+++ b/jgvariant-ostree/src/test/resources/ostree/objects/8f/576d91bd42c0d7682000271d40aa27866537d477220b2b97f536ada9da0d7c.file
@@ -0,0 +1 @@
+zero
diff --git a/jgvariant-ostree/src/test/resources/ostree/objects/92/6fd84a0da031392cd97a07948238946894979695a25a3dd9da5fe3f719c98a.file b/jgvariant-ostree/src/test/resources/ostree/objects/92/6fd84a0da031392cd97a07948238946894979695a25a3dd9da5fe3f719c98a.file
new file mode 100644
index 0000000..f719efd
--- /dev/null
+++ b/jgvariant-ostree/src/test/resources/ostree/objects/92/6fd84a0da031392cd97a07948238946894979695a25a3dd9da5fe3f719c98a.file
@@ -0,0 +1 @@
+two
diff --git a/jgvariant-ostree/src/test/resources/ostree/objects/c9/af809d0778808c3b5f38bbac35d88da150cbb4cf3929b2e5ed2f9828080e08.file b/jgvariant-ostree/src/test/resources/ostree/objects/c9/af809d0778808c3b5f38bbac35d88da150cbb4cf3929b2e5ed2f9828080e08.file
new file mode 100644
index 0000000..5626abf
--- /dev/null
+++ b/jgvariant-ostree/src/test/resources/ostree/objects/c9/af809d0778808c3b5f38bbac35d88da150cbb4cf3929b2e5ed2f9828080e08.file
@@ -0,0 +1 @@
+one
diff --git a/jgvariant-ostree/src/test/resources/ostree/objects/cf/ff1525790c356cf268894ce6cabda5c5aa6fabc8b2becb39faf2d195f8ebaa.dirtree b/jgvariant-ostree/src/test/resources/ostree/objects/cf/ff1525790c356cf268894ce6cabda5c5aa6fabc8b2becb39faf2d195f8ebaa.dirtree
new file mode 100644
index 0000000..b568e92
--- /dev/null
+++ b/jgvariant-ostree/src/test/resources/ostree/objects/cf/ff1525790c356cf268894ce6cabda5c5aa6fabc8b2becb39faf2d195f8ebaa.dirtree
Binary files differ
diff --git a/jgvariant-ostree/src/test/resources/ostree/objects/d3/365463d0acd8eda475a874a01dae6b7f20b5ce8864e36fa27d485a7b821d6d.file b/jgvariant-ostree/src/test/resources/ostree/objects/d3/365463d0acd8eda475a874a01dae6b7f20b5ce8864e36fa27d485a7b821d6d.file
new file mode 100644
index 0000000..7c8de03
--- /dev/null
+++ b/jgvariant-ostree/src/test/resources/ostree/objects/d3/365463d0acd8eda475a874a01dae6b7f20b5ce8864e36fa27d485a7b821d6d.file
@@ -0,0 +1 @@
+version 1.0
diff --git a/jgvariant-ostree/src/test/resources/ostree/objects/df/f640414799416e7a874eaec41471905adaf18b694ec537fb99e662626864f3.file b/jgvariant-ostree/src/test/resources/ostree/objects/df/f640414799416e7a874eaec41471905adaf18b694ec537fb99e662626864f3.file
new file mode 100644
index 0000000..ef7df68
--- /dev/null
+++ b/jgvariant-ostree/src/test/resources/ostree/objects/df/f640414799416e7a874eaec41471905adaf18b694ec537fb99e662626864f3.file
@@ -0,0 +1 @@
+version 1.2
diff --git a/jgvariant-ostree/src/test/resources/ostree/objects/e0/83c4299293b067841a51af2c9156dc3b35f95af27773147b0458934ca37d4f.file b/jgvariant-ostree/src/test/resources/ostree/objects/e0/83c4299293b067841a51af2c9156dc3b35f95af27773147b0458934ca37d4f.file
new file mode 100644
index 0000000..2bdf67a
--- /dev/null
+++ b/jgvariant-ostree/src/test/resources/ostree/objects/e0/83c4299293b067841a51af2c9156dc3b35f95af27773147b0458934ca37d4f.file
@@ -0,0 +1 @@
+three
diff --git a/jgvariant-ostree/src/test/resources/ostree/refs/heads/mulkos/1.x/amd64 b/jgvariant-ostree/src/test/resources/ostree/refs/heads/mulkos/1.x/amd64
new file mode 100644
index 0000000..82901ea
--- /dev/null
+++ b/jgvariant-ostree/src/test/resources/ostree/refs/heads/mulkos/1.x/amd64
@@ -0,0 +1 @@
+66ff167ff35ce87daac817447a9490a262ee75f095f017716a6eb1a9d9eb3350
diff --git a/jgvariant-ostree/src/test/resources/ostree/summary b/jgvariant-ostree/src/test/resources/ostree/summary
new file mode 100644
index 0000000..4bd06af
--- /dev/null
+++ b/jgvariant-ostree/src/test/resources/ostree/summary
Binary files differ
