oriel
Turn any folder of Markdown into a beautiful website — instantly.
pip install oriel
oriel serve . # live site → http://127.0.0.1:18787
oriel build . # or freeze to ./dist to publish
Every Markdown file becomes a page, images become a gallery, and edits refresh the browser on their own. It looks like a publication, not a file listing — with no build step, no front matter, no config.
Why not MkDocs / markserv / GitHub?
| oriel | MkDocs · Quarto | markserv | GitHub | |
|---|---|---|---|---|
| No build, no config | ✅ | ❌ | ✅ | ✅ |
| Live on every refresh | ✅ | ~ | ✅ | ❌ |
| Looks like a publication | ✅ | ✅ | ❌ | ~ |
| Figures wall + dashboards | ✅ | ~ | ❌ | ❌ |
Obsidian [[wikilinks]] |
✅ | ❌ | ❌ | ❌ |
One pip install, static export |
✅ | ✅ | ❌ | — |
oriel is the middle that was missing: a tiny read-only server you keep running next to a folder.
What you get
📂 Any folder → a site. Loose Markdown at the top level and subfolders both show up; a root README.md is the home page; images become a gallery. Obsidian vaults and agent dumps work as-is.
✍️ Real Markdown. Syntax-highlighted code with copy buttons, KaTeX math in $…$ or \(…\), tables, an auto table-of-contents, and GitHub-style > [!NOTE] callouts.
🔗 Obsidian & agent-native. [[wikilinks]] / ![[embeds]] resolve, dated notes (YYYY-MM-DD_*.md) become a browsable journal, generated plots collect into a figures wall.
⚡ Live & self-contained. Edits auto-refresh the browser — no manual reload; KaTeX is cached locally so math works offline; light/dark themes with a toggle and six presets.
📊 Dashboards via plugins. Drop in an oriel_plugins.py for custom pages — the bundled example adds run-manifest and LLM-spend dashboards.
🚀 Publish anytime. oriel build freezes everything to static HTML — figures and KaTeX bundled, search still works (client-side index) — ready for GitHub Pages.
Publish (static export)
oriel build . # → ./dist, ready to deploy
oriel build docs --base /oriel # subpath hosting (e.g. project GitHub Pages)
URLs stay identical, math renders offline (bundled KaTeX), and search keeps working via a client-side index. A .nojekyll ships for GitHub Pages.
Configure (optional)
Zero config works. To customize, drop an oriel.toml at the folder root:
title = "My Notes"
preset = "ocean" # terracotta · newsprint · forest · ocean · plum · rose
landing = "guide/intro.md"
…or pick a look from the CLI: oriel serve . --theme forest. Every key is in examples/oriel.toml and the docs.
Plugins
A plugin is a register(site) function that adds pages:
def register(site):
@site.page("/status", "status")
def status(): # return an HTML body; oriel adds the chrome
return site.markdown((site.root / "STATUS.md").read_text())
See examples/oriel_plugins.py for a real one.
Security
oriel is a read-only viewer with a shared-secret key — for a personal machine, an SSH tunnel, or behind a reverse proxy, not a public unauthed service on plain HTTP. See SECURITY.md.
Develop
pip install -e ".[dev]"
make dev # serve ./docs locally (theme gallery, live reload)
make test # pytest
make lint # ruff
make help lists every target. The full docs in docs/ are themselves an oriel site.
An oriel is a bay window that projects out from a wall for a wider view — a window onto a folder.
MIT — see LICENSE.
Metadata
Release files for oriel 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 | Provenance | Actions |
|---|---|---|---|---|
| oriel-0.1.0.tar.gz | 172.2 kB | Without provenance | Details for oriel-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| oriel-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for oriel-0.1.0-py3-none-any.whl |
Total release size: 219.9 kB
Release files / oriel-0.1.0.tar.gz
| Download URL | oriel-0.1.0.tar.gz |
|---|---|
| Size | 172.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b89091bffc6329c4b8ac47344d9bd6bf0d186d23ce04454503f7126f7ec6d58a
|
|
BLAKE2b-256 checksum How to use checksums |
e7715dfb6b6329520be89e0c0cfcaad70466701c6553844c78973aa63f6530c8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.30 {"installer":{"name":"uv","version":"0.11.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / oriel-0.1.0-py3-none-any.whl
| Download URL | oriel-0.1.0-py3-none-any.whl |
|---|---|
| Size | 47.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3ba2cdfb49f4762502534ffe9cf895dee67d49b570a30a6a22acb8252a2fa793
|
|
BLAKE2b-256 checksum How to use checksums |
b0761ff2002512e6d25207b20353d506242830b49591a711c8d5e0ded55ffc9e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.30 {"installer":{"name":"uv","version":"0.11.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for oriel 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.