Loki is an all in one launcher built exclusively for the AYN Thor, designed to solve problems instead of creating them. Every part of the experience has been built with performance, stability, and ease of use in mind, delivering a fast, lightweight interface that takes full advantage of the Thor's unique dual screen hardware.
Unlike traditional front ends, Loki goes far beyond simply launching games. Stream movies and TV shows directly from within the launcher, connect to your PC or other devices over your local network for game streaming, and switch seamlessly into dedicated Couch Mode for a controller focused living room experience or Desktop Mode for a desktop style interface designed for larger displays. Everything is integrated into a single, cohesive experience so you never have to leave the launcher.
Loki features complete controller support across the entire interface, extensive customization options, modern dual screen layouts, built in media streaming, game streaming, and a growing collection of features designed specifically for the AYN Thor. The launcher is built to be extremely lightweight, highly optimized, and responsive, ensuring smooth performance without unnecessary overhead.
One thing worth mentioning is that Loki was never intended to recreate the look or feel of the Nintendo 3DS. If you're looking for a launcher that closely resembles the 3DS interface, Cocoon is an excellent choice. Loki instead embraces a modern design philosophy with its own identity, focusing on usability, performance, and innovation rather than copying the appearance of another system.
The goal of Loki is simple: create the most polished, feature rich, and reliable launcher available for the AYN Thor while remaining fast, intuitive, and built from the ground up for the hardware it runs on.
Download · Android 10+ · GPL-3.0
1. Download the APK from Releases and install it
2. Open it once
3. Set it as your home app when Loki offers
Your games, saves and emulators are untouched. You can uninstall at any time.
A short intro plays — once, ever, not on every restart.
Then Loki shows you what it would like permission for. None of it is required.
| Turns on | |
|---|---|
| Home app | Loki opens when you press Home |
| Accessibility | The pointer, and typing into other apps |
Then a walkthrough takes you through everything. Replay it any time from Settings → About → Replay the walkthrough.
One panel holds the grid — your icons, menus and the section bar.
The other holds information — artwork, details and play time for whatever the cursor is on.
Swap which is which in Settings → System → Dual screen.
Launch a game and it takes the grid's panel. The other panel stays on the launcher.
Touch a panel to give it the controller. Tap the game to play, tap the launcher to browse, any time.
Home gives a panel back to Loki, from either screen.
An entry's context menu can send it to the other panel instead, leaving the grid where it is.
For the Thor sitting in a dock with the controller in your hands rather than the device — and a different interface, not the handheld one rearranged.
Everything moves to the top screen and the bottom panel goes dark. It isn't dimmed or left showing a stale grid: Loki holds that panel black so the system can't light it with the wallpaper.
| Horizontal content rails | Continue playing, favourites, the selected platform, apps and custom collections without empty grid cells |
| Platform sub-navigation | LT and RT switch systems in place and immediately replace the game shelf; generated platform folders are not opened |
| Sections along the top | Controller-first Home, Movies, Stream and Settings navigation where a television puts it |
| Living hero artwork | The focused title crossfades into cinematic backdrop drift, platform-coloured ambience and scraped logo treatment |
| Console status cluster | The Couch header carries the configured clock and live battery status without duplicating polling logic |
| Single-screen Movies and Stream | Catalogue, details, sources, hosts and live actions stay together on the television |
The handheld grid is not shown in Couch Mode. Couch Mode builds fast content rails directly from the library, maintains its own controller focus, and caches its platform shelves so switching systems never walks the handheld grid. Empty placements and handheld density never leak into the television interface.
Nothing is taken away either: the app drawer, menus, keyboard, search and settings all work exactly as they do on the handheld layout.
Settings → System & accessibility → Dual screen → Screen mode → Couch mode
The same page includes Couch UI size, adjustable from 75% to 125% with touch or controller Left/Right, so the television interface can be tuned for viewing distance without changing the handheld layout.
Movies and PC streaming also switch to dedicated one-screen dashboards in Couch Mode; the darkened handheld panel is never needed to finish an action.
Every icon stays where you put it. Empty cells stay empty. Nothing reflows.
| Move an icon | Hold A, move, press A to drop |
| Change density | Pinch — eight presets, 3×2 up to 8×5 |
| Turn pages | L2 / R2 |
| Favourite | X |
| Context menu | Y |
Placements survive rescans. Moving a ROM or reinstalling an app keeps its cell.
Icons take one of five shapes, and the cursor traces whichever shape the cell has.
Folders hold entries, scrape their own artwork, and can be made from any entry's menu.
Scanned games are filed into one folder per system, so adding a console costs the grid a single cell instead of three hundred. Anything you move out stays where you put it.
| Button | Does |
|---|---|
| A | Launch — hold to pick up |
| B | Back |
| X | Favourite |
| Y | Context menu |
| L1 / R1 | Previous / next screenshot |
| L2 / R2 | Previous / next page |
| Stick click | Shortcut panel |
| Start | Start panel |
| Select | App drawer |
| Guide | Home |
| Triggers held | Speeds up whatever else you press |
A paired keyboard works too — WASD, E, F, Tab, Enter, Esc.
Click either stick for the app drawer, search, settings, swap screens, rescan, recording, Wi-Fi, Bluetooth, volume and Android settings.
Its firmware doesn't send anything an app can read, so Loki can't use it. The stick clicks work everywhere.
If a button seems dead, Settings → About → Button tester shows exactly what it sends.
For everything a gamepad can't press — login forms, store pages, emulator settings.
Hold Start + Select to raise a cursor. Turn it on in Settings → Controls → Pointer.
| Input | Does |
|---|---|
| Left stick | Move the cursor |
| Right stick | Scroll |
| A | Click |
| X | Long press |
| B | Back |
| Y | Open the keyboard |
| L1 / R1 | Scroll a page |
To use it outside Loki, enable Loki's accessibility service.
Tap a text field in any app, press Y, and Loki's keyboard appears on the panel you're holding while the text lands in the field on the other screen.
Needs the accessibility permission. Apps that don't use standard Android text fields won't accept it.
Loki brings its own, because Android's appears on the wrong screen on this device.
| Input | Does |
|---|---|
| D-pad | Move over the keys |
| A | Press |
| B | Delete, or close when empty |
| X | Space |
| Y | Shift |
| L2 / R2 | Letters ⟷ symbols |
| Start | Done |
Every key is a touch target too.
Settings → Games & artwork → Platforms
47 systems built in. 71 emulators recognised, each handed a ROM the way that emulator expects. Add the consoles you own and pick an emulator for each.
Standalone emulators are preferred over RetroArch and Lemuroid — a DS game goes
to melonDS or DraStic if you have one, and to a multi-core front-end only when
you don't. Among them: Azahar, Citra, Panda3DS, melonDS, DraStic, NooDS,
DuckStation, AetherSX2, Dolphin, PPSSPP, Vita3K, Flycast, Redream, Yaba Sanshiro,
Strato, Eden, Citron, Sudachi, MAME4droid, Mupen64Plus FZ, the John and .emu
families, Pizza Boy, My Boy!, and Winlator for Windows games. Pick a different
one per system, or per game, whenever you disagree.
Settings → Games & artwork → Extra ROM folders
Loki scans the folders you grant, matching files by extension and reading inside
zip, 7z, rar and chd.
Missing files are flagged, not deleted — an unmounted SD card doesn't lose anything.
Scanning, scraping and play-time tracking all run in the background.
Play time is recorded per game and shown on the information panel. It survives Loki being killed mid-game, which is normal when memory is tight.
Four sources, merged field by field. Anything you edit by hand is never overwritten.
| Source | Gives you | Needs |
|---|---|---|
| Wikidata | Developer, publisher, dates, series | Nothing |
| ScreenScraper | Titles, credits, genres, dates, artwork | Built-in key |
| SteamGridDB | Square grid artwork | Your API key |
| RAWG | Descriptions, ratings, screenshots | Your API key |
A source without a key is skipped, never fatal.
Each game keeps a cover and up to three screenshots. The bumpers step between them.
Platform artwork can be imported from an icon pack — Loki ships none.
An extension. Add it with
movies.json— see Extensions below.
Open Movies from the section bar at the bottom of the grid.
Browsing needs nothing. Playing needs a source, and there are two kinds.
Settings → Films & shows → Sources & accounts
Loki speaks the Stremio addon protocol. Paste an addon's URL and press Test.
Install links, manifest URLs and stremio:// links are all accepted.
Loki speaks Torznab — what Jackett, Prowlarr and NZBHydra all expose. It searches them itself, with no addon in between.
| Field | What to put |
|---|---|
| Name | Whatever you want to call it |
| URL | Your Torznab endpoint |
| API key | From your Jackett or Prowlarr dashboard |
Press Test — it runs a real search, so a wrong key or an unreachable indexer tells you now instead of silently finding nothing later.
Indexers on your own network work over plain HTTP. Everything remote is HTTPS.
Paste your token and press Check. It turns a torrent result into an instant stream.
Without it, sources are listed but won't open.
Resume where you left off, pick a different source without leaving the title, choose audio track and playback speed. Handles progressive files, HLS and DASH.
An extension. Add it with
stream.json— see Extensions below.
Open Stream from the section bar. Loki finds PCs running Sunshine on your network.
1. Run Sunshine on your PC
2. Open Stream — PCs appear automatically, or add one by address
3. Enter the PIN into Sunshine
4. Pick something to play
While streaming, the other panel becomes a trackpad and keyboard — the only way to type into a streamed desktop, since Android's keyboard can't render there.
Leave with Back, or hold Start + Select + L1 + R1.
Resolution, frame rate and bitrate live in Settings → PC streaming.
Fifteen themes. Each carries its own accents, corners, motion, font and sounds.
| Dark | Colourful | Light |
|---|---|---|
| Material (default) | Neon | Daylight |
| Midnight | Cyber | Meridian |
| Obsidian | Ember | Paper |
| OLED | Lagoon | Cherry |
| Slate | Orchid | Sherbet |
Also yours to set: wallpaper per panel — static, animated, or a video preview of the selected game — corner style, icon shape, cursor style, clock, text size, sounds and haptics.
If it feels slow: Settings → System → Performance turns the expensive effects off together.
Accessibility: contrast, reduced motion, text size and colour vision modes under Settings → System.
The shortcut panel's Record tile captures both panels into one video inside a
dual screen console body, saved to Movies/Loki.
It records the launcher, not the device — Android only lets an app capture the default display, so a running game won't appear. No audio.
Movies and PC streaming are optional. They ship inside the app but stay switched off, so a launcher you only want for your ROMs has no section, no settings category and no pages for either.
Adding one is a small file, not a download.
| File | Adds | |
|---|---|---|
movies.json |
Browse films and shows, find sources, play them | Download |
stream.json |
Find PCs on your network and stream from them | Download |
Save the file anywhere on the device — the Downloads folder is fine — then:
Settings → System & accessibility → Extensions → Import an extension
The section appears at once — nothing is fetched, and it works offline. Loki plays a short walkthrough of whatever you just added. Remove it from the same page and everything it added disappears, with its settings kept in case you add it back.
It is not a licence key. Anyone can write one in a text editor; it is a way of saying which parts of the launcher you want. More in extensions/README.
| Category | Pages |
|---|---|
| Personalization | Theme · Wallpaper · Interface · Home grid · Cursor |
| Games & artwork | Platforms · ROM folders · Scanning · Sorting · Metadata · Platform artwork |
| Films & shows | Sources & accounts · Playback |
| PC streaming | Picture · Controls · PCs |
| Controls | Navigation · Pointer · Feedback |
| System | Dual screen · Performance · Accessibility · Extensions |
| About | Info · Default launcher · Replay walkthrough · Logging · Button tester · Reset |
Every row works with the controller.
| Desktop Mode | Planned |
| Mouse and keyboard while streaming | Controller and trackpad work; full pointer and text paths aren't wired |
| HDR while streaming | Accepted but not applied |
| Controller remapping screen | Two profiles ship and apply live; no editor |
| Cloud sync and backup | Modelled, no transport |
| Collections and achievements | Tables exist, no screens |
| Smart folder editor | Works, but queries can only be made in code |
| Theme editor, plugins, widgets | Not started |
Known limits: emulator package names drift between releases, so an unknown one falls back to a generic open. Emulators needing a real file path can only reach primary storage. Once an app is on a panel, Loki can't tell if it's still there — press Home to take the panel back.
./gradlew assembleRelease
./gradlew testJDK 17, plus the NDK and CMake for the streaming core:
sdkmanager "ndk;27.0.12077973" "cmake;3.22.1"How it's built and why — the dual screen architecture and the rules behind it — is in docs/DESIGN.md.
GPL-3.0 — see LICENSE.
The streaming core is Moonlight, which is GPL, so Loki is too. Anyone given a build is entitled to its source.
Loki is not affiliated with AYN, Stremio, Real-Debrid, or any emulator or indexer project.