Snake Tower Migration
This is the practical way to move Snake v0.2 from the laptop to a tower that stays on.
First Principle
There are two different goals:
Exact exact SnakeSame runtime, local model on LM Studio
Those are not the same thing.
If you want exact behavior, keep the same cloud models and just move the process plus state to the tower. If you want LM Studio, you keep the DDA-X runtime and state, but the model changes, so the behavior will drift.
Option A: Exact Mirror On Tower
Use this if you want the closest possible continuity.
- Clone this repo on the tower.
- Check out commit
ba1e4fd811bd6ab82369b1aa3e3cf0bd1a6a1353. - Copy the entire
data/discord_agent_v0_2/directory from laptop to tower. - Recreate
.envon the tower with the same Discord and OpenAI values. - Keep:
DISCORD_AGENT_PROFILE=configs/discord_agent/snake_v0_2.jsonDISCORD_DATA_DIR=data/discord_agent_v0_2DISCORD_CHAT_MODEL=gpt-5-miniDISCORD_EMBED_MODEL=text-embedding-3-large- From the repo root, run:
Or double-click / shell-run:
- If you want it to stay running in the background, use:
That preserves the same runtime profile and the same saved state.
Option B: Tower + LM Studio
Use this if uptime and local inference matter more than exact model continuity.
What Changes
- Same Discord bot code
- Same
Snake v0.2profile - Same copied
data/discord_agent_v0_2/state - Different model backend
So this is still Snake, but not exactly the same Snake as the OpenAI-cloud build.
Required Env Settings
Point the provider at LM Studio's OpenAI-compatible server:
OPENAI_BASE_URL=http://127.0.0.1:1234/v1
OPENCLAW=lm-studio
DISCORD_CHAT_MODEL=<your-lm-studio-chat-model-id>
DISCORD_EMBED_MODEL=<your-lm-studio-embedding-model-id-or-keep-openai>
OPENAI_EMBED_DIMENSIONS=
Notes:
- Leave
OPENAI_EMBED_DIMENSIONSblank for most local embedding servers. - If LM Studio is only serving chat, keep OpenAI embeddings instead:
DISCORD_EMBED_MODEL=text-embedding-3-large- and keep your OpenAI key in
OPENCLAW
That hybrid path is often the least annoying.
Recommended Tower Strategy
The lowest-risk sequence is:
- Port the exact OpenAI build first.
- Verify Snake wakes up with the same state and channel behavior.
- Only then try LM Studio for chat.
- If LM Studio feels too different, keep local tower hosting but stay on OpenAI models.
That separates uptime problems from model-behavior problems.
Tower Setup Notes
- Snake does not need VS Code open.
- Snake only needs:
- tower powered on
- internet access for Discord
- Python process running
- LM Studio running too, if using local inference
- The saved mind/state lives on disk under
data/discord_agent_v0_2/ - Sleeping the machine makes Snake unreachable, but does not erase the saved state
Suggested Deployment Layout On Tower
NVIDIA / LM Studio Notes
LM Studio supports running a local OpenAI-compatible server and also supports headless mode for remote or always-on machines. Their docs also note Windows hardware acceleration support for NVIDIA, AMD, and Intel Arc GPUs. If you want the tower to stay always-on without the full desktop app in front, use LM Studio's headless mode / background service path rather than tying it to an interactive desktop session.
Official docs:
- OpenAI-compatible endpoint docs: https://lmstudio.ai/docs/app/api/endpoints/openai
- Headless mode docs: https://lmstudio.ai/docs/app/api/headless
- System requirements: https://lmstudio.ai/docs/app/system-requirements
What To Copy Before You Shut The Laptop
At minimum:
data/discord_agent_v0_2/configs/discord_agent/snake_v0_2.json.envrecreated manually- current repo commit hash
If you want the cleanest handoff, copy the full repo directory and then pull updates later.
One-Command Tower Habit
After the tower clone is set up and .env exists, your normal flow can just be:
Or background: