Decisions

Why the environment looks like this

This system is the result of deliberate choices. Local work stayed local. Memory moved remote. Private services stayed private. GitHub stayed separate from the memory layer. The point of this page is to make those choices explicit and explain what each one solved.

1. Keep active work local

The laptop stays the execution surface

Editing files, exploring repos, and running coding agents are all better locally. The feedback loop is faster, local tools are easier to control, and interactive work stays close to the real code.

This decision solves the speed problem. It keeps day-to-day work responsive and avoids turning every code change into a remote systems problem.

2. Move persistence remote

OpenClaw belongs on the VPS

Memory and orchestration need to outlive local sessions. The VPS is the right place for that because it stays available even when the laptop is closed, rebooted, or disconnected.

This solves the continuity problem. Without it, the system always risks collapsing back into local-session amnesia.

3. Use both Claude and Codex

Different agents fit different work

The environment keeps both tools because they are useful in different ways. Claude is strong for guidance, explanation, cleanup, and structure. Codex is strong for implementation-heavy repo work.

This solves the tool-fit problem. The setup does not force every task through one agent when the work benefits from more than one.

4. Split memory from source control

GitHub is not the memory layer

Git stores code, workflows, docs, and publishable files. OpenClaw memory stores decisions, rationale, and cross-session context. That distinction is structural.

This solves the overload problem. If everything goes into git, the reasoning disappears. If everything goes into memory, the code loses a clean version boundary.

5. Use hooks for ingestion

Important context should not depend on memory alone

Commits and session endings feed the memory layer through hooks and helper scripts because manual logging alone is fragile.

This solves the capture problem. Useful context gets preserved even when the user or the agent does not stop and write notes manually.

6. Keep internal services private

Tailscale and the firewall are architecture choices

The memory layer is not a public app. Tailscale, loopback binding, SSH tunneling, and the firewall are part of the design, not cleanup work that gets added later.

This solves the exposure problem. Internal systems stay private and the public edge stays small.

7. Keep the public site static

Use GitHub Pages for publishing

The site is documentation. It does not need a custom runtime stack on the VPS. Keeping it static lowers maintenance cost and keeps the public-facing layer simple.

This solves the complexity problem. The VPS can focus on OpenClaw and the private orchestration layer instead of also hosting the docs site.

8. Use plain Markdown as the memory substrate

Readable files beat hidden state

The workspace depends on Markdown files because they are easy to read, version, diff, and reason about. There is no need for a fancy hidden format when the goal is continuity and inspection.

This solves the transparency problem. The memory layer stays visible and understandable.

What each decision answers

  • what problem existed
  • what changed
  • why that route was chosen
  • what boundary it created

What each decision avoids

  • vague architecture
  • private systems exposed by accident
  • tool sprawl with no separation of roles
  • memory and source control collapsing into one thing