POUR TERRAProfile · Projects

How the system works

Nine parts · built since 2024 · drawn October 2026

The keeper’s tools for work and life: an app, this paper, three backends, a coding agent with its tools, and the rules that score it all. Most of the code is private, so here it is drawn instead.

The front of house

Two things are made to be looked at. Everything else exists to feed them.

1TerraV2

Since June 2025 · Tauri (Rust), Next.js, Mantine

The desktop and Android app at the centre: a dashboard for the LifeUp task tracker, new tasks with their rewards worked out, a chat with the language models, and [REDACTED]. It grew out of an Electron app and then a Tauri app, both begun in 2024.

Private code

1TerraV2CallsBuilt in3 LLM_BEchat4 Productivity_BEsync, analytics5 Website_BE[redacted]LifeUptasks9 Arete Enginerewards
What TerraV2 is wired to · dashed: built in · hollow dot: a service outside

2pourterra.com

Since June 2024 · Next.js, Tailwind

This paper. Its Ask column puts questions to the White Book through the language-model backend, and the MfML series comes from the blog backend.

The front page

2pourterra.comCalls3 LLM_BEAsk5 Website_BEposts
What pourterra.com is wired to

The back rooms

Three small servers, each woken only when called, hold the data, send the emails and talk to outside services.

3LLM_BE

Since June 2024 · Python, FastAPI, LiteLLM

One way in to several model providers. It streams answers, keeps chat sessions, and lets a model call tools: read the task list, search the White Book, or remember a fact for later.

Ask the White Book

3LLM_BECallsCalled by4 Productivity_BEtasksModel providersanswersSupabasesessions1 TerraV2chat2 pourterra.comAsk4 Productivity_BEreport
What LLM_BE is wired to · hollow dot: a service outside

4Productivity_BE

Since July 2024 · Python, FastAPI

Where the LifeUp data lives: tasks, skills, history and achievements. Every morning it has a model write up the past week and emails it. It also keeps the error log that the app and the model backend write to.

Private code

4Productivity_BECallsCalled by3 LLM_BEreportSupabaseLifeUp dataMailgunreport1 TerraV2sync, analytics3 LLM_BEtasks5 Website_BE[redacted]7 TerraMCPtasksGitHub Actionsevery morning
What Productivity_BE is wired to · hollow dot: a service outside

5Website_BE

Since September 2025 · Python, FastAPI, Postgres

Serves the blog posts, and [REDACTED]

Private code

5Website_BECallsCalled by4 Productivity_BE[redacted]SupabasepostsMailgun[redacted]1 TerraV2[redacted]2 pourterra.composts
What Website_BE is wired to · hollow dot: a service outside

The agents

The newest layer: a coding agent, and the tools written for it.

6TerraCode

Since March 2026 · TypeScript, Bun

A coding agent, forked from opencode, with a long-term memory, a shell that runs in its own container apart from the machine, and skills it loads when a task calls for them.

Private code

6TerraCodeCalls7 TerraMCPtools8 LifeUp MCPtoolsModel providersanswers
What TerraCode is wired to · hollow dot: a service outside

7TerraMCP

Since March 2026 · Python, FastMCP

The agent's toolbox: notes in Obsidian, tasks for LifeUp, the error log, and a look into TerraCode's own sessions and memory, each a tool it can call.

Private code

7TerraMCPCallsCalled by4 Productivity_BEtasksObsidiannotes6 TerraCodetools
What TerraMCP is wired to · hollow dot: a service outside

8LifeUp MCP

Since May 2026 · TypeScript

A bridge that lets an agent read and add tasks on the phone directly, over the home network.

Private code

8LifeUp MCPCallsCalled byBuilt inLifeUptasks6 TerraCodetools9 Arete Enginerewards
What LifeUp MCP is wired to · dashed: built in · hollow dot: a service outside

The rules

Every part that hands out a reward asks the same small library what it should be.

9Arete Engine

Since May 2026 · TypeScript

The rules for rewards in one place: how much experience and gold a task is worth. The experience formula draws on research into practice and skill.

On npm (opens in a new tab)

9Arete EngineBuilt into1 TerraV2rewards8 LifeUp MCPrewards
What Arete Engine is wired to · dashed: built in

Before this

  • Streamlit site (opens in a new tab)2024 · became pourterra.comThe site before this one, with a chat that impersonated the keeper.
  • myPM and CTk (opens in a new tab)2024Two desktop chats: one fetched tasks through function calls, one looked through the webcam and spoke.
  • Electron app2024 · became Tauri appThe first LifeUp desktop app, a Streamlit app packed into Electron.
  • Tauri app2024 · became TerraV2The rewrite in Rust with Tauri, which for a while ran a small Llama model on the machine.

Other work

  • Image generation with diffusionNVIDIA courseA small diffusion model that learned to turn noise back into pictures of clothing.
  • Knowledge tracing2025Predicting whether a student will get the next question right, with an attention model from a 2020 paper.

Earlier work, on GitHub