This started out as a project to learn the Go programming language and turned into something I've been using to track my solo TTRPG sessions.
People expressed interest in it, so I thought I'd put it up here on Github.
So, the code may not be the best quality, but it does work!
To install, download the latest executable from Releases.
To see where the data and logs are written, press F1.
- Create multiple games and track multiple sessions per game
- Create simple characters for quick reference in the app
- Support for tags and quick notations based on Lonelog
- Dice Rolling
- Searching game sessions
- Mouse free navigation
- Import/Export session logs
Games are just a name for adding session logs to. You'll need to add a game before adding logs.
Sessions is just a text area where you can type out your log. There's no formatting available here. It's just a simple text editor.
You can import/export session logs however, so those who like to use Markdown can still do so. It just won't be formatted in the terminal.
Check out Lonelog for using tags in your TTRPG session logs.
When logging your session, you can press keys (F2 = Character Action, F3 = Oracle Question, F4 = Dice) to quickly insert a template. Press Ctrl+T to open up the tag modal to select a template to insert.
The Active Tags section displays the list of "open" tags from all of the logs in the game.
The Notes Tags section includes tags that are in the Notes seciton of the game.
Picking one of those tags will insert it into the log where you can fill out the details.
When the application starts for the first time it creates a config.yaml file with sensible defaults. You can edit this file to change the available tags. Press F1 in the app to see the exact path to your config file.
See the Configuration section for full details.
Seperate from sessions is a notes section. Notes are for tracking things that live on beyond sessions, like key NPCs, adventure hooks, locations.
You can search notes and sessions, then quickly jump to the entry by selecting it from the list of results.
There are 2 sections for managing characters in the app. The top section is where you add a characters information (name, system, role, species). The bottom section is the sheet where you track attributes.
The sheet is a list of name/value entries. Entries can be standalone or grouped under a section header. Sections keep related entries together and move as a group.
It's recommended to track only simple things here. It's not a rich character sheet by any means.
Depending on the game you're playing, the entire character sheet may fit in this area.
You can roll dice from anywhere in the app. It follows the typical dice notation and allows tagging rolls with a label.
When lauching the roller from within the session log, you can insert the roll result where the cursor is in the text area.
When the app starts for the first time it creates a config.yaml file with sensible defaults. You can edit this file to change how the app behaves. Press F1 to see where the file is on your machine. The default locations are:
| Platform | Path |
|---|---|
| macOS | ~/Library/Application Support/soloterm/config.yaml |
| Linux | ~/.config/soloterm/config.yaml |
| Windows | %AppData%\soloterm\config.yaml |
These are the templates inserted when you press F2 (Character Action), F3 (Oracle), and F4 (Dice). You can change the template value under each entry to whatever works for your game system.
core_tags:
action:
template: "@ \nd: ->\n=> "
oracle:
template: "? \nd: ->\n=> "
dice:
template: "d: ->\n=> "If you leave a template blank or remove the entry entirely, the app will put the default back on the next startup.
This is the list of tags shown in the tag selector (Ctrl+T). Each one has a label shown in the UI and a template that gets inserted when you pick it.
tag_types:
- label: Location
template: "[L: | ]"
- label: NPC
template: "[N: | ]"Add, remove, or change these to suit your game.
Any tag whose data section contains one of these words won't show up in the Active Tags list. The matching is case-insensitive. It's handy for hiding tags you've already resolved or closed out.
tag_exclude_words:
- closed
- abandonedBy default the database is stored alongside the log file in the platform data directory. If you want to keep it somewhere else, like a Dropbox folder so your sessions sync across machines, just set this to the directory you want.
database_dir: /home/user/Dropbox/solotermThe database file is always named soloterm.db, so just point this at the folder.
If you set the DB_PATH environment variable to a full file path, that takes priority over this setting.
This is a little side project that I used to learn Go. I don't intend this to be an application I plan on building a support structure around.
- If you want to fork the code and alter it, go for it. The license is MIT, so do what you want.
- PRs welcome! But please file bugs and or enhancements and refer to them.
- If you find a problem with the app, I'm not surprised. I've tested it and used Claude to help me write tests, so there shouldn't be anything huge. Feel free to open an issue here and if I get time I'll check it out. Or, if you like, fix it and submit a PR.





