Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions .claude/skills/add-compact/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ git fetch upstream skill/compact
git merge upstream/skill/compact
```

> **Note:** `upstream` is the remote pointing to `qwibitai/nanoclaw`. If using a different remote name, substitute accordingly.
> **Note:** `upstream` is the remote pointing to `qwibitai/agentlite`. If using a different remote name, substitute accordingly.

This adds:
- `src/session-commands.ts` (extract and authorize session commands)
Expand All @@ -52,15 +52,15 @@ npm run build
### Restart service

```bash
launchctl kickstart -k gui/$(id -u)/com.nanoclaw # macOS
# Linux: systemctl --user restart nanoclaw
launchctl kickstart -k gui/$(id -u)/com.agentlite # macOS
# Linux: systemctl --user restart agentlite
```

## Phase 3: Verify

### Integration Test

1. Start NanoClaw in dev mode: `npm run dev`
1. Start AgentLite in dev mode: `npm run dev`
2. From the **main group** (self-chat), send exactly: `/compact`
3. Verify:
- The agent acknowledges compaction (e.g., "Conversation compacted.")
Expand Down Expand Up @@ -101,8 +101,8 @@ launchctl kickstart -k gui/$(id -u)/com.nanoclaw # macOS
### Validation on Fresh Clone

```bash
git clone <your-fork> /tmp/nanoclaw-test
cd /tmp/nanoclaw-test
git clone <your-fork> /tmp/agentlite-test
cd /tmp/agentlite-test
claude # then run /add-compact
npm run build
npm test
Expand All @@ -117,7 +117,7 @@ npm test

- **Main-group or trusted/admin sender only.** The main group is the user's private self-chat and is trusted (see `docs/SECURITY.md`). Non-main groups are untrusted — a careless or malicious user could wipe the agent's short-term memory. However, the device owner (`is_from_me`) is always trusted and can compact from any group.
- **No auto-compaction.** This skill implements manual compaction only. Automatic threshold-based compaction is a separate concern and should be a separate skill.
- **No config file.** NanoClaw's philosophy is customization through code changes, not configuration sprawl.
- **No config file.** AgentLite's philosophy is customization through code changes, not configuration sprawl.
- **Transcript archived before compaction.** The existing `PreCompact` hook in the agent-runner archives the full transcript to `conversations/` before the SDK compacts it.
- **Session continues after compaction.** This is not a destructive reset. The conversation continues with summarized context.

Expand Down
16 changes: 8 additions & 8 deletions .claude/skills/add-discord/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
---
name: add-discord
description: Add Discord bot channel integration to NanoClaw.
description: Add Discord bot channel integration to AgentLite.
---

# Add Discord Channel

This skill adds Discord support to NanoClaw, then walks through interactive setup.
This skill adds Discord support to AgentLite, then walks through interactive setup.

## Phase 1: Pre-flight

Expand All @@ -32,7 +32,7 @@ git remote -v
If `discord` is missing, add it:

```bash
git remote add discord https://github.com/qwibitai/nanoclaw-discord.git
git remote add discord https://github.com/qwibitai/agentlite-discord.git
```

### Merge the skill branch
Expand Down Expand Up @@ -109,7 +109,7 @@ The container reads environment from `data/env/env`, not `.env` directly.

```bash
npm run build
launchctl kickstart -k gui/$(id -u)/com.nanoclaw
launchctl kickstart -k gui/$(id -u)/com.agentlite
```

## Phase 4: Registration
Expand Down Expand Up @@ -159,7 +159,7 @@ Tell the user:
### Check logs if needed

```bash
tail -f logs/nanoclaw.log
tail -f logs/agentlite.log
```

## Troubleshooting
Expand All @@ -169,7 +169,7 @@ tail -f logs/nanoclaw.log
1. Check `DISCORD_BOT_TOKEN` is set in `.env` AND synced to `data/env/env`
2. Check channel is registered: `sqlite3 store/messages.db "SELECT * FROM registered_groups WHERE jid LIKE 'dc:%'"`
3. For non-main channels: message must include trigger pattern (@mention the bot)
4. Service is running: `launchctl list | grep nanoclaw`
4. Service is running: `launchctl list | grep agentlite`
5. Verify the bot has been invited to the server (check OAuth2 URL was used)

### Bot only responds to @mentions
Expand All @@ -184,7 +184,7 @@ If the bot connects but can't read messages, ensure:
1. Go to [Discord Developer Portal](https://discord.com/developers/applications)
2. Select your application > **Bot** tab
3. Under **Privileged Gateway Intents**, enable **Message Content Intent**
4. Restart NanoClaw
4. Restart AgentLite

### Getting Channel ID

Expand All @@ -198,6 +198,6 @@ The Discord bot supports:
- Text messages in registered channels
- Attachment descriptions (images, videos, files shown as placeholders)
- Reply context (shows who the user is replying to)
- @mention translation (Discord `<@botId>` → NanoClaw trigger format)
- @mention translation (Discord `<@botId>` → AgentLite trigger format)
- Message splitting for responses over 2000 characters
- Typing indicators while the agent processes
20 changes: 10 additions & 10 deletions .claude/skills/add-gmail/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
---
name: add-gmail
description: Add Gmail integration to NanoClaw. Can be configured as a tool (agent reads/sends emails when triggered from WhatsApp) or as a full channel (emails can trigger the agent, schedule tasks, and receive replies). Guides through GCP OAuth setup and implements the integration.
description: Add Gmail integration to AgentLite. Can be configured as a tool (agent reads/sends emails when triggered from WhatsApp) or as a full channel (emails can trigger the agent, schedule tasks, and receive replies). Guides through GCP OAuth setup and implements the integration.
---

# Add Gmail Integration

This skill adds Gmail support to NanoClaw — either as a tool (read, send, search, draft) or as a full channel that polls the inbox.
This skill adds Gmail support to AgentLite — either as a tool (read, send, search, draft) or as a full channel that polls the inbox.

## Phase 1: Pre-flight

Expand Down Expand Up @@ -33,7 +33,7 @@ git remote -v
If `gmail` is missing, add it:

```bash
git remote add gmail https://github.com/qwibitai/nanoclaw-gmail.git
git remote add gmail https://github.com/qwibitai/agentlite-gmail.git
```

### Merge the skill branch
Expand Down Expand Up @@ -97,7 +97,7 @@ Tell the user:
> 2. Go to **APIs & Services > Library**, search "Gmail API", click **Enable**
> 3. Go to **APIs & Services > Credentials**, click **+ CREATE CREDENTIALS > OAuth client ID**
> - If prompted for consent screen: choose "External", fill in app name and email, save
> - Application type: **Desktop app**, name: anything (e.g., "NanoClaw Gmail")
> - Application type: **Desktop app**, name: anything (e.g., "AgentLite Gmail")
> 4. Click **DOWNLOAD JSON** and save as `gcp-oauth.keys.json`
>
> Where did you save the file? (Give me the full path, or paste the file contents here)
Expand Down Expand Up @@ -143,8 +143,8 @@ Then compile and restart:

```bash
npm run build
launchctl kickstart -k gui/$(id -u)/com.nanoclaw # macOS
# Linux: systemctl --user restart nanoclaw
launchctl kickstart -k gui/$(id -u)/com.agentlite # macOS
# Linux: systemctl --user restart agentlite
```

## Phase 4: Verify
Expand All @@ -159,14 +159,14 @@ Tell the user:

### Test channel mode (Channel mode only)

Tell the user to send themselves a test email. The agent should pick it up within a minute. Monitor: `tail -f logs/nanoclaw.log | grep -iE "(gmail|email)"`.
Tell the user to send themselves a test email. The agent should pick it up within a minute. Monitor: `tail -f logs/agentlite.log | grep -iE "(gmail|email)"`.

Once verified, offer filter customization via `AskUserQuestion` — by default, only emails in the Primary inbox trigger the agent (Promotions, Social, Updates, and Forums are excluded). The user can keep this default or narrow further by sender, label, or keywords. No code changes needed for filters.

### Check logs if needed

```bash
tail -f logs/nanoclaw.log
tail -f logs/agentlite.log
```

## Troubleshooting
Expand Down Expand Up @@ -206,7 +206,7 @@ npx -y @gongrzhe/server-gmail-autoauth-mcp
2. Remove `gmail` MCP server and `mcp__gmail__*` from `container/agent-runner/src/index.ts`
3. Rebuild and restart
4. Clear stale agent-runner copies: `rm -r data/sessions/*/agent-runner-src 2>/dev/null || true`
5. Rebuild: `cd container && ./build.sh && cd .. && npm run build && launchctl kickstart -k gui/$(id -u)/com.nanoclaw` (macOS) or `systemctl --user restart nanoclaw` (Linux)
5. Rebuild: `cd container && ./build.sh && cd .. && npm run build && launchctl kickstart -k gui/$(id -u)/com.agentlite` (macOS) or `systemctl --user restart agentlite` (Linux)

### Channel mode

Expand All @@ -217,4 +217,4 @@ npx -y @gongrzhe/server-gmail-autoauth-mcp
5. Uninstall: `npm uninstall googleapis`
6. Rebuild and restart
7. Clear stale agent-runner copies: `rm -r data/sessions/*/agent-runner-src 2>/dev/null || true`
8. Rebuild: `cd container && ./build.sh && cd .. && npm run build && launchctl kickstart -k gui/$(id -u)/com.nanoclaw` (macOS) or `systemctl --user restart nanoclaw` (Linux)
8. Rebuild: `cd container && ./build.sh && cd .. && npm run build && launchctl kickstart -k gui/$(id -u)/com.agentlite` (macOS) or `systemctl --user restart agentlite` (Linux)
8 changes: 4 additions & 4 deletions .claude/skills/add-image-vision/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
---
name: add-image-vision
description: Add image vision to NanoClaw agents. Resizes and processes WhatsApp image attachments, then sends them to Claude as multimodal content blocks.
description: Add image vision to AgentLite agents. Resizes and processes WhatsApp image attachments, then sends them to Claude as multimodal content blocks.
---

# Image Vision Skill

Adds the ability for NanoClaw agents to see and understand images sent via WhatsApp. Images are downloaded, resized with sharp, saved to the group workspace, and passed to the agent as base64-encoded multimodal content blocks.
Adds the ability for AgentLite agents to see and understand images sent via WhatsApp. Images are downloaded, resized with sharp, saved to the group workspace, and passed to the agent as base64-encoded multimodal content blocks.

## Phase 1: Pre-flight

Expand All @@ -25,7 +25,7 @@ git remote -v
If `whatsapp` is missing, add it:

```bash
git remote add whatsapp https://github.com/qwibitai/nanoclaw-whatsapp.git
git remote add whatsapp https://github.com/qwibitai/agentlite-whatsapp.git
```

### Merge the skill branch
Expand Down Expand Up @@ -75,7 +75,7 @@ All tests must pass and build must be clean before proceeding.

3. Restart the service:
```bash
launchctl kickstart -k gui/$(id -u)/com.nanoclaw
launchctl kickstart -k gui/$(id -u)/com.agentlite
```

## Phase 4: Verify
Expand Down
8 changes: 4 additions & 4 deletions .claude/skills/add-ollama-tool/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ git remote -v
If `upstream` is missing, add it:

```bash
git remote add upstream https://github.com/qwibitai/nanoclaw.git
git remote add upstream https://github.com/qwibitai/agentlite.git
```

### Merge the skill branch
Expand Down Expand Up @@ -100,8 +100,8 @@ OLLAMA_HOST=http://your-ollama-host:11434
### Restart the service

```bash
launchctl kickstart -k gui/$(id -u)/com.nanoclaw # macOS
# Linux: systemctl --user restart nanoclaw
launchctl kickstart -k gui/$(id -u)/com.agentlite # macOS
# Linux: systemctl --user restart agentlite
```

## Phase 4: Verify
Expand All @@ -125,7 +125,7 @@ Run the watcher script for macOS notifications when Ollama is used:
### Check logs if needed

```bash
tail -f logs/nanoclaw.log | grep -i ollama
tail -f logs/agentlite.log | grep -i ollama
```

Look for:
Expand Down
36 changes: 18 additions & 18 deletions .claude/skills/add-parallel/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
# Add Parallel AI Integration

Adds Parallel AI MCP integration to NanoClaw for advanced web research capabilities.
Adds Parallel AI MCP integration to AgentLite for advanced web research capabilities.

## What This Adds

- **Quick Search** - Fast web lookups using Parallel Search API (free to use)
- **Deep Research** - Comprehensive analysis using Parallel Task API (asks permission)
- **Non-blocking Design** - Uses NanoClaw scheduler for result polling (no container blocking)
- **Non-blocking Design** - Uses AgentLite scheduler for result polling (no container blocking)

## Prerequisites

User must have:
1. Parallel AI API key from https://platform.parallel.ai
2. NanoClaw already set up and running
2. AgentLite already set up and running
3. Docker installed and running

## Implementation Steps
Expand Down Expand Up @@ -83,14 +83,14 @@ Update `container/agent-runner/src/index.ts`:
Find the section where `mcpServers` is configured (around line 237-252):
```typescript
const mcpServers: Record<string, any> = {
nanoclaw: ipcMcp
agentlite: ipcMcp
};
```

Add Parallel AI MCP servers after the nanoclaw server:
Add Parallel AI MCP servers after the agentlite server:
```typescript
const mcpServers: Record<string, any> = {
nanoclaw: ipcMcp
agentlite: ipcMcp
};

// Add Parallel AI MCP servers if API key is available
Expand Down Expand Up @@ -122,7 +122,7 @@ allowedTools: [
'Bash',
'Read', 'Write', 'Edit', 'Glob', 'Grep',
'WebSearch', 'WebFetch',
'mcp__nanoclaw__*',
'mcp__agentlite__*',
'mcp__parallel-search__*',
'mcp__parallel-task__*'
],
Expand Down Expand Up @@ -178,14 +178,14 @@ AskUserQuestion: I can do deep research on [topic] using Parallel's Task API. Th

1. Create the task using `mcp__parallel-task__create_task_run`
2. Get the `run_id` from the response
3. Create a polling scheduled task using `mcp__nanoclaw__schedule_task`:
3. Create a polling scheduled task using `mcp__agentlite__schedule_task`:
```
Prompt: "Check Parallel AI task run [run_id] and send results when ready.

1. Use the Parallel Task MCP to check the task status
2. If status is 'completed', extract the results
3. Send results to user with mcp__nanoclaw__send_message
4. Use mcp__nanoclaw__complete_scheduled_task to mark this task as done
3. Send results to user with mcp__agentlite__send_message
4. Use mcp__agentlite__complete_scheduled_task to mark this task as done

If status is still 'running' or 'pending', do nothing (task will run again in 30s).
If status is 'failed', send error message and complete the task."
Expand Down Expand Up @@ -224,7 +224,7 @@ Build the container with updated agent runner:

Verify the build:
```bash
echo '{}' | docker run -i --entrypoint /bin/echo nanoclaw-agent:latest "Container OK"
echo '{}' | docker run -i --entrypoint /bin/echo agentlite-agent:latest "Container OK"
```

### 7. Restart Service
Expand All @@ -233,15 +233,15 @@ Rebuild the main app and restart:

```bash
npm run build
launchctl kickstart -k gui/$(id -u)/com.nanoclaw # macOS
# Linux: systemctl --user restart nanoclaw
launchctl kickstart -k gui/$(id -u)/com.agentlite # macOS
# Linux: systemctl --user restart agentlite
```

Wait 3 seconds for service to start, then verify:
```bash
sleep 3
launchctl list | grep nanoclaw # macOS
# Linux: systemctl --user status nanoclaw
launchctl list | grep agentlite # macOS
# Linux: systemctl --user status agentlite
```

### 8. Test Integration
Expand All @@ -257,7 +257,7 @@ Tell the user to test:

Check logs to verify MCP servers loaded:
```bash
tail -20 logs/nanoclaw.log
tail -20 logs/agentlite.log
```

Look for: `Parallel AI MCP servers configured`
Expand All @@ -276,7 +276,7 @@ Look for: `Parallel AI MCP servers configured`

**Task polling not working:**
- Verify scheduled task was created: `sqlite3 store/messages.db "SELECT * FROM scheduled_tasks"`
- Check task runs: `tail -f logs/nanoclaw.log | grep "scheduled task"`
- Check task runs: `tail -f logs/agentlite.log | grep "scheduled task"`
- Ensure task prompt includes proper Parallel MCP tool names

## Uninstalling
Expand All @@ -287,4 +287,4 @@ To remove Parallel AI integration:
2. Revert changes to container-runner.ts and agent-runner/src/index.ts
3. Remove Web Research Tools section from groups/main/CLAUDE.md
4. Rebuild: `./container/build.sh && npm run build`
5. Restart: `launchctl kickstart -k gui/$(id -u)/com.nanoclaw` (macOS) or `systemctl --user restart nanoclaw` (Linux)
5. Restart: `launchctl kickstart -k gui/$(id -u)/com.agentlite` (macOS) or `systemctl --user restart agentlite` (Linux)
Loading
Loading