A calm, local-first personal organizer for Linux.
Disciple keeps your notes, habits, projects, calendar, and conversations in one quiet native application. Everything lives in a local SQLite database on your own machine — no account, no server, no sync, no tracking. An optional AI assistant can chat and carry out clear organizer requests, but the whole app works without it.
Built with GTK4 and Libadwaita.
- Today — a focused look at the habits due today, today's events, and your active projects.
- Calendar — a real month grid with a selected-day agenda and simple local events.
- Habits — daily or specific-weekday routines with completion history and a non-negotiable emphasis.
- Projects — lightweight projects that link to your notes.
- Notes — fast full-text search, tags, and project links.
- Assistant Context — a visible, editable list of the personal facts the assistant is allowed to use. Nothing becomes "memory" behind your back.
- Chat — talk normally, or ask Disciple to create a note, add a habit, schedule an event, and more. Reversible changes offer one-click Undo; destructive ones ask first.
| Chat | Calendar |
|---|---|
![]() |
![]() |
- All data is stored in a plain SQLite database in your user data directory. You can copy, back up, or delete it yourself.
- No account, no cloud, no telemetry, no analytics.
- The optional AI provider is the only thing that ever touches the network, and only when you configure one and send a message.
- Your API key is stored only in the Linux keyring (Secret Service), never in a file, the database, chat history, logs, or backups.
Packaged builds and their uninstall steps are documented in INSTALL.md. In short:
Flatpak (any distribution):
flatpak install --user disciple-1.1.6.flatpak
flatpak run io.github.disciple.DiscipleFedora RPM:
sudo dnf install disciple-1.1.6-1.fc44.noarch.rpmDebian / Ubuntu:
sudo apt install ./disciple_1.1.6-1_all.debThen launch Disciple from your application menu — no terminal needed.
Notes, habits, projects, the calendar, Today, backups, and archives all work with no API key and no network. AI simply adds conversation and natural-language organizer requests on top.
AI is optional. To turn it on:
- Open Settings → AI Provider.
- Keep Groq selected, create a free API key at console.groq.com/keys, and paste it into the API key field.
- Click Save, then optionally Test Connection. Saving alone never sends a paid request.
- Use Refresh Models to list available models, or type one in.
Your key is saved in the Linux keyring. Disciple only ever shows a masked placeholder afterward.
Choose Custom OpenAI-compatible to point at any OpenAI-style
endpoint, including a local llama.cpp server:
- Base URL, for example
http://127.0.0.1:8080/v1 - Leave the API key empty for a local endpoint
- Enter or refresh the model name
Disciple never downloads, launches, or manages models.
For scripted launches, environment variables take precedence over saved settings:
export DISCIPLE_LLM_BASE_URL="http://127.0.0.1:8080/v1"
export DISCIPLE_LLM_MODEL="your-model-id"
export DISCIPLE_LLM_API_KEY="optional-key"Disciple's assistant is meant to feel like a calm, helpful person: short, direct answers rather than essays. You can adjust its tone and behavior in Settings → Assistant instructions, with factory defaults you can restore at any time. Core safety rules (never faking a change, never leaking your key, always confirming permanent deletion) are fixed and cannot be edited away.
Requests are kept small and cheap: bounded conversation history, at most a few opted-in context notes, and only the organizer actions relevant to what you asked. There are no background jobs and nothing keeps running after you close the window.
| Install | Database |
|---|---|
| RPM / DEB / source | ~/.local/share/disciple/disciple.db |
| Flatpak | ~/.var/app/io.github.disciple.Disciple/data/disciple/disciple.db |
Uninstalling a package never deletes this directory. Remove it yourself to erase your data.
Settings → Backup and restore exports everything to one readable JSON file. Restore validates the file first and writes a timestamped safety copy of your current database before replacing anything. Backups never contain your API key. (Your edited assistant instructions are included in backups, as ordinary settings.)
# Fedora
sudo dnf install python3 python3-gobject gtk4 libadwaita \
python3-dateutil python3-keyring python3-pytest
git clone <this-repo> disciple && cd disciple
PYTHONPATH=src python3 -m disciple
python3 -m pytestTests use temporary and in-memory databases and never touch your real Disciple data.
See PACKAGING.md for the wheel, Flatpak, RPM, and Debian build steps and the release checklist.
- Calendar is internal only — no CalDAV or external synchronization.
- Recurring calendar events are reserved in the schema but not exposed.
- Backups are manual; there is no automatic or cloud backup.
- Fullscreen fine-tuning depends on your window manager.
See PRODUCT.md for product decisions, ARCHITECTURE.md for the implementation map, CHANGELOG.md for release history, and SECURITY.md for the security model.


