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 URLtoken— 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 thex-api-keyheader, 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)
| File | Size | Uploaded | |
|---|---|---|---|
| pumice_plugin_immich-0.1.0.tar.gz | 16.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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}
|