Record your traces of existence. existence-trace installs the way it works: you hand it to your AI.
Paste this into your AI coding agent (Claude Code, Cursor, Codex, or any capable agent). It reads this page and sets everything up, asking before it changes anything.
Read https://maxont.github.io/existence-trace/install and install existence-trace for me.
You need Python 3.11 or newer and an agent that can run shell commands. Nothing else: existence-trace uses only the Python standard library. Your journal and data stay on your machine, in a folder you choose.
Prefer the terminal? One line installs the etrace command (it never creates your data folder or edits your shell config):
curl -fsSL https://maxont.github.io/existence-trace/install.sh | bash
Want to read the script first? install.sh. Add --dry-run to see what it would do without changing anything.
You are the AI agent the user gave this page to. Everything below is addressed to you. Follow it in order. If you cannot do a step, say so plainly instead of pretending.
existence-trace records the user's traces of existence. The user writes a short daily journal. You read it through three lenses (PAD emotion, G stability and exploration, XP growth), ask the user questions when you are unsure, turn their answers into rules, apply those rules, and prove each time that you used them. Its strongest feature is the self-optimizing preference system: question, feedback, decision, rule, usage receipt, weekly audit. Source: https://github.com/MaxonT/existence-trace.
You must be able to (a) run shell commands and (b) read and write files in the user's home directory. If either is missing, stop and tell the user to paste this prompt into an agent that can, or to run the terminal one-liner above by hand.
python3 --version reports 3.11 or newer.uv, pipx or python3 -m pip is available. Prefer them in that order.sudo. Never install system-wide.Before running anything that changes the machine, show the user the exact command and wait for a yes. Start with a dry run:
curl -fsSL https://maxont.github.io/existence-trace/install.sh -o /tmp/etrace-install.sh bash /tmp/etrace-install.sh --dry-run
Read the output to the user. After they agree:
bash /tmp/etrace-install.sh etrace --version
If etrace is not on PATH, do not edit shell config on your own. Tell the user which command fixes it (uv tool update-shell, pipx ensurepath) and ask. Until then python3 -m etrace is equivalent.
default (neutral starting dimensions) or tiger-method (the author's own tuned set). Default to default.en or zh. Default to en.America/Chicago.~/existence-trace-data. Keep it outside this repository.etrace init --preset default --language en --timezone America/Chicago --dir ~/existence-trace-data export ETRACE_CONFIG=~/existence-trace-data/trace.toml etrace validate
When you run etrace yourself, add --json (etrace --json validate): in a terminal it otherwise prints a coloured view meant for people. validate must print "ok": true. If it does not, show the user the errors; do not edit files to force it through. If the folder already exists, do not overwrite it: ask whether to use it or pick another path.
To make ETRACE_CONFIG permanent, tell the user the line to add to their shell profile and let them decide. Do not append it yourself.
Open today's note in the journal folder and explain the only four zones the user edits: My PAD (optional, 0 to 5), My G self-rating (optional, blank is never read as 0), Closer to the real me (free text, you never modify it), and Feedback for the AI (notes for you; start with [Q-id] to answer a question). Everything else is yours to write, through the engine.
Offer to generate scheduler files for the agent in use. This only writes files; it installs nothing:
etrace schedule --target claude-code --out ~/existence-trace-data/schedule # targets: codex, claude-code, cron
Show the files and let the user wire them in. Do not load a LaunchAgent or edit crontab yourself.
If the user has a diary already (a folder of Markdown or text files, or a Day One export), ask for the path and run a dry run first:
etrace import PATH --dry-run etrace import PATH
It puts each day's text, word for word, into that day's protected "Original version" block. Show the user the list of skipped files; never guess a date for them. Running it again changes nothing.
If the user wants to try it now, there are two ways. Either read the task prompt and follow it with the engine commands it lists:
etrace prompt daily --raw
Or let the user connect an AI API (OpenAI, Anthropic, DeepSeek, OpenRouter, Ollama or any compatible address) and let etrace drive it. etrace ai set asks for the key itself with hidden input; never ask the user to paste a key into the chat, never put it on a command line, and never write it into trace.toml:
etrace ai set deepseek etrace ai test etrace run daily etrace import PATH --run # with an old diary: the AI reads the latest 7 days
~/.ssh, ~/.gitconfig or LaunchAgents without an explicit yes for that specific change.Finish with a short summary: what was installed, the exact data folder, the preset, whether validate passed, what you did not do (shell config, schedule), and the one next step for the user, which is to write tomorrow's journal.
existence-trace is MIT licensed. Star it on GitHub if it helps you.