Skip to main content

pumice-plugin-immich

A pumice-server publish plugin that resolves harang-immich's ![immich:profileId/assetId|altText] embed syntax on published pages: fetches the photo from Immich and inlines it as a base64 data: URI, so a published page is fully self-contained (no separate request back to Immich needed to see it).

See pumice-server's docs/PLUGIN_DEVELOPMENT.md for the plugin contract this implements.

Why a separate credential

harang-immich (the Obsidian plugin) authenticates to Immich using a pre-issued API key that lives only in Obsidian's local secretStorage — it's never synced, so pumice-server has no way to use it. This plugin is instead configured with its own, separately-issued Immich API key entered directly on the server (via pumice-server's Publish tab → plugin settings), independent of whatever the Obsidian client is doing.

Config

Declares CONFIG_FIELDS for pumice-server's generic per-vault plugin config store — one entry per Immich profile, keyed by the same profileId harang-immich's own data.json uses. This is a general mechanism: any plugin can declare whatever config keys/types it needs this way, and pumice-server's Publish tab renders a real labeled form from that schema without knowing anything about what the fields mean. pumice-plugin-immich declares just two:

  • server_url — the Immich server's base URL
  • token — an Immich API key (Immich has no login endpoint for this; API keys are issued directly in Immich's own account settings and sent as the x-api-key header, same as the Obsidian client does)

Autofill

server_url and a stable per-profile id aren't secrets, and harang-immich's own .obsidian/plugins/harang-immich/data.json already has both (only the real API key lives in secretStorage, out of reach). Declares AUTOFILL_PATHS/suggest_autofill so pumice-server's settings modal can read that already-synced file and offer each profile found there as a one-click fill-in — the vault owner still has to type the token themselves.

Installing into pumice-server

# pumice-server's pyproject.toml
[tool.uv.sources]
pumice-plugin-immich = { path = "../obsidian-plugin/pumice-plugin-immich", editable = true }
uv add pumice-plugin-immich

Development

uv sync
uv run pytest

Release files for pumice-plugin-immich 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pumice-plugin-immich 0.1.0
File Size Uploaded
pumice_plugin_immich-0.1.0.tar.gz 16.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pumice-plugin-immich 0.1.0
File Interpreter ABI Platform
pumice_plugin_immich-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 21.7 kB

Release files / pumice_plugin_immich-0.1.0.tar.gz

Download URL pumice_plugin_immich-0.1.0.tar.gz
Size 16.8 kB
Tags Source
SHA-256 checksum
How to use checksums
3adf318d22421240ecf10f4a1139adb4e4f9295f02fc7ed5d4e2ff510ca6b85e
BLAKE2b-256 checksum
How to use checksums
3e70e40963d97c475654c24f00beca9a3b6b7be3ced6dc3db8a83d6a686ac2d9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / pumice_plugin_immich-0.1.0-py3-none-any.whl

Download URL pumice_plugin_immich-0.1.0-py3-none-any.whl
Size 4.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
080656806f81c84c7eb950cffe866153bbb2a89e02db228d7ed033e19ed3242f
BLAKE2b-256 checksum
How to use checksums
6e48cfa1be97a27a3b3d10b56acac37062610bd24beb63e04eab8a64d96a4e48
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page