MCPcopy Index your code
hub / github.com/JMBeresford/retrom

github.com/JMBeresford/retrom @v0.8.4 sqlite

repository ↗ · DeepWiki ↗ · release v0.8.4 ↗
610 symbols 2,658 edges 366 files 0 documented · 0%
README

Banner

A centralized game library/collection management service with a focus on emulation. Configure once, play anywhere


Check out the quick start guide or the full wiki

Download the latest Client


Join the Discord server:

discord-badge

Table of Contents

Overview

Retrom is a centralized game library management service that allows you to host your games on a single device, and connect clients on any amount of other devices to (un)install/download and play them when and where you want to! Think of it as a sort of self-hosted Steam for your DRM-free game library.

Core Features

  • Host your own cloud game library service
  • Scan your filesystem for games/platforms and automatically add them to your library
  • Install/uninstall and play games from the service on any amount of desktop clients.
  • Support for Windows, MacOS, and Linux!
  • Access your library from anywhere with the web client.
  • Unify your emulation library with third party libraries
  • Steam
  • GoG (soon™)
  • Native PC / Linux / MacOS games (experimental)
  • Manage emulator profiles on a per-client basis, stored on the server for easily sharing configurations between devices or restoring them after a reinstall.
  • Launch all your games across any amount of emulators or platforms via your pre-configured profiles from a single library interface.
  • Automatically download game metadata and artworks from supported providers to showcase your library with style!

Screenshots

Home Screen

Game Details

In Game

Roadmap

[!TIP] The below list is often out-of-date, see the full roadmap here

  • [ ] Basic server functionality
  • [x] Scan filesystem for library items
  • [x] Add/remove library items
  • [x] Edit library items
  • [ ] Download metadata
    • [x] IGDB provider
    • [ ] SteamGridDB provider
  • [ ] Cloud save games / states / emulator NANDs
    • [x] Built-in emulators
    • [ ] Standalone emulators
  • [ ] (Multi-)User authentication
  • [ ] Publish server binaries, as an alternative to Docker
  • [ ] Basic client functionality
  • [x] View library items
  • [x] Edit library metadata and artworks
  • [x] Trigger library update jobs
    • [x] Scan filesystem for new entries
    • [x] Download/update metadata for new entries
  • [x] Manage game files
    • [x] rename
    • [x] delete
    • [x] set default (for launching via emulators)
  • [ ] Grid view (as opposed to default list view)
  • [x] Fullscreen mode + controller support
  • [x] Web (browser) client functionality (in addition to Basic functionality)
  • [x] Download games
  • [x] In-browser emulation via EmulatorJS
  • [ ] Desktop client functionality (in addition to Basic functionality)
  • [x] Install/uninstall games
  • [x] Configure locally available emulators
  • [x] Configure multiple profiles per-emulator
  • [x] Set default profiles per-platform
  • [x] Launch games
  • [ ] Built-in emulator profiles for popular emulators

Extension points exported contracts — how you extend this code

CSSProperties (Interface)
(no doc)
packages/ui/src/index.d.ts
ImportMetaEnv (Interface)
(no doc)
packages/client-web/src/vite-env.d.ts
SheetContentProps (Interface)
(no doc)
packages/ui/src/components/sheet.tsx
ImportMeta (Interface)
(no doc)
packages/client-web/src/vite-env.d.ts
ButtonProps (Interface)
(no doc)
packages/ui/src/components/button.tsx
CSSProperties (Interface)
(no doc)
packages/client-web/src/react.d.ts
ToastHistory (Interface)
(no doc)
packages/ui/src/components/toast.tsx
FileRoutesByPath (Interface)
(no doc)
packages/client-web/src/routeTree.gen.ts

Core symbols most depended-on inside this repo

cn
called by 425
packages/ui/src/lib/utils.ts
toast
called by 81
packages/ui/src/components/toast.tsx
useRetromClient
called by 58
packages/client-web/src/providers/retrom-client/index.tsx
checkIsDesktop
called by 40
packages/client-web/src/lib/env.tsx
getFileStub
called by 36
packages/client-web/src/lib/utils.tsx
useGameDetail
called by 30
packages/client-web/src/providers/game-details/index.tsx
useToast
called by 29
packages/ui/src/hooks/use-toast.ts
timestampToDate
called by 25
packages/client-web/src/lib/utils.tsx

Shape

Function 522
Interface 50
Class 26
Method 9
Enum 3

Languages

TypeScript100%

Modules by API surface

packages/client-web/src/providers/gamepad/event.ts14 symbols
plugins/retrom-plugin-installer/guest-js/index.ts13 symbols
packages/ui/src/components/pagination.tsx12 symbols
packages/ui/src/components/toast.tsx11 symbols
packages/client-web/src/routeTree.gen.ts11 symbols
packages/client-web/src/lib/utils.tsx11 symbols
packages/ui/src/components/item.tsx10 symbols
packages/client-web/src/components/menubar/index.tsx9 symbols
packages/client-web/src/providers/gamepad/controller-ids.ts8 symbols
plugins/retrom-plugin-save-manager/guest-js/index.ts7 symbols
packages/client-web/src/routes/play/$gameId/_layout/-utils/overlay/index.tsx7 symbols
packages/ui/src/components/chart.tsx6 symbols

Dependencies from manifests, versioned

@bufbuild/buf1.53.0 · 1×
@bufbuild/protobuf2.4.0 · 1×
@bufbuild/protoc-gen-es2.4.0 · 1×
@connectrpc/connect2.0.2 · 1×
@connectrpc/connect-web2.0.2 · 1×
@eslint/jscatalog: · 1×
@hookform/resolvers3.3.4 · 1×
@monodon/rustcatalog: · 1×
@noriginmedia/norigin-spatial-navigation2.3.0 · 1×
@nx/eslintcatalog: · 1×
@nx/jscatalog: · 1×

Datastores touched

retromDatabase · 1 repos

For agents

$ claude mcp add retrom \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact