create-walle 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/bin/create-walle.js +276 -61
  2. package/package.json +1 -1
  3. package/template/CHANGELOG.md +44 -0
  4. package/template/bin/github-polish.sh +18 -0
  5. package/template/bin/install-service.sh +72 -0
  6. package/template/claude-task-manager/public/css/walle.css +9 -8
  7. package/template/claude-task-manager/public/index.html +1 -0
  8. package/template/claude-task-manager/public/setup.html +38 -1
  9. package/template/claude-task-manager/server.js +59 -0
  10. package/template/docs/site/astro.config.mjs +28 -0
  11. package/template/docs/site/package.json +19 -0
  12. package/template/docs/site/src/content/docs/api.md +189 -0
  13. package/template/docs/site/src/content/docs/guides/claude-code.md +62 -0
  14. package/template/docs/site/src/content/docs/guides/configuration.md +100 -0
  15. package/template/docs/site/src/content/docs/guides/quickstart.md +162 -0
  16. package/template/docs/site/src/content/docs/index.mdx +32 -0
  17. package/template/docs/site/src/content/docs/skills.md +137 -0
  18. package/template/docs/site/src/content.config.ts +7 -0
  19. package/template/package.json +11 -0
  20. package/template/wall-e/docs/specs/2026-04-01-publish-plan.md +2 -2
  21. package/template/wall-e/docs/specs/SKILL-FORMAT.md +1 -1
  22. package/template/wall-e/skills/_bundled/email-digest/SKILL.md +1 -1
  23. package/template/wall-e/skills/_bundled/email-sync/SKILL.md +1 -1
  24. package/template/wall-e/skills/_bundled/google-calendar/SKILL.md +1 -1
  25. package/template/wall-e/skills/_bundled/memory-search/SKILL.md +1 -1
  26. package/template/wall-e/skills/_bundled/morning-briefing/SKILL.md +1 -1
  27. package/template/wall-e/skills/_bundled/morning-briefing/run.js +110 -56
  28. package/template/wall-e/skills/_bundled/slack-backfill/SKILL.md +1 -1
  29. package/template/wall-e/skills/_bundled/slack-sync/SKILL.md +1 -1
@@ -144,6 +144,7 @@ const server = http.createServer((req, res) => {
144
144
  }
145
145
 
146
146
  // Redirect to setup page on first run (no API key configured)
147
+ // Only redirect root `/` — allow direct `/index.html` access so "Go to Dashboard" always works
147
148
  if (url.pathname === '/' && setup.needsSetup()) {
148
149
  res.writeHead(302, { 'Location': '/setup.html' });
149
150
  res.end();
@@ -203,6 +204,64 @@ function handleApi(req, res, url) {
203
204
  res.end(JSON.stringify({ owner_name: ownerName, has_api_key: hasApiKey, slack_connected: slackConnected, needs_setup: setup.needsSetup() }));
204
205
  return;
205
206
  }
207
+ if (url.pathname === '/api/setup/detect-key' && req.method === 'GET') {
208
+ let key = '';
209
+ let source = '';
210
+
211
+ // 1. Check process.env
212
+ if (process.env.ANTHROPIC_API_KEY && process.env.ANTHROPIC_API_KEY.startsWith('sk-ant-')) {
213
+ key = process.env.ANTHROPIC_API_KEY;
214
+ source = 'environment variable';
215
+ }
216
+
217
+ // 2. Try shell profile
218
+ if (!key) {
219
+ try {
220
+ const { execFileSync } = require('child_process');
221
+ const shell = process.env.SHELL || '/bin/zsh';
222
+ const result = execFileSync(shell, ['-ilc', 'echo $ANTHROPIC_API_KEY'], { encoding: 'utf8', timeout: 3000 }).trim();
223
+ if (result && result.startsWith('sk-ant-')) { key = result; source = 'shell profile'; }
224
+ } catch {}
225
+ }
226
+
227
+ // 3. Try Claude Code OAuth token from macOS Keychain
228
+ if (!key && process.platform === 'darwin') {
229
+ try {
230
+ const { execFileSync } = require('child_process');
231
+ const credJson = execFileSync('security', ['find-generic-password', '-s', 'Claude Code-credentials', '-w'], { encoding: 'utf8', timeout: 3000 }).trim();
232
+ if (credJson) {
233
+ const cred = JSON.parse(credJson);
234
+ const oauth = cred.claudeAiOauth;
235
+ if (oauth && oauth.accessToken) {
236
+ const expired = oauth.expiresAt && oauth.expiresAt < Date.now();
237
+ if (!expired) {
238
+ key = oauth.accessToken;
239
+ source = 'Claude Code (OAuth)';
240
+ } else {
241
+ // Token expired — tell user to refresh
242
+ res.writeHead(200, { 'Content-Type': 'application/json' });
243
+ res.end(JSON.stringify({
244
+ found: false,
245
+ claude_code_expired: true,
246
+ hint: 'Found Claude Code, but the OAuth token has expired. Run "claude" in your terminal once to refresh it, then click Detect again.'
247
+ }));
248
+ return;
249
+ }
250
+ }
251
+ }
252
+ } catch {}
253
+ }
254
+
255
+ res.writeHead(200, { 'Content-Type': 'application/json' });
256
+ if (key) {
257
+ res.end(JSON.stringify({ found: true, key, source }));
258
+ } else if (process.env.ANTHROPIC_BASE_URL) {
259
+ res.end(JSON.stringify({ found: false, hint: 'Your environment uses an API gateway (' + process.env.ANTHROPIC_BASE_URL + '). You may not need a separate API key — try going to the dashboard.' }));
260
+ } else {
261
+ res.end(JSON.stringify({ found: false, hint: 'No API key found. Checked: environment variables, shell profile, Claude Code keychain. You can get a key at console.anthropic.com' }));
262
+ }
263
+ return;
264
+ }
206
265
  if (url.pathname === '/api/setup/save' && req.method === 'POST') {
207
266
  let body = '';
208
267
  let bodyLen = 0;
@@ -0,0 +1,28 @@
1
+ import { defineConfig } from 'astro/config';
2
+ import starlight from '@astrojs/starlight';
3
+
4
+ export default defineConfig({
5
+ site: 'https://walle.sh',
6
+ integrations: [
7
+ starlight({
8
+ title: 'Wall-E',
9
+ description: 'Your personal digital twin — documentation',
10
+ social: {
11
+ github: 'https://github.com/ShanniLi/tools',
12
+ },
13
+ sidebar: [
14
+ {
15
+ label: 'Getting Started',
16
+ autogenerate: { directory: 'guides' },
17
+ },
18
+ {
19
+ label: 'Reference',
20
+ items: [
21
+ { label: 'Skills', link: '/skills/' },
22
+ { label: 'API', link: '/api/' },
23
+ ],
24
+ },
25
+ ],
26
+ }),
27
+ ],
28
+ });
@@ -0,0 +1,19 @@
1
+ {
2
+ "name": "walle-docs",
3
+ "version": "0.1.0",
4
+ "private": true,
5
+ "scripts": {
6
+ "dev": "astro dev",
7
+ "build": "astro build",
8
+ "preview": "astro preview"
9
+ },
10
+ "dependencies": {
11
+ "@astrojs/starlight": "0.32.5",
12
+ "astro": "5.4.2",
13
+ "sharp": "^0.33.0"
14
+ },
15
+ "overrides": {
16
+ "@astrojs/sitemap": "3.3.0",
17
+ "zod-to-json-schema": "3.24.5"
18
+ }
19
+ }
@@ -0,0 +1,189 @@
1
+ ---
2
+ title: API Reference
3
+ ---
4
+
5
+ CTM serves all APIs on port 3456. Wall-E APIs are proxied through CTM at `/api/wall-e/*`.
6
+
7
+ ## Service Management
8
+
9
+ | Method | Path | Description |
10
+ |---|---|---|
11
+ | GET | `/api/services/status` | Returns running status and PIDs of CTM and Wall-E |
12
+ | POST | `/api/restart/ctm` | Restart the CTM server |
13
+ | POST | `/api/restart/walle` | Restart the Wall-E daemon |
14
+ | POST | `/api/start/walle` | Start the Wall-E daemon |
15
+ | POST | `/api/stop/walle` | Stop the Wall-E daemon |
16
+
17
+ ### Example
18
+
19
+ ```bash
20
+ curl -s http://localhost:3456/api/services/status
21
+ # {"ctm":{"running":true,"pid":1234,"uptime":3600},"walle":{"running":true,"pid":5678}}
22
+ ```
23
+
24
+ ---
25
+
26
+ ## Wall-E Brain
27
+
28
+ ### GET /api/wall-e/status
29
+
30
+ Returns brain stats, owner info, and memory counts.
31
+
32
+ ### GET /api/wall-e/memories
33
+
34
+ List memories with optional filters.
35
+
36
+ **Query params:**
37
+ - `source` — filter by source (`slack`, `calendar`, `email`, `ctm`)
38
+ - `since` — ISO 8601 timestamp, return memories after this time
39
+ - `limit` — max results (default: 50)
40
+ - `offset` — pagination offset
41
+
42
+ ### GET /api/wall-e/knowledge
43
+
44
+ List knowledge entries.
45
+
46
+ **Query params:**
47
+ - `category` — filter by category
48
+ - `subject` — filter by subject
49
+ - `status` — filter by status (`active`, `superseded`, `retracted`)
50
+ - `limit`, `offset` — pagination
51
+
52
+ ### GET /api/wall-e/people
53
+
54
+ List known people with relationship and trust info.
55
+
56
+ ### GET /api/wall-e/timeline
57
+
58
+ Memory timeline ordered by timestamp DESC.
59
+
60
+ **Query params:**
61
+ - `limit` (default: 50)
62
+ - `offset`
63
+
64
+ ### GET /api/wall-e/questions
65
+
66
+ List pending questions.
67
+
68
+ **Query params:**
69
+ - `status` — `pending`, `answered`, `inferred`
70
+ - `limit`
71
+
72
+ ### GET /api/wall-e/brief
73
+
74
+ Get the latest daily briefing summary.
75
+
76
+ ### POST /api/wall-e/chat
77
+
78
+ Send a message to Wall-E and get a response.
79
+
80
+ **Body:**
81
+ ```json
82
+ {
83
+ "message": "What meetings do I have tomorrow?",
84
+ "channel": "ctm"
85
+ }
86
+ ```
87
+
88
+ **Response:**
89
+ ```json
90
+ {
91
+ "reply": "You have 3 meetings tomorrow...",
92
+ "tool_calls": []
93
+ }
94
+ ```
95
+
96
+ ### GET /api/wall-e/stats
97
+
98
+ Brain statistics — memory counts by source, knowledge counts, people count.
99
+
100
+ ---
101
+
102
+ ## Sessions
103
+
104
+ ### GET /api/sessions
105
+
106
+ List active terminal sessions.
107
+
108
+ ### WebSocket: ws://localhost:2001
109
+
110
+ Real-time terminal I/O for sessions. Messages:
111
+
112
+ - `{"type":"create","id":"uuid","cmd":"claude","label":"My Session"}` — create session
113
+ - `{"type":"input","id":"uuid","data":"text"}` — send input
114
+ - `{"type":"resize","id":"uuid","cols":80,"rows":24}` — resize terminal
115
+ - `{"type":"kill","id":"uuid"}` — kill session
116
+
117
+ ---
118
+
119
+ ## Prompts
120
+
121
+ ### GET /api/prompts
122
+
123
+ List all prompts. Supports query params: `folder`, `starred`, `tag`, `search`.
124
+
125
+ ### GET /api/prompts/:id
126
+
127
+ Get a single prompt with content, tags, and metadata.
128
+
129
+ ### POST /api/prompts
130
+
131
+ Create a new prompt.
132
+
133
+ **Body:**
134
+ ```json
135
+ {
136
+ "title": "My Prompt",
137
+ "content": "Prompt content here",
138
+ "content_html": "<p>Prompt content here</p>",
139
+ "tags": "[\"tag1\",\"tag2\"]",
140
+ "context_type": "general"
141
+ }
142
+ ```
143
+
144
+ ### PUT /api/prompts/:id
145
+
146
+ Update a prompt.
147
+
148
+ ### DELETE /api/prompts/:id
149
+
150
+ Delete a prompt.
151
+
152
+ ### GET /api/prompts/:id/children
153
+
154
+ Get child prompts of a group/composite prompt.
155
+
156
+ ### POST /api/prompts/:id/versions
157
+
158
+ Create a version snapshot of a prompt.
159
+
160
+ ---
161
+
162
+ ## Tasks
163
+
164
+ ### GET /api/tasks
165
+
166
+ List tasks. Supports query params: `status`, `type`, `skill`.
167
+
168
+ ### POST /api/tasks
169
+
170
+ Create a task.
171
+
172
+ **Body:**
173
+ ```json
174
+ {
175
+ "title": "Sync Calendar",
176
+ "type": "recurring",
177
+ "schedule": "every 30m",
178
+ "skill": "google-calendar",
179
+ "skill_config": "{\"days_back\":1,\"days_ahead\":14}"
180
+ }
181
+ ```
182
+
183
+ ### PUT /api/tasks/:id
184
+
185
+ Update a task (status, schedule, config).
186
+
187
+ ### DELETE /api/tasks/:id
188
+
189
+ Delete a task.
@@ -0,0 +1,62 @@
1
+ ---
2
+ sidebar:
3
+ order: 3
4
+ title: Claude Code Integration
5
+ ---
6
+
7
+ Wall-E can be used as an MCP server from Claude Code, giving Claude access to your personal knowledge base.
8
+
9
+ ## Setup
10
+
11
+ Add Wall-E to your Claude Code MCP config (`~/.claude/mcp.json`):
12
+
13
+ ```json
14
+ {
15
+ "mcpServers": {
16
+ "wall-e": {
17
+ "type": "http",
18
+ "url": "http://localhost:3457/mcp"
19
+ }
20
+ }
21
+ }
22
+ ```
23
+
24
+ Start Wall-E's standalone HTTP server:
25
+
26
+ ```bash
27
+ cd wall-e
28
+ WALL_E_PORT=3457 node agent.js
29
+ ```
30
+
31
+ ## Available Tools
32
+
33
+ | Tool | Description |
34
+ |---|---|
35
+ | `search_memories` | Full-text search across Slack, email, calendar memories |
36
+ | `calendar_events` | Get upcoming events with attendees, location, notes |
37
+ | `remember_fact` | Store new knowledge in the brain |
38
+ | `run_skill` | Execute any bundled or custom skill |
39
+ | `list_mcp_tools` | Discover tools from Wall-E's MCP connections |
40
+
41
+ ## Example Prompts
42
+
43
+ Once connected, you can ask Claude Code:
44
+
45
+ - "What meetings do I have tomorrow?"
46
+ - "What did I discuss with Alice last week?"
47
+ - "Remember that I prefer Tailwind over Bootstrap"
48
+ - "Search my memories for the database migration discussion"
49
+ - "Run the morning briefing skill"
50
+
51
+ ## Adding to Project CLAUDE.md
52
+
53
+ To give Claude Code automatic context about Wall-E in your projects:
54
+
55
+ ```markdown
56
+ ## Wall-E (Personal Digital Twin)
57
+
58
+ Wall-E is connected as an MCP server. Use it to:
59
+ - Search the owner's memories and knowledge base
60
+ - Check calendar events and meeting schedules
61
+ - Look up past Slack conversations for context
62
+ ```
@@ -0,0 +1,100 @@
1
+ ---
2
+ sidebar:
3
+ order: 2
4
+ title: Configuration
5
+ ---
6
+
7
+ Wall-E is configured through environment variables (`.env` file) and a JSON config file.
8
+
9
+ ## Environment Variables
10
+
11
+ Copy `.env.example` to `.env` at the project root:
12
+
13
+ ```bash
14
+ cp .env.example .env
15
+ ```
16
+
17
+ ### Required
18
+
19
+ | Variable | Description |
20
+ |---|---|
21
+ | `ANTHROPIC_API_KEY` | Your Anthropic API key. Required for Wall-E chat, think/reflect loops, and agent-mode skills. |
22
+ | `WALLE_OWNER_NAME` | Your full name. Used in system prompts and memory attribution. |
23
+
24
+ ### Data Storage
25
+
26
+ | Variable | Default | Description |
27
+ |---|---|---|
28
+ | `WALL_E_DATA_DIR` | `~/.walle/data` | Directory for Wall-E's brain database and backups |
29
+ | `CTM_DATA_DIR` | `~/.walle/data` | Directory for CTM's database, images, and backups |
30
+
31
+ ### Slack Integration {#slack}
32
+
33
+ | Variable | Description |
34
+ |---|---|
35
+ | `SLACK_TOKEN` | Slack user or bot token (starts with `xoxb-` or `xoxp-`) |
36
+ | `SLACK_BOT_TOKEN` | Slack bot token (for DM channel) |
37
+ | `SLACK_OWNER_USER_ID` | Your Slack user ID (e.g., `U0XXXXXXXX`). Used to detect message direction. |
38
+ | `SLACK_OWNER_HANDLE` | Your Slack handle (e.g., `your.name`). Used in search queries. |
39
+
40
+ ### API Gateway
41
+
42
+ | Variable | Description |
43
+ |---|---|
44
+ | `ANTHROPIC_BASE_URL` | Override API endpoint (e.g., for Portkey gateway) |
45
+ | `ANTHROPIC_CUSTOM_HEADERS_B64` | Base64-encoded JSON headers for the gateway |
46
+
47
+ ### Server
48
+
49
+ | Variable | Default | Description |
50
+ |---|---|---|
51
+ | `CTM_PORT` | `3456` | CTM HTTP server port |
52
+ | `CTM_HOST` | `127.0.0.1` | CTM bind address |
53
+ | `WALL_E_PORT` | `3457` | Wall-E standalone HTTP port (when running separately) |
54
+
55
+ ## Wall-E Config File
56
+
57
+ `wall-e/wall-e-config.json` controls the daemon behavior:
58
+
59
+ ```json
60
+ {
61
+ "owner": {
62
+ "name": "Your Name",
63
+ "first_name": "Your",
64
+ "last_name": "Name",
65
+ "timezone": "America/Los_Angeles"
66
+ },
67
+ "adapters": {
68
+ "ctm": { "enabled": true },
69
+ "slack": { "enabled": false }
70
+ },
71
+ "intervals": {
72
+ "ingest": 60000,
73
+ "think": 120000,
74
+ "reflect": 3600000,
75
+ "skills": 300000
76
+ }
77
+ }
78
+ ```
79
+
80
+ ## Calendar Sync {#calendar}
81
+
82
+ Calendar sync uses macOS EventKit (the same framework as the Calendar app). It reads all calendars synced to your Mac — Google Calendar, iCloud, Outlook, etc.
83
+
84
+ **Setup:**
85
+
86
+ 1. The first time the calendar skill runs, macOS will prompt for Calendar access
87
+ 2. Grant access to your terminal app in **System Settings > Privacy & Security > Calendars**
88
+ 3. Events are synced every 30 minutes automatically
89
+
90
+ No additional configuration needed — it reads whatever calendars are visible in the macOS Calendar app.
91
+
92
+ ## Email Sync
93
+
94
+ Email sync reads sent messages from macOS Mail using JXA (JavaScript for Automation).
95
+
96
+ **Setup:**
97
+
98
+ 1. Ensure the macOS Mail app is configured with your email accounts
99
+ 2. Grant Accessibility access to your terminal if prompted
100
+ 3. Sent emails are synced every 30 minutes automatically
@@ -0,0 +1,162 @@
1
+ ---
2
+ sidebar:
3
+ order: 1
4
+ title: Getting Started with Wall-E
5
+ ---
6
+
7
+ Get Wall-E running in under 2 minutes. No manual configuration needed — everything is auto-detected or configured in the browser.
8
+
9
+ ## Prerequisites
10
+
11
+ - **Node.js** 18+ (recommended: 20+)
12
+ - **macOS** (for Calendar and Mail integration via EventKit/JXA)
13
+ - **Anthropic API key** ([get one here](https://console.anthropic.com/settings/keys))
14
+
15
+ ## Install
16
+
17
+ ### Option 1: npx (Recommended)
18
+
19
+ ```bash
20
+ npx create-walle my-agent
21
+ cd my-agent
22
+ node claude-task-manager/server.js
23
+ ```
24
+
25
+ That's it. Your name and timezone are auto-detected from `git config` and your system. Open **http://localhost:3456** — you'll be guided through the rest.
26
+
27
+ ### Option 2: Clone manually
28
+
29
+ ```bash
30
+ git clone <repo-url> walle
31
+ cd walle
32
+ cd claude-task-manager && npm install && cd ..
33
+ cd wall-e && npm install && cd ..
34
+ node claude-task-manager/server.js
35
+ ```
36
+
37
+ Same result — the server auto-creates `.env` and config files on first run.
38
+
39
+ ## Browser Setup
40
+
41
+ On first launch, you'll see the setup page at **http://localhost:3456/setup.html**:
42
+
43
+ ### 1. Owner (auto-filled)
44
+
45
+ Your name is detected from `git config user.name`. Edit it if needed.
46
+
47
+ ### 2. Anthropic API Key
48
+
49
+ Paste your API key. This powers Wall-E's chat, thinking, and reflection loops. Your key is stored locally in `.env` and never sent anywhere except the Anthropic API.
50
+
51
+ ### 3. Integrations
52
+
53
+ Connect your data sources — all optional, enable any time:
54
+
55
+ | Integration | How to connect | What it does |
56
+ |---|---|---|
57
+ | **Slack** | Click "Connect" → OAuth in browser | Syncs messages, searches conversations |
58
+ | **Email** | Automatic on macOS | Reads sent mail via macOS Mail (AppleScript) |
59
+ | **Calendar** | Automatic on macOS | Syncs events via EventKit (Google, iCloud, Outlook) |
60
+
61
+ Slack uses the same OAuth flow as the Claude Code Slack integration — just click "Connect" and authorize in your browser. No tokens to copy-paste.
62
+
63
+ ### 4. Save & Go
64
+
65
+ Hit **Save & Continue**, then click **Go to Dashboard →**. You're done.
66
+
67
+ ## What You'll See
68
+
69
+ ### Dashboard (http://localhost:3456)
70
+
71
+ The main interface has five tabs:
72
+
73
+ - **Sessions** — Terminal multiplexer for Claude Code. Create and manage multiple sessions.
74
+ - **Prompts** — Rich-text prompt editor with versioning, folders, and one-click send to any session.
75
+ - **Tasks** — Task dashboard with recurring tasks, skill execution, and live logs.
76
+ - **Wall-E** — Chat with your digital twin. Ask about your schedule, search memories, run skills.
77
+ - **Reviews** — Code review with inline diffs.
78
+
79
+ ### Wall-E Chat
80
+
81
+ Open the **Wall-E** tab and start chatting:
82
+
83
+ ```
84
+ You: What meetings do I have tomorrow?
85
+ You: Summarize my Slack conversations from last week
86
+ You: What does Alice think about the migration plan?
87
+ You: Run the morning briefing skill
88
+ ```
89
+
90
+ Wall-E answers from its brain — your actual Slack messages, calendar events, and emails.
91
+
92
+ ## Background Loops
93
+
94
+ Once running, Wall-E automatically:
95
+
96
+ | Loop | Interval | What it does |
97
+ |---|---|---|
98
+ | **Ingest** | 60s | Pulls new data from Claude Code session logs |
99
+ | **Think** | 2 min | Extracts knowledge from recent memories |
100
+ | **Reflect** | 1 hr | Generates daily summaries, resolves contradictions |
101
+ | **Skills** | 5 min | Runs scheduled skills (calendar sync, Slack sync, etc.) |
102
+ | **Tasks** | 30s | Executes due recurring tasks |
103
+
104
+ Wall-E starts with an empty brain and gets smarter over time as it ingests your data.
105
+
106
+ ## Bundled Skills
107
+
108
+ These run automatically on a schedule:
109
+
110
+ | Skill | Schedule | Description |
111
+ |---|---|---|
112
+ | `google-calendar` | every 30 min | Syncs macOS Calendar events via EventKit |
113
+ | `slack-sync` | every 15 min | Incremental Slack message sync |
114
+ | `email-sync` | every 30 min | Syncs sent emails from macOS Mail |
115
+ | `morning-briefing` | daily 7am | AI-generated daily briefing |
116
+ | `memory-search` | on-demand | Full-text search across all memories |
117
+ | `slack-backfill` | manual | Full Slack history (2022–present) |
118
+ | `email-digest` | daily 7am | Email activity summary |
119
+
120
+ ## Using with Claude Code
121
+
122
+ Wall-E can also run as an MCP server inside Claude Code, giving Claude access to your brain:
123
+
124
+ ```bash
125
+ # In your Claude Code settings, add Wall-E as an MCP server:
126
+ {
127
+ "mcpServers": {
128
+ "walle": {
129
+ "type": "http",
130
+ "url": "http://localhost:3457/mcp"
131
+ }
132
+ }
133
+ }
134
+ ```
135
+
136
+ See [Claude Code Integration](claude-code.md) for the full guide.
137
+
138
+ ## File Layout
139
+
140
+ ```
141
+ walle/
142
+ ├── claude-task-manager/ # CTM dashboard (port 3456)
143
+ │ ├── server.js # HTTP server + WebSocket
144
+ │ ├── public/ # Frontend (HTML/CSS/JS)
145
+ │ └── db.js # SQLite database
146
+ ├── wall-e/ # Wall-E agent
147
+ │ ├── agent.js # Daemon entry point
148
+ │ ├── brain.js # SQLite brain database
149
+ │ ├── chat.js # Chat engine
150
+ │ ├── skills/ # Bundled + custom skills
151
+ │ └── loops/ # Ingest, think, reflect loops
152
+ ├── .env # Your config (auto-generated, gitignored)
153
+ ├── .env.example # Config template
154
+ └── bin/setup.js # First-run auto-setup
155
+ ```
156
+
157
+ ## Next Steps
158
+
159
+ - [Full Configuration Reference](configuration.md) — all environment variables and options
160
+ - [Skill Catalog](../skills/README.md) — bundled skills + how to create custom ones
161
+ - [API Reference](../api/README.md) — HTTP endpoints for CTM and Wall-E
162
+ - [Claude Code Integration](claude-code.md) — use Wall-E as an MCP server
@@ -0,0 +1,32 @@
1
+ ---
2
+ title: Wall-E Documentation
3
+ description: Your personal digital twin — learn how to install, configure, and extend Wall-E.
4
+ template: splash
5
+ hero:
6
+ title: Wall-E
7
+ tagline: Your personal digital twin — an AI agent that learns from your Slack, email, and calendar.
8
+ actions:
9
+ - text: Get Started
10
+ link: /docs/guides/quickstart/
11
+ icon: right-arrow
12
+ - text: View on GitHub
13
+ link: https://github.com/ShanniLi/tools
14
+ variant: minimal
15
+ ---
16
+
17
+ import { Card, CardGrid } from '@astrojs/starlight/components';
18
+
19
+ <CardGrid>
20
+ <Card title="Quickstart" icon="rocket">
21
+ Get Wall-E running in under 2 minutes with `npx create-walle`.
22
+ </Card>
23
+ <Card title="Configuration" icon="setting">
24
+ Environment variables, data directories, and integration settings.
25
+ </Card>
26
+ <Card title="Skills" icon="puzzle">
27
+ 7 bundled skills for Slack, email, calendar, and more. Create your own.
28
+ </Card>
29
+ <Card title="API Reference" icon="open-book">
30
+ HTTP endpoints for CTM and Wall-E.
31
+ </Card>
32
+ </CardGrid>