A personal life dashboard styled as an RPG character sheet. Fill it in yourself, journal with your AI outside the app, or connect an AI directly and chat inside. Nothing leaves your device unless you choose to send it.
How do you want to use it? You can change this at any time.
A Fill it in yourself. No AI required, works completely offline.
1
Click any field to edit it. Start with your name and main quest at the top. Almost everything in the app is editable directly.
2
Fill in the tabs at your own pace: Quests, Skills, Enemies, Allies, Achievements. No rush. Add things as you think of them.
3
Export regularly using the Export button (bottom bar). Your data only exists in this browser, so Export is your backup.
B Copy-paste with your AI. Journal in any AI, then import the result.
1
Download instructions.md, the file that tells your AI how this app works.
2
Create a project in your AI of choice and upload instructions.md to its knowledge base.
3
Start a chat and say: "I'm setting up character-sheet. Start by asking me what's going on in my life."
4
End the chat: ask your AI "Update my data" and copy the JSON it produces.
5
your data, paste the JSON, and hit Apply. Your sheet updates instantly.
C Chat inside the app. API key or local Ollama.
1
Open Chat using the star icon in the bottom bar.
2
Open Chat Settings (gear icon inside the chat panel) and enter your API key, or set up a local Ollama model. The settings screen shows the exact Ollama start command for your OS.
3
Start a conversation. Journal for 10-20 minutes and your sheet fills in from your own words. No copy-pasting needed.
i
Ollama runs entirely offline after a one-time model download. API key usage sends your journal to the provider's servers.
Privacy: Your data lives only in this browser. No server, no accounts, no tracking. Export regularly and treat data.json like a private diary. If you use a cloud AI, that provider may store what you share with them. Provider privacy guide · Full threat model
⬡ CHARACTER-SHEET
Enter your password to continue
If you recently pulled from GitHub and the password stopped working: the backup may have been pushed from a device with a different password. Go back to the original device, push again, then pull here.
Warning: without your password, your data cannot be decrypted or recovered. There is no way to retrieve it.
If you are certain your data is gone and want to start fresh, this will permanently erase everything and open a blank app.
Are you sure? This cannot be undone. All encrypted data will be deleted.
⚠ Your data could not be saved. Browser storage is full. Export ↓ now to save a backup. Then clear browser data for this file (or delete old chats from the Journal tab) and reload.
Saved to browser storage. Export ↓ to keep a permanent backup.
You're viewing Steve's demo data. Nothing you do here is saved. Download the app to create your own character sheet.
Your sheet is empty. Click your name at the top to start, or use First-time setup for a guided walkthrough.
Harmony
Balance between elements. 100% means all equal, lower means divergence.
Current avg
7d avg
All-time avg
Balance at your first recorded session. 100% means all four elements were equal.
—
Initial
Average balance across all recorded sessions.
—
Average
Balance at your most recent session.
—
Latest
Mastery
Average mastery across all four elements. 100% means full mastery in all areas.
Over Time
TotalAirFireEarthWater
Total Mastery
Total mastery (average of all four elements) at your first recorded session.
—
Initial
Average total mastery across all recorded sessions.
—
Average
Total mastery at your most recent session.
—
Latest
AIR
Awareness:"What can you notice now?"
✦Mostly Dirty Air - self-monitoring mistaken for awareness
Latest note
Your own note or the latest read from your AI. Click to edit.
Progression Timeline
◈ Blindspots
How situations or evidence are being filtered right now
View all in Enemies →
☁ Loot
Resources, tools, and advantages working for you
View all in Allies →
FIRE
Action:"What do you feel called to do?"
✦Depleted - running on fear and obligation, not values
View all in Quests →
⚡ Compulsions
Action-level patterns driven by urgency or avoidance
View all in Enemies →
✦ Spells
Reliable actions that shift your state or create momentum
View all in Allies →
▲ Underlevelled
High-priority skills still at beginner or novice level
View all in Skills →
★ Signature
High-priority skills at adept level or above
View all in Skills →
EARTH
Beliefs:"What story are you telling yourself?"
✦Controller dominant - narrating experience as failure
⬡ Limiting Beliefs
Harmful narratives that constrain how you act
View all in Enemies →
⬡ Liberating Beliefs
Useful reframes that open up what's possible
View all in Allies →
Values
WATER
Flow:"What are you resisting right now?"
✦Real aliveness scarce - compulsive exits filling the gap
↓ Temptations
Desire-driven patterns that cost more than they give
View all in Enemies →
↑ Sources
Activities that reliably produce aliveness
View all in Allies →
Needs
Main Quest
Your current direction
Dailies
Time allocation
Side Quests
Active battles on secondary fronts
Completed
Proof you can finish things
Core Skills
Foundational cornerstone skills that reliably improve physical and mental wellbeing
Update your core skills for today
Rest50
Movement50
Nutrition50
Connection50
History
◈ Skill Tree
Click a node to inspect. Drag to reposition. Shift+drag between nodes to draw a connection.
Drag from this skill to another to connect them. Press Escape to cancel.
DPSTankSupportLeadEnablesSynergy
◈ Keystone Skill
Your highest-priority underlevelled skill. Low level, high priority means maximum growth potential
By Role
Breakdown of number of skills tracked for each role. Pips display average mastery for skills of each role (I–V)
◈ All Skills
Ranked by priority. Drag to reorder
◈ XP History
Gains, losses, and level-ups
Current State
A daily snapshot of your inner conditions. Track these over time to spot patterns in what lifts or drains you.
Update your current state for today
Focus70
Energy60
Purpose55
Interest65
History
Regular quests
Recurring things that matter. Track consistency and spot trends over time.
Some optional inspiration for what you might want to chat about
"Here's what's been going on lately..."
"I want to [goal/change/achieve something]... let's talk through it"
"I completed [something] recently. Wanted to log it and figure out what's next"
"I've been struggling with [pattern/situation] and can't seem to shift it"
"Quick check in. Here's where things stand across my main areas of focus..."
"I want to go deeper on one thing today:"
"[Guided] Interview me. I want to update my whole sheet"
Last chat
Timeline
Progression Summary
Your journey so far: a summary written by your AI from your chats
✦ Allies
Loot, spells, liberating beliefs, and sources of aliveness: everything working for you
By Type
Ally breakdown
By Type
Enemy breakdown
Graveyard
Named things lose their power
★ Active Classes
Select up to 3 classes to display in your header. Click a class card to toggle it.
✦ All Classes
Roles and identities that shape how you operate. Use the role badge to mark your function in each area
By Role
Class breakdown
★ Featured Titles
Select up to 3 titles to display in your header. Click a title card to toggle it.
◈ All Titles
Insights, deeds, transmutations, and surrenders: moments that marked you. Click a type badge to change it
By Type
Title breakdown
Data
♥ SUPPORT THIS PROJECT
character-sheet is free, open source, and always will be. I built it because I wanted it to exist: a personal life dashboard that's genuinely private, locally owned, and helps you reflect on what actually matters.
If it's been useful to you, a small contribution helps keep it going.
10% of any donations support 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 or a service like CALM or Befrienders Worldwide.
? HOW CHARACTER-SHEET WORKS
Pick the approach that fits your setup. You can switch anytime.
Fill it in yourself
No AI needed. Just you and the app.
1
Do daily check-ins. Click the check-in button to log your HP, Mana, and element readings each day.
2
Edit fields directly. Click any stat, label, or note to update it in place.
3
Export regularly. Your data lives only in this browser. Use Export to save a backup file you can restore later.
A warning banner appears when you have unsaved edits not yet exported.
Journal with any AI
⚠ Re-upload instructions.md to your AI project. Clears after your next chat.
Use any AI app you already have. Copy and paste to update your data.
1
Download instructions.md. This file tells your AI how the app works and what data to produce.
2
Create a project in your AI (Claude Projects, ChatGPT Projects, Gemini Gems, etc.) and upload instructions.md so it is included in every session.
3
Journal with your AI. At the end, ask: "Update my data.json" and copy the JSON it outputs.
4
Paste into Import to apply the update.
Before each new session, Export your latest data.json and paste it into your AI project so it has your current state.
Chat inside the app
Connect your AI directly. No copy-paste needed.
1
Open Chat using the Chat button in the bottom bar.
2
Choose how to connect:API key: enter a key from Anthropic, OpenAI, or another provider. You pay for usage directly (usually a few cents per session). Fastest setup.Ollama: a free app that runs an AI model on your own computer. Nothing leaves your device. Requires a one-time install and model download (4-10 GB).
3
Chat and let the app update itself. When your AI produces updated data, an Apply button appears. Tap it to save the changes instantly.
The Chat button walks you through setup the first time you open it.
HOW SYNC WORKS
Changes are saved locally in your browser. Export ↓ to create a backup or to keep an AI up to date with your latest state.
↕ SYNC TO GITHUB
Back up your encrypted data to a private GitHub repo. On another device: Pull, then enter the same password in Security to decrypt. Without that password the backup cannot be read.
► First time? Step-by-step setup guide
GitHub is a free website for storing files. We use it as a private storage locker for your backup. Nobody else can access it. Setup takes about 5 minutes and you only do it once.
Step 1: Create a GitHub account (skip if you already have one)
In the Repository name box, type any name, for example: my-journal-backup
Under the name box you will see two options: Public and Private. Select Private. This is important. Public means anyone on the internet could see your file.
Leave everything else as-is and click the green Create repository button at the bottom
You will land on a page with a URL like github.com/yourname/my-journal-backup. You need the last two parts: yourname/my-journal-backup. Copy that and paste it into the Repository field below.
Step 3: Create an access key (called a "token")
A token is like a limited-access key card. This one will only allow this app to read and write your one backup folder. It cannot touch anything else on your GitHub account.
In the Token name box, type something like journal-sync so you remember what it is later
Under Expiration, click the dropdown and choose Custom. Set the date to about 90 days from today. GitHub will email you a few days before it expires so you can renew it. (A shorter expiry limits the damage if the token is ever stolen.)
Under Repository access, select Only select repositories, then click the dropdown that appears and choose the backup folder you just created
Under Permissions, click Repository permissions to expand it. Find Contents in the list and change its dropdown from "No access" to Read and write. You do not need to change any other permissions.
Scroll to the bottom and click Generate token
GitHub shows you the token once only. It starts with github_pat_. Copy it now and save it somewhere safe (your password manager, a secure note, or even a piece of paper in a drawer) before pasting it into the field below. If you lose it you can always generate a new one, but you will need to paste it in here again.
Step 4: Fill in the fields below and push your first backup
Paste your token into the GitHub personal access token field
Paste yourname/my-journal-backup into the Repository field
Leave File path as data.enc
Click Push. If everything is set up correctly you will see a confirmation message.
Using the backup on a second device
Open this app on the other device and open the Sync panel
Fill in the same token, repository, and file path
Click Pull. Your data will be downloaded and applied.
Go to Security and enter the same password you use on your main device. The backup is encrypted with that password and cannot be read without it.
Renewing your token when it expires
GitHub will email you a few days before expiry. When that happens: go to github.com/settings/personal-access-tokens, find your token, click Regenerate, copy the new token, and paste it into the field below. Everything else stays the same.
Security note: your token gives access to your backup folder on GitHub. The password you set in Security encrypts the backup file itself, so even if someone got the token, they could not read your data without the password too. Keep both safe and do not share them or paste them into any other app.
A security password is required before you can use GitHub sync. This keeps your GitHub token encrypted alongside your data.
Create a new private repo on GitHub first, then paste yourname/repo-name here.
Leave as data.enc unless you need to change it.
Pull will merge the GitHub backup into your current data: new entries from GitHub are added, and any fields both versions changed are updated from the backup. You can undo the merge immediately after if needed. On a new device: fill in your token and repository above, then pull. Your data will be merged in. Make sure your password in Security matches the one you used on your original device.
Push after each session to keep your backup current. On another device: Pull, then go to Security and enter the same password you use here to decrypt your data.
All data was reset.
⚙ SECURITY
⚠ Your data is stored only in this browser. Nothing leaves your machine unless you send it. If you use a cloud AI, that provider may store what you share with them. Setting a password encrypts your data so it is protected if someone else opens this browser. Use Firefox if possible: Chrome and Edge share storage across all local files, making them easier to cross-read.
Password Protection
When set, all local data is encrypted with AES-256-GCM. Encrypting takes 1-3 seconds each time you set or change your password. Recommend: a 4-word random passphrase (e.g. from a password manager like 1Password, Bitwarden, or Apple Passwords) or a 16+ character random password for strongest protection.
⚠ If you forget your password, your data cannot be recovered. Keep an export of your data.json as a backup.
Once a password is set, use in the toolbar to back up your encrypted data to a private GitHub repo.
Auto-Lock After
Browser
Check-in Frequency
How often the check-in modal should auto-appear. Manually opening it with the Check-in button always works regardless.
Danger Zone
This deletes everything: your character, quests, skills, history, and settings. An undo option will appear for 60 seconds after reset.
Level reached
5
Level Up
↑ IMPORT
Paste a data.json here and hit Apply. Use this to restore a backup, migrate from another device, or import an update from your AI after a chat.
⚠ data.json contains your private data. Treat it like a diary and don't share it casually.
↓ EXPORT
Encrypted backup
Downloads the same encrypted file that GitHub sync uses. Safe to store anywhere: AES-256-GCM encrypted with your password and unreadable without it. Use as an offline backup or to move to a new device.
⚠ The exports below contain your private data in plain text. Store them securely and do not share them casually. Uploading to an AI service or cloud storage means trusting that provider with your data.
Export snapshot
Your portable data snapshot. Use for backup, device migration, or to share your latest state with your AI project.
Export all data
Exports all app data, including quest and xp history, etc. Use this for moving between devices or browsers.
⚠ This file is large. Do not paste it into an AI chat. It is for device migration only.
Delete?
00:00
0%
Log today:
Check-in
Demo mode: sliders are interactive but nothing is saved.
Hey, how are you?
Vitals
HP50
Mana50
Core Skills
Rest50
Movement50
Nutrition50
Connection50
Current State
Focus50
Energy50
Purpose50
Interest50
Before you start
Your messages will be sent to your AI provider and are subject to their privacy policy. character-sheet never stores or sees your data.
For full privacy, use a local model via Ollama (free, no data leaves your device). You can change the model in chat settings at any time.
character-sheet
Journal Chat
⚠Cloud model active: every message and your journal data are sent to an external server. Your provider may store or review them. For full privacy use a local Ollama model (free). Provider privacy guide
Demo mode: chatting with Steve's data. Chats won't be saved. Running a local Ollama model is recommended.
🔒
Enter your password to view past chats
Chat Settings
A. Local models (Ollama): free, fully private, no account needed. Everything stays on your device. Recommended.
B. Cloud models (Anthropic): your journal is sent to Anthropic's servers and may be stored. Requires an API key.
C. No AI: all other features work fine without any AI model set up.
Paste it above. Store a copy in your password manager (1Password, Bitwarden, etc.) so you can retrieve it later.
Keep your API key private. Anyone with it can use your Anthropic account. Never paste it into websites you don't trust.
How long the AI's reply can be. 2048 is enough for most conversations; raise it if responses get cut off.
Controls when updated data is written back to the app. Frequent sync costs more tokens with cloud models.
When on, any data update shows a summary of what will change with an Apply button. When off, auto-sync applies silently. Has no effect in Manual mode (Update sheet always shows a review).
Compact summarises older messages into a short bullet-point recap, keeping the last few exchanges verbatim. Use this if the AI starts forgetting earlier topics or you get context-limit errors.
Which model is best for me?
Your current data size
...
tokens (data + system prompt). The Context Window in Chat Settings is auto-set to cover this with room for the conversation.
Pick by RAM
RAM
Model
8 GB
gemma3:4b
16 GB
qwen2.5:7b
32 GB
qwen2.5:14b
64 GB+
qwen2.5:32b
For a precise fit: llmfit
llmfit detects your RAM and GPU then scores every model. Run it once to get a ranked list tailored to your hardware.
1. Install: brew install llmfit1. Download llmfit for Windows and add it to your PATH (or run from the download folder)1. Download llmfit for Linux and make it executable: chmod +x llmfit && sudo mv llmfit /usr/local/bin/ 2. Run: llmfit fit