The real value of character-sheet is the character you build away from it.
Most journalling disappears into a void. Insights get forgotten, negative patterns repeat, and progress feels invisible. character-sheet turns self-reflection into an RPG: earn XP for understanding yourself, name your enemies, track your quests, and watch your character sheet grow more detailed over time.
🎮 Try the live demo (no download needed)
After a few sessions you'll have:
- A Main Quest and side quests tracking what you're actually working on in life
- Named enemies: recurring negative patterns, limiting beliefs, and energy drains
- A skills list ranking what you're developing, what's under-levelled, and what's becoming a signature strength
- Achievements and classes capturing genuine growth and meaningful milestones
- A journal timeline linking entries to changes in your sheet
🔒 Private by default. A single .html file. No server, no accounts, no telemetry. Your data lives on your device. Nothing leaves unless you send it.
🤖 AI is optional. Works fully offline. Use a local model, a cloud AI, or no AI at all.
🚧 Early work in progress. All feedback welcome: open an issue or start a discussion.
Your data stays on your device. Nothing is transmitted automatically. You decide what leaves your machine and when.
data.jsonis your private diary. Any AI provider you journal with (Claude, ChatGPT, etc.) may store or use what you share. Check their privacy settings to opt out.- Think before syncing
data.jsonto cloud storage. Uploading to Google Drive, Dropbox, or iCloud means trusting that provider with your journal.character-sheet.htmlandinstructions.mdare fine to sync. - Keep your API key in a password manager (1Password, Bitwarden, Apple Passwords, etc.) and enable two-factor authentication on your AI provider account.
- Enable full-disk encryption on your device (FileVault on Mac, BitLocker on Windows). If your laptop is stolen, disk encryption is the barrier between a thief and your browser storage files.
- Use Firefox if possible. Firefox isolates each local HTML file's storage. In Chrome and Edge, all local files share the same origin.
- Close Ollama when you are done. When running a local model, closing the terminal stops Ollama and prevents other browser pages from reaching it.
Password lock. The app has an optional password that encrypts all your data using AES-256-GCM with PBKDF2 key derivation (200,000 iterations). It protects against someone who opens your browser or reads your storage files directly. It does not protect against malware with access to browser memory or someone using your device while the app is already unlocked.
Full threat model: privacy risks broken down across every journalling approach.
| File | What it is |
|---|---|
| character-sheet.html | The app. Download and open in your browser. |
| instructions.md | Upload to your AI project knowledge (copy-paste workflow). |
| deep-dive.md | Structured interview for a fuller first session. |
| journalling-prompts.md | Optional. Upload alongside instructions.md for richer session prompts. |
| wiki.md | Full documentation for each tab. |
| tips.md | Token usage, persistence, updating to new versions. |
| ollama-setup.md | Ollama install, model selection, and troubleshooting. |
| ai-privacy-guide.md | Provider-by-provider privacy breakdown. |
| journalling-threat-model.md | Privacy risk breakdown across all journalling approaches. |
No account required for any option. Pick based on how private you want your data to be and how much setup you're willing to do.
| A. No AI | B. Local AI (Ollama) | C. Cloud AI, in-app | D. Cloud AI, copy-paste | |
|---|---|---|---|---|
| Privacy | Fully offline | Fully offline, nothing leaves your device | Your journal is sent to your AI provider | You control exactly what you share |
| Cost | Free | Free | Pay per use | Free tier available |
| Setup | Instant | ~10 minutes, one-time | ~5 minutes | ~5 minutes |
| AI quality | No AI | Good | Best | Best |
Download and open character-sheet.html. Click any field to edit it directly. Export your data regularly with the download button (bottom right).
That's it. The whole app works offline with no AI involved.
Everything runs on your own computer. No accounts, no subscriptions, and your journal never leaves your device.
1. Download the app
Go to character-sheet.html on GitHub, click the download icon (top right of the file view). Open it in your browser.
2. Install Ollama and download a model
See ollama-setup.md for the full install guide and model recommendations.
Quick start: install Ollama, then run ollama pull gemma3:4b in a terminal. gemma3:4b works on most computers (8 GB RAM, ~4 GB download).
3. Start Ollama with browser access
Browsers cannot reach Ollama by default. Run the command for your OS in a terminal and keep it open while using the app:
| OS | Command |
|---|---|
| Mac | pkill -f "Ollama.app/Contents/MacOS" 2>/dev/null; pkill -f "ollama serve" 2>/dev/null; sleep 1; OLLAMA_ORIGINS="*" ollama serve |
| Linux | pkill -f "ollama serve" 2>/dev/null; sleep 1; OLLAMA_ORIGINS="*" ollama serve |
| Windows (PowerShell) | Stop-Process -Name ollama -Force -ErrorAction SilentlyContinue; Start-Sleep 1; $env:OLLAMA_ORIGINS="*"; ollama serve |
Close the terminal when you are done to stop Ollama.
4. Open the app and start chatting
Click the chat icon (bottom bar), open Chat Settings (gear icon), confirm your model is selected, and start talking.
Having trouble? See ollama-setup.md.
Use the live demo (requires HTTPS) or your downloaded file.
Your journal data is sent to your AI provider with each message. For sensitive journalling, use Path B instead. See ai-privacy-guide.md for provider details.
- Create an account at console.anthropic.com (separate from Claude.ai)
- Go to API Keys and create a new key
- Store the key in a password manager. It cannot be retrieved from Anthropic after creation
- Enable two-factor authentication on your Anthropic account
- In the app: click Security (bottom bar) and set a password first. The app won't save an API key without one
- Open Chat Settings (gear icon in the chat panel), select a Claude model, and paste your key
Your API key grants access to your Anthropic account. Anyone with it can generate charges. Never paste it into websites you don't trust.
Use any AI (Claude, ChatGPT, Gemini) through its normal web interface. No in-app chat or API key needed.
First session:
- Download character-sheet.html and instructions.md (click each link, then the download icon)
- Create an AI project (e.g. claude.ai → New Project)
- Upload
instructions.mdto the project knowledge - Paste the quickstart prompt and start talking
- At the end of the session, ask: "Update my data.json based on our conversation."
- Upload the resulting
data.jsonto project knowledge - Import into the app: click the upload icon (bottom right), paste the JSON, Import
Your journal data is sent to your provider with each message. Check their privacy settings if this concerns you.
I'm setting up character-sheet, a gamified personal life dashboard. I've attached instructions.md which explains the data format.
Start by asking me what's going on in my life right now: what I'm working on, what's on my mind, what I'm trying to change. Keep it conversational, ask one thing at a time, and follow the thread. Never push me to share more than I want to.
Once you have a reasonable picture, generate my data.json using the format in instructions.md. We can fill in the gaps over time through regular sessions.
Optional: for a fuller first session, try the Deep Dive, a structured interview covering all main fields. For richer session prompts, also upload journalling-prompts.md to project knowledge alongside instructions.md.
- Start a new chat in your AI project (it already has your context from project knowledge)
- Journal freely, or pick a session mode
- Ask your AI to "Update my data." For shorter sessions this produces a Partial update to keep token usage low
- Replace
data.jsonin project knowledge: remove the old version, upload the new one - Sync the app: click the upload icon, paste the JSON, Import
On mobile? Ask your AI to write the JSON as a file: "Write my updated data.json as a downloadable file." Then use the file picker in the import modal. See Mobile workflow.
| Tab | What it shows |
|---|---|
| Combat | Status check-in (Focus / Energy / Interest / Purpose) and regular quest trackers |
| Balance | The four elements (Air / Fire / Water / Earth), scored, detailed, and charted over time |
| Quests | Main quest, side quests with progress, completed quests |
| Skills | Core skills radar (Rest, Movement, Nutrition, Connection), all skills ranked by priority, XP history |
| Enemies | Active negative patterns, limiting beliefs, compulsions, distortions, and the graveyard. Bosses are root patterns; minions are symptoms. |
| Allies | Everything working for you: loot, spells, liberating beliefs, and flow sources |
| Achievements | Titles (insights, deeds, transmutations, surrenders) and character classes |
| Journal | Progression timeline, last session read, session starters, and chapter entries |
See wiki.md for a detailed breakdown of each tab.
Stay in Freeflow (default) or invoke any mode mid-session just by naming it.
| Mode | Trigger phrase | Best for |
|---|---|---|
| Freeflow | (default) | Following energy wherever it goes |
| Coach | "coach mode" |
Specific goal, accountability, clear plan |
| Introspection | "introspection mode" |
Blindspots, patterns, what you keep avoiding |
| Guided | "guided mode" |
Not sure where to start, AI leads with prompts |
| Catch-up | "catch-up mode" |
Been a while, fast broad sweep |
| Debrief | "debrief mode" |
Review what's about to be written to JSON |
The AI controls all XP, and the main way to earn it is through journalling. Brain dump what's been happening, what you've worked through, what you've noticed about yourself, and the AI will reflect it back as progress on your sheet: updated quests, new skills, achievements unlocked, enemies named or defeated.
Made a breakthrough? Call it out and make the case for why it deserves recognition. Think something was undervalued? Push back. This forces you to articulate what actually changed (which deepens the insight) and builds a habit of genuinely noticing your own growth.
It's a conversational mirror, not a vending machine. You could easily cheat this system and defeat yourself in the process.
character-sheet is free and open source. Both the app and instructions are designed to be modified.
- Edit
instructions.mdto change how your AI communicates, what it focuses on, how it scores progress, or what counts as an achievement. All changes stay in your own copy. - Edit
character-sheet.htmldirectly to rename fields, adjust visual styles, or remove parts you don't use. It's a single file with no build step.
Contributions welcome: if you build something useful, open a pull request or share it in discussions.
- Diagramming relationships between quests, skills, enemies, etc.
- Skill trees: structured skill progression with branching paths
- Export to PDF: a read-only view of your sheet
- Quest dependencies: unlock side quests when others complete
- Themes / skins: alternate visual styles beyond the default dark RPG look
- Sync / backup: optional encrypted export or cloud sync without compromising local-first principles
The immediate focus is getting the app in front of real users, collecting feedback, and fixing bugs. Feature requests and bug reports welcome: open an issue.
"We are longing for an understanding of the universe around us when we barely understand the universe within our minds." (Northlane)
AI supercharged journalling and made self-reflection genuinely useful for me, but every conversation started mostly from scratch. The real insights lived in chat logs I'd never reread. I wanted somewhere to see that reflection clearly, own it, and build on it over time.
I'm a professional cyber security consultant with real concerns about trusting any company with deep personal data. character-sheet was inspired by Obsidian.md and the principle that users should own their knowledge on their own devices. The app is a single HTML file with no server, no telemetry, and no accounts. If you want to go further, pair it with a local model via Ollama so no journal content ever leaves your machine.
If social media can use gamification to hold attention and keep people scrolling, I'd rather use powerful technology to help people understand and improve themselves.
Ultimately, I built this because I wanted it to exist. LFM.
character-sheet is free and always will be. If it's been useful to you, you can sponsor the project on GitHub.
I pledge 10% of anything received to the Center for Humane Technology, a nonprofit working to ensure AI and social media serve human wellbeing rather than exploit it.
character-sheet is not a replacement for professional mental health support. If you're struggling, please reach out to a qualified professional.
If you're a designer who finds character-sheet useful and has ideas for a logo or visual identity, I'd love to hear from you.
Companion to team-sheet, an IFS inner parts mapping app built on the same local-first, AI-optional architecture. If character-sheet is Skyrim where you are the main character, team-sheet is Animal Crossing for understanding and befriending your inner world.