Install existence-trace

Record your traces of existence. existence-trace installs the way it works: you hand it to your AI.

For humans

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.

FOR YOUR AI

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.

0. What you are installing

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.

1. Capability gate

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.

2. Preconditions

3. Ask before you touch anything

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.

4. Ask the user four questions, then create their data folder

  1. Preset: default (neutral starting dimensions) or tiger-method (the author's own tuned set). Default to default.
  2. Language: en or zh. Default to en.
  3. Time zone, as an IANA name such as America/Chicago.
  4. Data folder. Default ~/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.

5. Show the user the four zones they write in

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.

6. Optional: schedule

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.

7. Optional: bring in the user's existing diary

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.

8. Optional: run the first daily task

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

9. Rules you must keep

9. Report back

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.