Skip to content

Conversation

@audiomuze
Copy link

Did this to help me with conceptual understanding of Lyrion's architecture. Not sure whether it'd be useful for inclusion in reference docs, use or abuse as you see fit.

@audiomuze audiomuze marked this pull request as ready for review January 8, 2026 09:06
@audiomuze audiomuze marked this pull request as draft January 8, 2026 09:07

# Lyrion Music Server (LMS) core architecture

This guide provides an onboarding-oriented architectural map of the **Lyrion Music Server** core codebase (historically SlimServer / Logitech Media Server). It favors a high-level mental model over exhaustive module documentation so you can navigate the codebase quickly.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No need to mention the history again. It's all over the place already...

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm sorry, wanted to start a review... sent that off too early.

Copy link
Member

@michaelherger michaelherger left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice one! Unfortunately the AI (I assume) left some quite poetic rubbish in a few places. But overall this can become a helpful document!

Please fix all the links: pointers at code should use the HEAD reference rather than a version specific path. And other documents on the web site should be referenced to by their relative path, not on Github.


## Big picture

LMS is an **event-driven server** that:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You might want to mention that it's single-threaded, too.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't see it mentioned?


# Lyrion Music Server (LMS) core architecture

This guide provides an onboarding-oriented architectural map of the **Lyrion Music Server** core codebase (historically SlimServer / Logitech Media Server). It favors a high-level mental model over exhaustive module documentation so you can navigate the codebase quickly.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm sorry, wanted to start a review... sent that off too early.


- accepts player connections over **SlimProto** (TCP 3483)
- serves a web UI plus APIs over **HTTP** (default TCP 9000)
- exposes a command/query CLI internally and externally
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Default 9090, or JSON/RPC

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

still missing port

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Haven’t uploaded revision yet.

- accepts player connections over **SlimProto** (TCP 3483)
- serves a web UI plus APIs over **HTTP** (default TCP 9000)
- exposes a command/query CLI internally and externally
- maintains a library database (SQLite by default, MySQL optional)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please don't mention MySQL. It's been neglected for ages, and some features wouldn't work with it any more (FTS).

- serves a web UI plus APIs over **HTTP** (default TCP 9000)
- exposes a command/query CLI internally and externally
- maintains a library database (SQLite by default, MySQL optional)
- scans media and playlists, often through a separate scanner process
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"audio and playlists"?

Physical and emulated players connect through SlimProto:

- listener: [Slim/Networking/Slimproto.pm](https://github.com/LMS-Community/slimserver/blob/public/9.1/Slim/Networking/Slimproto.pm)
- default port: 3483/TCP
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can't be changed, officially reserved for LMS/Squeezebox (see eg. https://www.speedguide.net/port.php?port=3483).

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think this port can be customised. Therefore "default" is somewhat misleading.


## Library database and persistence

The server stores different state types in purpose-built layers.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What?!?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

edited

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm a bit confused: you marked this as resolved, but I don't see any change. As you did with some of the other comments. Did you forget to push your changes up to GitHub?


- entry: [Slim/Schema.pm](https://github.com/LMS-Community/slimserver/blob/public/9.1/Slim/Schema.pm)
- ORM: DBIx::Class
- backends: SQLite (default) or MySQL
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't mention MySQL

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants