<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Mythos on Mythos — Your stories, your hearth</title><link>https://mythos.darkspar.com/</link><description>Recent content in Mythos on Mythos — Your stories, your hearth</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 28 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://mythos.darkspar.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Getting Started</title><link>https://mythos.darkspar.com/docs/getting-started/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mythos.darkspar.com/docs/getting-started/</guid><description>&lt;p&gt;This guide gets you from a fresh install to playing your first movie. We&amp;rsquo;ll use Docker, but every other install path lands in the same place.&lt;/p&gt;
&lt;h2 id="1-run-the-server"&gt;1. Run the server&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run -d &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --name mythos &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -p 7878:7878 &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -v /srv/media:/media:ro &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -v mythos-data:/var/lib/mythos &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ghcr.io/dark-spar/mythos:latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;A couple of things to notice. The media volume is mounted &lt;strong&gt;read-only&lt;/strong&gt; — Mythos never writes to your library. The data volume is where Mythos keeps its own database, posters, and transcoded segments.&lt;/p&gt;</description></item><item><title>Configuration</title><link>https://mythos.darkspar.com/docs/configuration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mythos.darkspar.com/docs/configuration/</guid><description>&lt;p&gt;Mythos reads its configuration from &lt;code&gt;config.toml&lt;/code&gt;. Every setting also has an environment-variable equivalent, prefixed with &lt;code&gt;MYTHOS_&lt;/code&gt;, which takes precedence — useful in containerized deployments.&lt;/p&gt;
&lt;h2 id="a-minimal-config"&gt;A minimal config&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;server&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;host&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;0.0.0.0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;port&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;7878&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;database&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;url&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;sqlite:///var/lib/mythos/mythos.db&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="nx"&gt;libraries&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Films&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;path&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;/media/films&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;kind&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;movies&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="nx"&gt;libraries&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Shows&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;path&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;/media/shows&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;kind&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;tv&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="server"&gt;Server&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Key&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;host&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;0.0.0.0&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Address to bind&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;port&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;7878&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;TCP port&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;data_dir&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;/var/lib/mythos&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Where Mythos stores its state&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;tls.cert&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;em&gt;(none)&lt;/em&gt;&lt;/td&gt;
 &lt;td&gt;Path to a TLS certificate. Enables HTTPS.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;tls.key&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;em&gt;(none)&lt;/em&gt;&lt;/td&gt;
 &lt;td&gt;Path to the private key&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="database"&gt;Database&lt;/h2&gt;
&lt;p&gt;Mythos uses SQLite by default — fast, transactional, and zero-administration for home use. PostgreSQL is supported for households that want shared deployments.&lt;/p&gt;</description></item><item><title>Library Layout</title><link>https://mythos.darkspar.com/docs/library-layout/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mythos.darkspar.com/docs/library-layout/</guid><description>&lt;p&gt;Mythos infers as much as it can from filenames and folder structure. The conventions below are the same ones used by Plex, Jellyfin, and Emby — so an existing library should work out of the box.&lt;/p&gt;
&lt;h2 id="movies"&gt;Movies&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;/media/films/
├── The Princess Bride (1987)/
│ ├── The Princess Bride (1987).mkv
│ └── poster.jpg
├── My Neighbor Totoro (1988)/
│ └── My Neighbor Totoro (1988).mp4
└── Spirited Away (2001)/
 ├── Spirited Away (2001).mkv
 └── Spirited Away (2001).en.srt
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Each film lives in its own folder, named &lt;code&gt;Title (Year)&lt;/code&gt;. External subtitles, posters, and trailers picked up automatically.&lt;/p&gt;</description></item><item><title>Architecture</title><link>https://mythos.darkspar.com/docs/architecture/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mythos.darkspar.com/docs/architecture/</guid><description>&lt;p&gt;Mythos is a Cargo workspace. The crates split along clear seams so each piece does one thing and stays small.&lt;/p&gt;
&lt;h2 id="the-crates"&gt;The crates&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Crate&lt;/th&gt;
 &lt;th&gt;Responsibility&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;mythos-core&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Domain types, errors, configuration&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;mythos-db&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;SQLite/Postgres access via &lt;code&gt;sqlx&lt;/code&gt;, migrations&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;mythos-scan&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Filesystem watcher, library indexer&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;mythos-meta&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Metadata fetchers (TMDB, MusicBrainz, local NFO)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;mythos-stream&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Transcoding pipeline, HLS muxer, hardware acceleration&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;mythos-api&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;HTTP API, authentication, RBAC&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;mythos-server&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Binary that wires it all together with Axum&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="the-runtime"&gt;The runtime&lt;/h2&gt;
&lt;p&gt;A single Tokio runtime hosts everything. The HTTP server, the library scanner, and the transcoding workers share the same scheduler — which keeps overhead low and lets us coordinate work without crossing process boundaries.&lt;/p&gt;</description></item><item><title>v0.1.0 — The first release</title><link>https://mythos.darkspar.com/blog/release-0-1-0/</link><pubDate>Tue, 28 Apr 2026 00:00:00 +0000</pubDate><guid>https://mythos.darkspar.com/blog/release-0-1-0/</guid><description>&lt;p&gt;The first cut is here. It&amp;rsquo;s small and a little rough around the edges, but it streams a movie, scans a library, and runs quietly on a Pi 5 — which were the three things we had to get right before we&amp;rsquo;d put a version number on it.&lt;/p&gt;
&lt;h2 id="highlights"&gt;Highlights&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Library scanning.&lt;/strong&gt; Movies, TV, music. Handles the standard naming conventions, picks up sidecar art and subtitles, and watches the directory for changes after the initial scan.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Direct play &amp;amp; transcoding.&lt;/strong&gt; Picks the right path automatically. Transcoding uses VAAPI on Intel, NVENC on NVIDIA, and falls back to libx264 if no GPU is available.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Web UI.&lt;/strong&gt; Built with SvelteKit. Loads under 200ms on first paint, adapts to large TVs and small phones.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Single binary.&lt;/strong&gt; ~12 MB, statically linked, no runtime.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="known-limits-in-01"&gt;Known limits in 0.1&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;No clustering, no multi-server. One Mythos, one home.&lt;/li&gt;
&lt;li&gt;No mobile apps yet — the web UI is responsive, but a native iOS/Android pair is on the roadmap.&lt;/li&gt;
&lt;li&gt;Live TV is unimplemented. We want it; it&amp;rsquo;s the headline feature for 0.3.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="whats-next"&gt;What&amp;rsquo;s next&lt;/h2&gt;
&lt;p&gt;We&amp;rsquo;re already on 0.2. The headline change is &lt;strong&gt;collaborative watch sessions&lt;/strong&gt; — the ability for two screens in two homes to play the same film, in sync, with a shared chat. We&amp;rsquo;ve wanted it for a long time. It&amp;rsquo;s nearly ready.&lt;/p&gt;</description></item><item><title>Hello, Mythos</title><link>https://mythos.darkspar.com/blog/hello-mythos/</link><pubDate>Sun, 12 Apr 2026 00:00:00 +0000</pubDate><guid>https://mythos.darkspar.com/blog/hello-mythos/</guid><description>&lt;p&gt;There are already good media servers in the world. Plex, Jellyfin, Emby — each has earned a place on home servers everywhere. So why a new one?&lt;/p&gt;
&lt;p&gt;The honest answer is &lt;em&gt;feel&lt;/em&gt;. The software that lives in our living rooms gets touched on cold winter Sundays, summer afternoons, late nights after the kids are asleep. It should feel calm, warm, and trustworthy. It should never make you fight it. It should never feel like work.&lt;/p&gt;</description></item><item><title>Download</title><link>https://mythos.darkspar.com/download/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mythos.darkspar.com/download/</guid><description>&lt;p&gt;Pick the path that fits your setup. Mythos ships as a single static binary, a Docker image, or source you can build yourself.&lt;/p&gt;
&lt;h2 id="docker"&gt;Docker&lt;/h2&gt;
&lt;p&gt;The fastest way to try Mythos. Mounts your media directory read-only and exposes the web UI on port 7878.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run -d &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --name mythos &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -p 7878:7878 &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -v /path/to/media:/media:ro &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -v mythos-data:/var/lib/mythos &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ghcr.io/dark-spar/mythos:latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then open &lt;code&gt;http://localhost:7878&lt;/code&gt; and walk through the first-run setup.&lt;/p&gt;
&lt;h2 id="pre-built-binary"&gt;Pre-built binary&lt;/h2&gt;
&lt;p&gt;Static, single-file binaries for Linux, macOS, and Windows. No runtime, no dependencies.&lt;/p&gt;</description></item></channel></rss>