██████╗ ██╗ ██╗███████╗███████╗████████╗██╗ ██╗███╗ ██╗███████╗ ██╔═══██╗██║ ██║██╔════╝██╔════╝╚══██╔══╝██║ ██║████╗ ██║██╔════╝ ██║ ██║██║ ██║█████╗ ███████╗ ██║ ██║ ██║██╔██╗ ██║█████╗ ██║▄▄ ██║██║ ██║██╔══╝ ╚════██║ ██║ ██║ ██║██║╚██╗██║██╔══╝ ╚██████╔╝╚██████╔╝███████╗███████║ ██║ ███████╗██║██║ ╚████║███████╗ ╚══▀▀═╝ ╚═════╝ ╚══════╝╚══════╝ ╚═╝ ╚══════╝╚═╝╚═╝ ╚═══╝╚══════╝
A terminal RPG where defeating the Notification Swarm, surviving the Great Backlog, and leveling up your hero somehow results in getting things done.
// The Living Chronicle — Chapter I
Questline is not a solo endeavor. The realm is shared — and right now, it is under siege.
The first Chapter of the Questline Great Chronicle has begun. Every adventurer in the realm
contributes to a single cooperative objective. Progress is tracked globally. Every task you complete,
every scroll you write, every focus session you honor — it counts. Not just for you.
For everyone who opened their terminal today instead of the notification feed.
# Chronicle Entry — The Early Days In the early days of the Questline realm, notifications were rare and precious — a message from a companion, a reminder of something that mattered. Adventurers checked them with care, responded with intention, and returned to their quests with purpose. Then the Swarm began. It started with a badge. Then an update. Then an alert about the alert. The notifications multiplied, each one demanding immediate attention — urgent by design, meaningless by nature. The once-quiet realm became a storm of pings, popups, and red circles on every icon. Adventurers began losing quests. Tasks left half-done. The Chronicle fell silent. The Zen Trees, starved of their daily water, began to wither. The Swarm does not rest. It does not negotiate. It feeds on abandoned attention and grows stronger with every quest left incomplete. The realm calls for those who can ignore the noise. Who can close the popups, silence the badges, and return to the work that matters. The Notification Swarm is not defeated by willpower alone — it is defeated by completed quests.
// The Call to Arms
Complete your quests and their steps. Honor your focus sessions. Nurture the Zen Tree. Fulfill your sidequests. Record your reflections. Every action you take in Questline contributes directly to the cooperative Chapter objective — visible on the Great Chronicle screen in real time, shared across every adventurer in the realm.
When the realm collectively meets all six objectives, the Chapter ends. Every adventurer who contributed receives a one-time completion message — displayed in their Chronicle the next time they open the app, never shown again.
The Notification Swarm has been dispersed.
Something stirred beyond the horizon.
The Chronicle turns to the next page.
# Progress is tracked in the Great Chronicle screen. Visible to every adventurer. # Every contribution is permanent. Every quest matters. $ questline # open your terminal. complete your quests. help disperse the Swarm.
Chapter One — The Notification Swarm
The Swarm is here. The Realm needs you. Join the fight today.
Complete your tasks. Save the Realm. These are, suspiciously, the same thing.
// The Chronicle — Entry 001
Questline is a terminal-first productivity application built in Rust that turns your
task list into an RPG. You pick a class, you level up, you grow a tree that silently judges your
consistency, and you do your actual work — which was the main point all along.
It runs entirely in your terminal. Your data lives locally in SQLite. There is optional cloud sync
if you want your productivity guilt to follow you across devices. The interface looks like it was
built by someone who loved both spreadsheets and dungeons, because it was.
// Interactive Terminal Demo (Type commands here)
Questline cannot complete your tasks. It can, however, make ignoring them significantly more embarrassing. Every skipped day is a gap in the Chronicle. The Zen Tree notices. The Zen Tree does not forgive.
Your data stays on your machine. No subscription required to access your own to-do list. Optional sync is available for multi-device adventurers and those who enjoy watching databases replicate across timezones.
XP is earned by completing tasks, writing journal entries, maintaining streaks, and finishing focus sessions — not by clicking buttons or watching progress bars. There is no shortcut. The system has been tested.
Share projects with other users via Fellowship. Members contribute to shared tasks, write to a Project Chronicle, and silently compete for who can maintain a longer streak. Collaboration, technically.
# The elevator pitch, terminal edition $ questline --describe-self "The world's most elaborate reminder to finish your tasks." Status .......... Running Motivation ...... Overrated Discipline ....... The actual plan Backlog ......... Doing pushups while you read this Your Zen Tree ... Waiting
// Target Profile Assessment
Questline is for people who have tried plain to-do lists and found them motivationally inert.
It is not exclusively for developers. It is for anyone who does knowledge work,
manages their own time, and responds better to systems with some personality than to
systems that look like a spreadsheet that has given up.
If you have ever opened a productivity app, added three tasks, and closed it without ever
opening it again — Questline was built with you specifically in mind. Not to fix the problem.
To make it significantly more embarrassing to repeat.
// Out of Scope
# Questline is probably not the right tool if you: ✗ Need Gantt charts, resource allocation, or sprint planning boards ✗ Require a mobile app (terminal runs on desktop only) ✗ Prefer clicking things (keyboard-only interface, intentionally) ✗ Want a team of 20+ people on the same workspace ✗ Need integrations with Jira, Slack, or other enterprise platforms ✗ Are looking for something that will finish your tasks for you # No tool does the last one. We checked.
// The Six Great Orders
Your class is not cosmetic. It determines your color palette, your starting powers, your Order lore, and the specific flavor of productivity guilt you will carry. Choose with care. Choose with honesty. You can change at Level 10 via Specialization, but the Chronicle will remember your original shame.
// System Manifest
// Zen Tree Growth Stages
// Visual Chronicle
// Adventurer's Field Guide
# Questline is a TUI — it runs entirely in your terminal. # You navigate with the keyboard. There is no mouse support. # This is a feature, not an oversight. The mouse breeds dependency. $ questline # launch the application
// Project Milestone Tiers
Entry-level milestones: a few completed tasks, one or two journal entries, minimum project age, and a couple of focus sessions. For those who showed up and did the work. The bar exists. You found it.
Mid-tier milestones requiring sustained effort: double-digit task counts, active days across multiple sessions, maintained streaks. For those who returned the next day, and treated it as a habit rather than an event.
Long-form achievement requiring hundreds of tasks, months of active work, significant journal commitment, and streaks that outlast most personal projects. For those who are either genuinely exceptional or have confused discipline for identity. Both groups qualify.
// Cryptographic Identity System
Questline does not use passwords. It does not use accounts. It does not send you a welcome email
with a temporary link that expires in 24 hours. Instead, it generates a unique
Ed25519 cryptographic keypair on first launch and uses it to sign every request
to the sync server. Your private key never leaves your machine. Your public key is your identity
in the realm.
This is not an SSH key — although Ed25519 is the same algorithm SSH uses, because the field
has had decades to agree on the right answer. It is Questline's own identity system, stored
independently of your SSH configuration, and it requires nothing from you except launching the app.
The key is generated automatically. There is no command to run. There is no setup wizard.
There is no confirmation email. It simply happens.
# What Questline generates on first launch Algorithm .... Ed25519 Private key .. Linux : ~/.config/questline/identity.key macOS : ~/Library/Application Support/questline/identity.key Windows : %APPDATA%\questline\identity.key Public key ... displayed in the Sync screen ← this is your identity in the realm Key format ... hex-encoded, 64 characters (32 bytes) Generated .... automatically on first launch Required action from you: none
Launch the app. That is it. Questline detects the absence of an identity file and generates a fresh Ed25519 keypair automatically. By the time you finish the onboarding screen, your identity exists, your public key is ready, and you have technically performed cryptography without trying.
Your identity was created on first launch and saved to:
Linux : ~/.config/questline/identity.key
macOS : ~/Library/Application Support/questline/identity.key
Windows: %APPDATA%\questline\identity.key
Open the Sync screen inside the app (S from the main menu or via the
sidebar) to view and copy your public key — it is the 64-character hex string
listed under Identity.
Your public key is what other users need to invite you to a shared project. In the Sync screen, your public key is displayed and can be copied to clipboard. Share the 64-character hex string with your companion. It is safe to share. That is the entire point of a public key. The private half stays local and is never transmitted anywhere.
Ask your companion for their public key — they find it in their Sync screen. Open the Fellowship screen in Questline, press I to invite, paste their 64-character public key, select the project and role, and confirm. They accept on their device. The project syncs between both identities via the server from that point forward.
Questline is designed to follow you. The same character, the same Chronicle, the same projects —
on Linux, macOS, and Windows, at the same time if needed. The sync engine pushes your tasks,
notes, projects, journal entries, and character profile to the server automatically every few
minutes. Your identity is tied to a cryptographic keypair — whoever holds that key is you to the server.
Moving to a new machine is now built into the app. On your old device press E on the
Sync screen to export a Transfer Code. On the new device press I and paste it.
The app backs up your database automatically at both ends, restores your identity, and pulls
your full Chronicle from the server. No file managers, no terminal, no paths to remember.
Sync keeps things current day-to-day. The cloud backup (B on the Sync screen) is a full
snapshot you push deliberately — useful before wiping a machine or as an extra safety net.
Do both. They serve different purposes and cost almost nothing.
// First-Time Sync Setup
If you want cloud sync and backup across devices, follow these steps after installing.
# Transferring your identity to a new machine — built into the Sync screen # ── Old machine ──────────────────────────────────────────────────────────── [S] Sync screen → push latest data to server [B] Push a full cloud backup [E] Export Profile → Questline backs up your local DB and shows a Transfer Code [C] Copy Transfer Code to clipboard (inside the Export modal) # ── New machine ──────────────────────────────────────────────────────────── Install Questline and complete onboarding Open Sync screen → set server URL → [S] to register [I] Restore Identity → paste Transfer Code → [Enter] # Questline backs up the current DB, writes the new identity.key, # triggers a full sync, and reloads your Chronicle automatically. # Works across any OS combination — Linux, macOS, Windows.
// If Your Identity File Is Lost or Deleted
# If identity.key was deleted or the config directory was wiped: Questline will generate a NEW keypair on the next launch. Your local database (tasks, notes, journal) remains intact. However: ✗ Your new public key will NOT match your previous identity ✗ Fellowship invitations tied to the old key must be re-sent ✗ Cloud sync registration is lost — you must re-register ✗ Companions must invite the new identity to shared projects # Prevention: back up the file. It is 300 bytes. # There is no excuse. The Chronicle is unforgiving on this matter.
Your cryptographic identity is the only thing that cannot be regenerated from your data.
Your tasks, notes, journal entries, and Chronicle can all be restored from a cloud backup.
Your signing key cannot be recovered if lost — the sync server has never heard of you by any other name.
The easiest way to back it up is E on the Sync screen. Questline generates a
Transfer Code you can store in a password manager or note. That code is all you need to
restore your identity on any machine at any time. Keep it somewhere deliberate — before
you need it, not after. The backlog will still be there when you return. Your identity may not be.
// Installation
Run the installer. It detects your OS and architecture, downloads the binary, and sets up your config directory. No package manager required.
// Linux & macOS
$ curl -fsSL https://raw.githubusercontent.com/gibranlp/Questline-cli/main/server/install.sh | bash
// Windows (PowerShell)
PS> irm https://raw.githubusercontent.com/gibranlp/Questline-cli/main/server/install.ps1 | iex
Re-running the installer updates to the latest version.
Your data and identity file are never touched by the installer.
// Join the Realm
Join the Discord Server
Piping a script from a stranger's GitHub into your shell? Bold choice.
The source is public. You could read it before running it. Most people don't. The backlog is still there either way.
github.com/gibranlp/Questline-cli
// The Chronicle — Patch Notes
The realm has always existed. It simply did not have a proper name on the world map.
Adventurers who survived Chapter One know the truth: the Notification Swarm was only the beginning.
A realm this large — with heroes across timezones completing quests, tending Zen Trees, and writing
scrolls at unreasonable hours — deserved an address that could be taken seriously.
questlinecli.com is that address. The Chronicle has been updated accordingly.
The backlog has not shrunk. But at least it now has a proper domain.
# Chronicle Entry — The Naming of the Realm For a time, the realm existed at an address borrowed from the land of its creator. A temporary dwelling. A camp, not a keep. The adventurers came anyway. They completed quests. They watered their trees. They wrote scrolls into the night. They did not complain about the address. The backlog was already doing that for them. The realm now has a name of its own: questlinecli.com The server is the same. The database is intact. The Chronicle has lost nothing. The Zen Trees did not notice. The Zen Trees rarely notice anything that does not involve consistency. Existing adventurers: update your sync URL to https://questlinecli.com/api via the Sync screen. New adventurers: it is already set. You arrived at the right time. You are welcome. // Changes in this version ✓ Domain migrated from questline.gibranlp.dev → questlinecli.com ✓ Default sync server URL updated in all new installations ✓ The Chronicle is intact. Not a single entry was lost in transit. – The backlog. Still there. Doing pushups. Waiting.
✓ WAL mode enabled — no more database locking under concurrent access ✓ Delete tombstones — deletions now propagate correctly across devices ✓ Task updated_at — edits sync properly; no more phantom conflicts ✓ Focus session sync — sessions counted on the right device ✓ Journal entry updates — edits no longer silently discarded ✓ Device ID filter — devices no longer receive their own changes back ✓ Sequence cursor — incremental sync now resumes from the correct position ✓ Daily cleanup — stale sync state no longer accumulates over time
Full release history → github.com/gibranlp/Questline-cli/releases
// Keep the Chronicle Alive
Questline is independent, open-source, and free of tracking or ads. The sync server, Fellowship collaboration network, and updates are entirely funded by community support. If Questline helps you defeat the Great Backlog or build daily consistency, consider keeping the developer caffeinated.
Support development directly. Buy a coffee, fund new soundscapes, or chip in for server costs. Every drop helps.
Become a recurring sponsor or give a one-time contribution. Help shape the future of Questline's development.