character-sheet

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)

image


After a few sessions you’ll have:


🔒 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.


Privacy and security

Your data stays on your device. Nothing is transmitted automatically. You decide what leaves your machine and when.

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.


Files in this repo

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.

Choose your path

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

A. No AI

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.


B. Local AI with Ollama

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.


C. Cloud AI with an API key (in-app chat)

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.

  1. Create an account at console.anthropic.com (separate from Claude.ai)
  2. Go to API Keys and create a new key
  3. Store the key in a password manager. It cannot be retrieved from Anthropic after creation
  4. Enable two-factor authentication on your Anthropic account
  5. In the app: click Security (bottom bar) and set a password first. The app won’t save an API key without one
  6. 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.


D. Cloud AI via copy-paste (no API key)

Use any AI (Claude, ChatGPT, Gemini) through its normal web interface. No in-app chat or API key needed.

First session:

  1. Download character-sheet.html and instructions.md (click each link, then the download icon)
  2. Create an AI project (e.g. claude.ai → New Project)
  3. Upload instructions.md to the project knowledge
  4. Paste the quickstart prompt and start talking
  5. At the end of the session, ask: “Update my data.json based on our conversation.”
  6. Upload the resulting data.json to project knowledge
  7. 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.


Quickstart prompt

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.


Each session (copy-paste workflow)

  1. Start a new chat in your AI project (it already has your context from project knowledge)
  2. Journal freely, or pick a session mode
  3. Ask your AI to “Update my data.” For shorter sessions this produces a Partial update to keep token usage low
  4. Replace data.json in project knowledge: remove the old version, upload the new one
  5. 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.


Tabs at a glance

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.


Session modes

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

XP and levelling

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.


Tips


Customising

character-sheet is free and open source. Both the app and instructions are designed to be modified.

Contributions welcome: if you build something useful, open a pull request or share it in discussions.


Roadmap

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.


Why I built this

“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.


Support

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.


Digital artists wanted

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.