Features
Thoughtful where it matters.
Lattice is an extensible platform. Here is what it does for you as the administrator, for the people you share with, and underneath, where the speed comes from.
Ask Lattice
Aunt Ginny is no longer your tech support nightmare.
Ask opens with the question your users would otherwise call you about: “Walk me through getting this set up on my phone and Apple TV.” Lattice ships the scripts and steps for your server, so the people you share with set themselves up and fix their own problems.
- Set up, start to finish (beta). Pre-built, step-by-step guides for iPhone and Apple TV: join your server, install the player, connect it. At their pace, without you on the phone.
- Fix it themselves (beta). “It keeps buffering.” “It says it can’t connect.” “This episode looks wrong.” Ask checks the server and their connection, walks them through the fix, and flags you only when it needs you, like a bad file.
- Find it, or ask for it. “Do we have Eden Lake?” Ask finds titles with words in any order, a typo or a half-remembered name. If it isn’t in the library, one tap sends a request to you.
- Less than a penny a question. A typical question costs about a quarter of a cent. Ask needs an Anthropic API key; without one, everything else in Lattice works as usual.
Illustration
Lattice for iPhone
Your library, in your pocket.
A companion app for everyone you share with, and a control room for owners.
- Browse the library.
- Ask about it in plain words.
- Spill into channels and threads with the people you share with.
- Settings to tune it. Owners also get the Console, where new devices are approved.
Illustration
Bring your history
Switch without starting over.
Users, passwords, watch history and resume points come across from Jellyfin, and we’re bridging every Jellyfin admin feature you rely on (beta). People you share with sign in as they always have.
- Passwords unchanged: Lattice verifies Jellyfin’s own password format.
Matched exactly in testing
Modern security
No open admin ports.
Your players reach Lattice over the internet; your admin controls never do. Administration happens only in the iPhone app, over its own signed channel, and admin routes answer only on your home network.
You pick and invite your users. We never see them — unlike Plex — and Lattice never lists their names on a sign-in page. Ever. (Jellyfin does, by default.)
Plex accounts run through Plex’s central service. Jellyfin shows its user list on the sign-in screen unless the admin hides each user.
Privacy and security are built in, using modern standards.
- A password alone isn’t enough. A sign-in from a new device gets no access token until the owner approves that device in the iPhone app with Face ID (passkey-style), so approval works like a second factor.
- Per-device tokens, revocable any time from the app, and kept out of logs.
- Signed requests: Secure Enclave–backed P-256 signatures, with a key that never leaves the iPhone.
- Hard to guess at: no public user list, uniform sign-in errors, per-IP and per-account back-off, and TLS with a real certificate.
- Players only on the player port: browsers and scanners are refused.
- No VPN or third-party relay for the people you share with.
Requires the Lattice iPhone app and a paid admin add-on.
Illustration
Lattice Monitor for Apple TV
The whole server, at a glance. Free.
A free, read-only dashboard for the big screen: what’s playing, server load and library health.
- Now playing: what’s on, where, and how it’s being played.
- Server load and library health without opening a laptop.
- Read-only. It shows; it never changes anything.
Illustration with sample values
Distiller
Save space. Prove the quality.
Optional re-encoding that saves space with verified quality. Every result is measured with VMAF, and Distiller never keeps a file that’s worse than your target or bigger than the original.
- ~64% saved on re-encoded shows on one household library.
- Measured, not guessed: each encode is scored with VMAF against its source.
- Bring your own GPU (Intel Arc tested; NVIDIA RTX 4090 testing now). Distiller is optional; everything else works without it.
meets your targetsmaller than the originalor the original stays
Quality lanes
Pick a port, pick the quality.
Old hardware, bad connection? Jellyfin and some players fumble the bag on this. Just pick 8090 to limit a device to 720p, 8091 for 1080p, or 8094 for full quality, up to 4K.
- Each port is a ceiling. Lattice serves the best version up to that resolution, and never upscales.
- Converted while you watch: 8090 and 8091 transcode on the fly, so no extra copies are stored. They need a GPU.
- Owners switch each lane on or off.
| Port | Ceiling | Status |
|---|---|---|
8090 | 720p | Beta |
8091 | 1080p | Beta |
8094 | Full quality, up to 4K | Available |
Built to load in parallel
Nothing waits on one database writer.
Jellyfin loads a library through a single SQLite writer, so fetching faster doesn’t help: the database is the queue. Lattice splits the load into independent workers that each read one shared journal at their own pace.
- Read every file at once. Files are probed in parallel, with a slot pool per disk so a spinning drive never thrashes.
- Write each title once. A playable item lands in an append-only journal the moment its probe is done.
- Three workers follow the journal, independently. Enricher: the things you see first come first. Posters, then whole seasons in one call, then backdrops, logos, cast and stills, at a polite, cached rate. Art fill: missing posters, backdrops and logos, fetched in large batches. Renditions: each image is resized for TV and phone as it lands, about 113 images a second, at low priority so playback never waits.
| Until… | Jellyfin | Lattice | Faster |
|---|---|---|---|
| every file is playable | 48.9 min | 82 s | 36× |
| every title has its poster | 48.8 min | 82 s | 36× |
| every overview is in | 49.0 min | 2.0 min | 25× |
| fully dressed | 50.7 min | 3.8 min | 13× |
Jellyfin 10.11.10, tuned. All the load tables
Precomputed, not recomputed
Worked out when the library changes, not when you ask.
Every list, search and “what changed?” answer is built as titles arrive. A page of a 40,000-item library costs the same as a page of a 100-item one.
- Search as you type: each keystroke is one keyed read, 6.8 ms p99 over HTTP.
- Native InfuseSync: a sync with nothing changed takes milliseconds, and every change arrives at least once. No plugin to break on upgrade.
- Artwork sized per device: phones get about a quarter of the bytes, so the grid keeps up with your thumb.
- Fast-start MP4s: files with their index at the end are remuxed on arrival, without re-encoding, so playback starts at once.
| Items | Jellyfin | Lattice | Page p50 |
|---|---|---|---|
| 1,000 | 1.9 s | 0.10 s | 132 → 14 ms |
| 10,000 | 20 s | 1.0 s | 300 → 15 ms |
| 40,000 | 193 s | 4.0 s | 969 → 15 ms |
Jellyfin’s pages slow down the deeper they go; Lattice’s stay flat. Scale test
Want it on your server? We’re choosing beta testers from the waitlist.
Join the waitlist