Index: /applications/editors/josm/plugins/pmtiles/src/main/java/org/openstreetmap/josm/plugins/pmtiles/PMTilesPlugin.java
===================================================================
--- /applications/editors/josm/plugins/pmtiles/src/main/java/org/openstreetmap/josm/plugins/pmtiles/PMTilesPlugin.java	(revision 36467)
+++ /applications/editors/josm/plugins/pmtiles/src/main/java/org/openstreetmap/josm/plugins/pmtiles/PMTilesPlugin.java	(revision 36468)
@@ -4,8 +4,13 @@
 import org.openstreetmap.josm.actions.ExtensionFileFilter;
 import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.io.session.SessionReader;
+import org.openstreetmap.josm.io.session.SessionWriter;
 import org.openstreetmap.josm.plugins.Plugin;
 import org.openstreetmap.josm.plugins.PluginInformation;
 import org.openstreetmap.josm.plugins.pmtiles.actions.downloadtasks.DownloadPMTilesTask;
 import org.openstreetmap.josm.plugins.pmtiles.gui.io.importexport.PMTilesFileImporter;
+import org.openstreetmap.josm.plugins.pmtiles.gui.io.session.PMTilesImageSessionExporter;
+import org.openstreetmap.josm.plugins.pmtiles.gui.io.session.PMTilesImageSessionImporter;
+import org.openstreetmap.josm.plugins.pmtiles.gui.layers.PMTilesImageLayer;
 
 /**
@@ -23,4 +28,8 @@
         ExtensionFileFilter.updateAllFormatsImporter();
         MainApplication.getMenu().openLocation.addDownloadTaskClass(DownloadPMTilesTask.class);
+
+        // Register session exporter and importer for PMTiles image layers
+        SessionWriter.registerSessionLayerExporter(PMTilesImageLayer.class, PMTilesImageSessionExporter.class);
+        SessionReader.registerSessionLayerImporter("pmtiles-image", PMTilesImageSessionImporter.class);
     }
 }
Index: /applications/editors/josm/plugins/pmtiles/src/main/java/org/openstreetmap/josm/plugins/pmtiles/gui/io/session/PMTilesImageSessionExporter.java
===================================================================
--- /applications/editors/josm/plugins/pmtiles/src/main/java/org/openstreetmap/josm/plugins/pmtiles/gui/io/session/PMTilesImageSessionExporter.java	(revision 36468)
+++ /applications/editors/josm/plugins/pmtiles/src/main/java/org/openstreetmap/josm/plugins/pmtiles/gui/io/session/PMTilesImageSessionExporter.java	(revision 36468)
@@ -0,0 +1,67 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.pmtiles.gui.io.session;
+
+import java.awt.Component;
+import java.awt.GridBagLayout;
+import java.io.IOException;
+
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.SwingConstants;
+
+import org.openstreetmap.josm.io.session.AbstractSessionExporter;
+import org.openstreetmap.josm.io.session.SessionWriter.ExportSupport;
+import org.openstreetmap.josm.plugins.pmtiles.gui.layers.PMTilesImageLayer;
+import org.openstreetmap.josm.tools.GBC;
+import org.w3c.dom.Element;
+
+/**
+ * Session exporter for {@link PMTilesImageLayer}.
+ * @since 36468
+ */
+public class PMTilesImageSessionExporter extends AbstractSessionExporter<PMTilesImageLayer> {
+
+    /**
+     * Constructs a new {@code PMTilesImageSessionExporter}.
+     * @param layer PMTiles image layer to export
+     */
+    public PMTilesImageSessionExporter(PMTilesImageLayer layer) {
+        super(layer);
+    }
+
+    @Override
+    public Component getExportPanel() {
+        final JPanel p = new JPanel(new GridBagLayout());
+        export.setSelected(true);
+        final JLabel lbl = new JLabel(layer.getName(), layer.getIcon(), SwingConstants.LEADING);
+        lbl.setToolTipText(layer.getToolTipText());
+        lbl.setLabelFor(export);
+        p.add(export, GBC.std());
+        p.add(lbl, GBC.std());
+        p.add(GBC.glue(1, 0), GBC.std().fill(GBC.HORIZONTAL));
+        return p;
+    }
+
+    @Override
+    public Element export(ExportSupport support) throws IOException {
+        Element layerElem = support.createElement("layer");
+        layerElem.setAttribute("type", "pmtiles-image");
+        layerElem.setAttribute("version", "0.1");
+
+        // Store the URI to the PMTiles file
+        Element fileElem = support.createElement("file");
+        String uri = layer.getInfo().header().location().toString();
+        fileElem.appendChild(support.createTextNode(uri));
+        layerElem.appendChild(fileElem);
+
+        // Store the layer name if different from default
+        String name = layer.getName();
+        if (name != null && !name.isEmpty()) {
+            Element nameElem = support.createElement("name");
+            nameElem.appendChild(support.createTextNode(name));
+            layerElem.appendChild(nameElem);
+        }
+
+        return layerElem;
+    }
+}
Index: /applications/editors/josm/plugins/pmtiles/src/main/java/org/openstreetmap/josm/plugins/pmtiles/gui/io/session/PMTilesImageSessionImporter.java
===================================================================
--- /applications/editors/josm/plugins/pmtiles/src/main/java/org/openstreetmap/josm/plugins/pmtiles/gui/io/session/PMTilesImageSessionImporter.java	(revision 36468)
+++ /applications/editors/josm/plugins/pmtiles/src/main/java/org/openstreetmap/josm/plugins/pmtiles/gui/io/session/PMTilesImageSessionImporter.java	(revision 36468)
@@ -0,0 +1,75 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.pmtiles.gui.io.session;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import org.openstreetmap.josm.gui.layer.Layer;
+import org.openstreetmap.josm.gui.progress.ProgressMonitor;
+import org.openstreetmap.josm.io.IllegalDataException;
+import org.openstreetmap.josm.io.session.SessionLayerImporter;
+import org.openstreetmap.josm.io.session.SessionReader.ImportSupport;
+import org.openstreetmap.josm.plugins.pmtiles.data.imagery.PMTilesImageryInfo;
+import org.openstreetmap.josm.plugins.pmtiles.gui.layers.PMTilesImageLayer;
+import org.openstreetmap.josm.plugins.pmtiles.lib.Header;
+import org.openstreetmap.josm.plugins.pmtiles.lib.PMTiles;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+
+/**
+ * Session importer for {@link PMTilesImageLayer}.
+ * @since 36468
+ */
+public class PMTilesImageSessionImporter implements SessionLayerImporter {
+
+    @Override
+    public Layer load(Element elem, ImportSupport support, ProgressMonitor progressMonitor) throws IOException, IllegalDataException {
+        // Check against session file XML schema version
+        String version = elem.getAttribute("version");
+        if (!"0.1".equals(version)) {
+            throw new IllegalDataException(tr("Version ''{0}'' of meta data for PMTiles layer is not supported. Expected: 0.1", version));
+        }
+
+        // Read the file URI
+        String fileUri = getChildText(elem, "file");
+        if (fileUri == null || fileUri.isEmpty()) {
+            throw new IllegalDataException(tr("Missing file URI in PMTiles session data"));
+        }
+
+        // Read optional name
+        String name = getChildText(elem, "name");
+
+        try {
+            URI uri = new URI(fileUri);
+            Header header = PMTiles.readHeader(uri);
+            PMTilesImageryInfo info = new PMTilesImageryInfo(header);
+            PMTilesImageLayer layer = new PMTilesImageLayer(info);
+
+            // Set custom name if provided
+            if (name != null && !name.isEmpty()) {
+                layer.setName(name);
+            }
+
+            return layer;
+        } catch (URISyntaxException e) {
+            throw new IllegalDataException(tr("Invalid PMTiles file URI: {0}", fileUri), e);
+        }
+    }
+
+    /**
+     * Get the text content of a child element with the given tag name.
+     * @param parent the parent element
+     * @param tagName the tag name to search for
+     * @return the text content, or null if not found
+     */
+    private static String getChildText(Element parent, String tagName) {
+        NodeList nodes = parent.getElementsByTagName(tagName);
+        if (nodes.getLength() > 0) {
+            return nodes.item(0).getTextContent();
+        }
+        return null;
+    }
+}
Index: /applications/editors/josm/plugins/pmtiles/src/main/java/org/openstreetmap/josm/plugins/pmtiles/gui/io/session/package-info.java
===================================================================
--- /applications/editors/josm/plugins/pmtiles/src/main/java/org/openstreetmap/josm/plugins/pmtiles/gui/io/session/package-info.java	(revision 36468)
+++ /applications/editors/josm/plugins/pmtiles/src/main/java/org/openstreetmap/josm/plugins/pmtiles/gui/io/session/package-info.java	(revision 36468)
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+/**
+ * Provides session support for PMTiles layers, allowing them to be saved and restored
+ * as part of JOSM session files (.jos/.joz).
+ */
+package org.openstreetmap.josm.plugins.pmtiles.gui.io.session;
