1. Local execution layer
The laptop as the working front end
The laptop remains the place where active work happens. Repositories
live there. Shell commands run there. Claude and Codex are invoked
there. This layer is optimized for fast iteration, file editing, and
immediate task execution.
/Users/example/dev/
/Users/example/dev/project-a
/Users/example/dev/project-b
/Users/example/bin/
2. Local agent layer
Claude and Codex as working agents
Both agents are used because they are useful in different ways.
Claude is strong for structured reasoning, repo guidance, and
multi-step analysis. Codex is strong in code-heavy workflows and
implementation passes. The environment keeps both available so the
tool can match the task.
claude --help
codex --help
3. Local script layer
Small scripts handle the glue work
The scripts under the local bin/ directory connect the
layers together. They are intentionally small and role-specific.
claude_stop_hook.sh captures session-end context
git_daily_sync.sh handles repository-oriented sync or maintenance behavior
claude_setup_audit.sh checks Claude-related setup and guidance files
codex_setup_audit.sh checks Codex-related setup state
These scripts are useful because they turn operational habits into
named, inspectable components.
4. Remote persistence layer
OpenClaw on the VPS
OpenClaw runs remotely so continuity survives local restarts, laptop
shutdowns, and tool restarts. It is the persistent layer that stores
memory, owns the workspace, and coordinates tool access.
/home/example/.openclaw/workspace
/home/example/.openclaw/workspace/AGENTS.md
/home/example/.openclaw/workspace/MEMORY.md
/home/example/.openclaw/workspace/memory/
5. Memory model
Workspace files + daily notes + durable memory
OpenClaw uses workspace files for startup context, daily notes for
recent events, and MEMORY.md for durable facts. This is
one of the most important structural choices in the whole setup.
# workspace bootstrap files
AGENTS.md
SOUL.md
USER.md
TOOLS.md
HEARTBEAT.md
# long-term memory
MEMORY.md
# daily notes
memory/YYYY-MM-DD.md
6. Ingestion layer
Hooks and parsers feed events into memory
Commits, session endings, and other relevant events are pushed into
the memory layer through hooks and helper scripts. This is what keeps
the system cumulative.
~/.git-hooks/post-commit
/Users/example/bin/claude_stop_hook.sh
/Users/example/bin/git_daily_sync.sh
7. Private network path
Tailscale, loopback binding, SSH tunnel, firewall
The memory and orchestration layer stays private. Tailscale provides
the private network path. The gateway stays loopback-bound. SSH can
bridge local access where needed. The provider firewall keeps the
public edge narrow.
# private path
# laptop -> Tailscale -> VPS -> localhost-bound service
# optional bridge
ssh -N -L 3000:127.0.0.1:3000 user@example-vps
8. GitHub boundary
Versioned code and public publishing stay outside the memory layer
GitHub holds the repositories and publishing workflows. It keeps code,
docs, and static site content versioned and visible outside the live
memory system.
git remote -v
git push -u origin main
9. OpenClaw components in practice
CLI, workspace, tools, skills, and runtime behavior
OpenClaw in this setup is more than a CLI. It provides the workspace,
the session runtime, the memory layer, the available tools, and the
skills that shape how work gets done.
- CLI for setup and runtime interaction
- workspace files for startup behavior and continuity
- memory files for durable and daily context
- skills for specialized behaviors such as GitHub, summaries, weather, and coding support
- tool runtime for file editing, shell execution, and orchestration
The point is not to list features. The point is that these components
work together to make the environment usable as an actual system.
10. The system flow today
How the parts actually connect
A typical flow now looks like this: the user works from the laptop,
invokes Claude or Codex, changes files in a local repo, git events and
session endings feed OpenClaw, OpenClaw stores the context in the VPS
workspace, and GitHub receives the versioned result when changes are
pushed.
# simplified flow
# user -> laptop -> Claude/Codex -> repo changes
# repo + hooks -> OpenClaw memory on VPS
# final code/docs -> GitHub
# public site -> GitHub Pages