# Librian turns a plain script file into a visual novel

> Librian is a visual novel engine written in Python and JavaScript on top of pywebview, and its pitch is that a scene needs no markup and no code, only a background line and a line of dialogue with a speaker name.

**RimoChan/Librian** — 【Librian】簡明強大的 Galgame | Visual Novel 引擎

- Repository: https://github.com/RimoChan/Librian
- Website: https://librian.net
- Stars: 792 · Forks: 42
- Language: Python
- License: MPL-2.0
- Published: 2026-10-20 · Updated: 2026-10-20 · Language: en
- Canonical page: https://hysenlabs.com/projects/rimochan-librian

## A scene is a background line and some dialogue

The Liber script format is the heart of the project, and its simplicity is the pitch. A script sets a background with a line, names the speakers present, and then gives the lines of dialogue. There is no additional markup and no code required, the README says a short script is enough to complete a scene, and once the character art and backgrounds are prepared you run the Librian main program and start the project. The engine is described as a concise and powerful Galgame engine, built from Python and JavaScript on a pywebview front end, and the selling points listed are light and convenient prototype development, user friendliness and a high degree of extensibility. The intended user is someone with a script idea and a folder of artwork who wants a running prototype the same afternoon, and the fact that the script is a plain text file means the whole thing is versionable and diffable in a way a binary project file is not.

## The engine is a Python package with a bundled front end

The package layout is unusual in a way that is worth reading before you install it. The setup.py declares the package as librian, version 2.3.0, with packages librian, librian.librian_util, librian.librian本體 and librian.librian本體.librian虛擬機, and package_data pulls in the front end directory and its dist build, the default title screen, a directory of what the README calls black technology, the resources directory and a configuration.yaml. So the Python distribution ships a prebuilt front end and a set of resource files, and the engine is a set of nested packages rather than a flat module. The top level of the repository matches, with a librian/ directory holding the code, a tests/ directory, a documentation directory and a setup.py. The install requirements come straight from requirements.txt, which is read and split on newlines by the setup script, and they describe the stack clearly: liber for the script language itself, rimo_utils, pywebview and pywebview with the qt extra, cloudpickle for serialising objects, PyYAML for configuration, fire for the command line, dulwich for Git access, requests, libsass for stylesheet compilation, and opencc for Chinese conversion, with the opencc constraint split by Python version.

## The front end is a web view, and that shapes the platform story

Librian is written in Python and JavaScript and built on pywebview, which means the game runs in a web view with a Python backend rather than in a native window toolkit. The requirements list both pywebview and pywebview with the qt extra, so the Qt binding is the one pulled in by default. The consequences are the usual ones for this kind of architecture. You get HTML and CSS for layout, which is why libsass is a dependency, and the front end is shipped prebuilt in the package under the dist directory rather than compiled on the machine, so the installation includes a JavaScript bundle you did not build. You also get the portability that comes with a web view, and the constraint that the platform has to provide one, since pywebview is not a game framework and the windowing, input and audio behaviour are those of the host toolkit. The requirement for Python 3.8 or newer is stated in setup.py, and the classifiers are deliberately minimal, listing only Python 3 and Operating System Independent.

## Liber is a separate tool, not just a file format

The most reusable piece of the project is the Liber analyser, the tool Librian uses to analyse the Liber script language. The README notes that if you want to develop your own Galgame engine, or do something interesting, it will help, and it lives in its own repository at the librian-center organization, liber-language. It installs separately with pip, and the engine depends on it at liber 1.0.1 or newer. That separation is the significant design decision. The script language, its grammar and its analysis live in one place, and the engine that executes scripts lives in another, so the analysis work is not locked inside Librian. The two other dependencies in that group, rimo_utils at 1.4.1 or newer, is a separate package by the same author, and dulwich at 0.19.14 or newer gives the engine a pure Python Git implementation, which is what lets a project be versioned without a Git binary on the machine.

## Installation is a release download or a pip install

There are two documented routes, and the README recommends the first. You can download a packaged release build directly, and the release bundles also ship the librian panel, a separate companion project. The other route is the package index.

The engine itself is a normal Python package, and the setup script shows what the distribution contains.

```python
setuptools.setup(
    name='librian',
    version='2.3.0',
    author='RimoChan',
    author_email='the@librian.net',
    description='librian',
```


For the analyser, the install is a separate command from the engine.

The analyser installs on its own, as a separate package from the engine, and the README gives the install as pip install liber.

The documentation itself lives outside the repository, at doc.librian.net, and the README points there for detailed usage. The claims about what you can customise are broad: effects, visual styles, and even networking are all listed as things you can easily tailor. The homepage is librian.net, and the project description is in Chinese, with a Traditional Chinese and Simplified Chinese readme in the repository, so a reader who does not read Chinese will find the code and the wiki more approachable than the readme.

## The release history is the main thing to weigh

The tags are v2011 from 2020-11-14, v2008 from 2020-08-01 and v2003 from 2020-02-29, and the version string in setup.py is 2.3.0, so the project uses a date-based release naming. The gap between those tags and today is large. The last push was on 2026-09-05, so the repository is not abandoned, and the fact that the push is recent against a 2020 release history usually means maintenance, fixes and compatibility work rather than new features. For a hobby project that is an entirely reasonable pattern, and for a tool you intend to build a commercial visual novel on, it is a real risk. The version scheme also implies that a pip install gives you the newest published artifact, which is 2.3.0, and that the working tree may be ahead of it in ways that are not documented in a changelog, since the repository top level has no CHANGELOG file. The MPL-2.0 licence is the last thing to check, because it is a file-level copyleft licence and the terms on a codebase you intend to modify and distribute are worth reading rather than assuming.

## Where Librian is the wrong choice

The main limit is that this is a prototype-first engine, and the README says so. It is for quickly turning an idea into a result, and it is for ADV style games where a scene is dialogue over a background. A project with an elaborate UI, a complex asset pipeline, an audio system with more than a couple of cues, or a save system with many slots is asking for more than the engine offers, and the code will be a reference implementation you grow rather than a foundation you build on. The second limit is the platform, because the web view approach means the visual result is at the mercy of the host toolkit's rendering and the availability of a Qt binding on the target machine. The third is the dependency on a third party tool for the script language itself, which is good design but means a version mismatch between the liber package you install and the one the engine expects is a plausible failure. The fourth is simply age. A 2020 release with a 2026 commit history and no changelog is a project to read and learn from, and the Liber analyser is the piece most worth taking from it.

## Conclusion

Librian suits a writer or hobbyist who wants a working visual novel from assets and a script without learning a tool, and it suits a developer who wants to read the Liber grammar and build their own engine on top of it. It is the wrong choice for a commercial visual novel with a large asset pipeline, because the release history stops in 2020 and the last push was on 2026-09-05, so the tooling has not kept pace with modern pipelines. Before adopting it, read the Liber script format rather than assuming it is a Ren'Py-like syntax, and expect the front end to be a web view rather than a native one, because pywebview wraps a web view and the front end assets ship with the package. The last push was on 2026-09-05 and the newest tag is v2011 from 2020-11-14.

## FAQ

### How do I install Librian?

The README recommends downloading a packaged release build, and the release also bundles the librian panel. Alternatively you can install the engine with pip install librian, and the Liber analyser separately with pip install liber.

### What is the Liber script format?

A scene needs no extra markup and no code, only a background line, the speakers present, and the dialogue lines. The Liber analyser is the tool that analyses the Liber script language, and it lives in a separate repository and is also pip installable.

### What is Librian built on?

It is written in Python and JavaScript on a pywebview front end, with liber for the script language, rimo_utils, cloudpickle, PyYAML, fire, dulwich, requests, libsass and opencc among its requirements. The package ships a prebuilt front end, a default title screen and a configuration.yaml, and requires Python 3.8 or newer.

### What licence is Librian released under?

The project is distributed under the MPL-2.0 licence, with the licence file at the repository root alongside the librian package, the tests and the documentation directory.

## Sources

- [License: MPL-2.0](https://github.com/RimoChan/Librian/blob/master/LICENSE)
- [Project website](https://librian.net)
- [README](https://github.com/RimoChan/Librian/blob/master/README.md)
- [Releases](https://github.com/RimoChan/Librian/releases)
- [RimoChan/Librian on GitHub](https://github.com/RimoChan/Librian)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/rimochan-librian
