Angelia · Updated 30 October 2026

# Claude Code on WhatsApp and Telegram: sessions and approvals from your phone

Angelia connects the Claude Code on your Mac to WhatsApp and Telegram. Each chat gets its own Claude Code session, in its own folder. Your `CLAUDE.md`, settings, skills, MCP servers and hooks work there as they do in your terminal. Angelia runs no model of its own: Claude Code does the work, under your own claude.ai login.

## What Angelia does for Claude Code

- **One session per chat.** Each chat is routed to a profile: a folder with its own instructions and memory. The session comes back after a restart or an idle period. `/new` in one chat never touches another.
- **Your Claude Code, unchanged.** Angelia starts the `claude` you installed, in the profile's folder. Anything Claude Code reads in a project works the same.
- **Approvals in the chat.** A command the profile may not run on its own comes to the chat and waits for an owner's yes.
- **It keeps running.** As a LaunchAgent, Angelia starts at login and comes back after a crash. The chat answers whenever the Mac is on and awake.

## What you need

- A Mac with Node 22.23.4+, 24.22.1+ or 26.12.1+ and git.
- Claude Code 2.1.270 or newer, signed in to claude.ai. Check with `claude --version`.
- A chat app on your phone. For Telegram, a bot token from [@BotFather](https://t.me/BotFather) ([more](https://useangelia.com/telegram/)). For WhatsApp, a second, established number, not your personal one ([why](https://useangelia.com/whatsapp/)).
- Optional: `brew install openai-whisper ffmpeg` for voice notes, and `brew install tmux` to see the chat in the Claude app (3.7 or newer recommended; older versions get a warning).

## Set it up

```
curl -fsSL https://useangelia.com/install | sh
angelia service install
```

The first line checks the release's signature, installs Angelia and starts a setup wizard ([read the script](https://github.com/korengast/angelia/blob/v0.3.24/install.sh)). The wizard asks for Quick (one chat, one folder) or Advanced (several profiles), then Telegram, WhatsApp or both. Pick Claude Code as the CLI, then send the bot (or the second number) a message from your phone to pair the chat. The second line keeps Angelia running.

The agent works in its profile's folder, not in your current repo. To let it work on a repo, list the repo in the profile's `add_dirs` in `~/.angelia/workspace/routing.yaml`:

```
profiles:
  main: { cwd: ~/.angelia/workspace/profiles/main, permission_mode: acceptEdits, add_dirs: [~/code/my-app] }
```

Then accept the change to the routing table and compile the profile's rules. `angelia compile` refuses while `routing.yaml` has changes you have not accepted, so accept first:

```
angelia accept
angelia compile main --write
```

Send `/restart` in the chat. Angelia checks the routing table first. If the restart would give the profile new rights, it lists them; then send `/restart confirm`. Every step, in more detail: [how to control Claude Code from your phone](https://useangelia.com/guides/claude-code-from-phone/).

## What works from the chat

### Approvals

Under `permission_mode: acceptEdits`, Claude Code edits files on its own and asks before other commands. The question comes to the chat:

```
🔐 Bash: npm test
Reply "yes 6b480a6f" or "no 6b480a6f".
```

An owner answers `yes 6b480a6f` and the turn goes on. No answer in ten minutes means no. In a group, other members can talk to the agent but cannot approve. The mode is Claude Code's own: `default`, `acceptEdits`, `plan` or `bypassPermissions`. `sandbox: true` on the profile turns on Claude Code's own sandbox, which limits every program the agent runs, not only its file tools. With [pi](https://useangelia.com/pi/), approvals come to the chat the same way, and with [Grok Build](https://useangelia.com/grok/) from Angelia 0.3.23. [Codex](https://useangelia.com/codex/) runs every command in its own sandbox and asks only when it needs more than the sandbox allows. More in [notifications and approvals on your phone](https://useangelia.com/guides/claude-code-phone-notifications/).

### Voice notes

A voice note reaches Claude Code as `[voice note: path]`. Claude Code runs `angelia transcribe <path>`, which prints the text. Whisper runs on your Mac, so the audio stays there, and it detects the language by itself. For a spoken answer, `angelia speak "<text>"` makes an audio file with the voice built into macOS, and the agent sends it back as a voice note.

### Photos and files

A photo or document you send lands in the profile's `.inbox/` folder, up to 20 MB, and Claude Code gets a `[file: path]` line. It sends files back with `angelia send-media`: an image, a video, a voice note or a document. Every path is checked first: never a credential location, never another profile's folder.

### Long answers

Short progress lines arrive while Claude Code works, then the answer. A long answer is split at paragraph breaks into messages of up to 4,000 characters on Telegram and 3,500 on WhatsApp. A code block cut in two gets its ```` ``` ```` marks closed and opened again, so each part reads whole. The chat shows "typing" while a turn runs. Angelia sends at most 10 messages a minute per platform by default (`max_out_per_min`), and progress lines always leave room for the answer and for approvals.

### Chat commands

`/new`, `/stop`, `/status`, `/resume`, `/model`, `/effort`, `/restart` and the others `/help` lists are answered by Angelia, without spending a token. Any other slash command goes to Claude Code, so `/compact` or your own commands work from the chat too. Only owners can send them, except `/status` and `/help`. When Claude Code hits a usage limit, the chat shows the limit and what to do: `/model opus` or `/model sonnet` for this session, `/model default` once the limit resets.

### From the chat to your desk, and back

- **Chat to terminal:** for an owner, `/status` ends with a command such as `claude --resume <id>`, with the profile's folder and permissions. Paste it in a terminal and the same session opens there.
- **Terminal to chat:** type `/angelia-handoff` in a Claude Code session at your desk. In a profile's own folder, the session itself moves to that chat. In any other folder, the chat starts a fresh session from a written brief.

### The Claude app, too

Set `tui: true` on a profile and install tmux (3.7 or newer recommended; older versions get a warning). The profile then runs Claude Code as a real interactive session in tmux, so it shows up in the Claude app through Remote Control, and you can carry on there. What you type in the app stays in the app; it does not go back to the chat. Trade-offs in [ADR 0008](https://useangelia.com/docs/decisions/0008-tui-host-mode/).

### Scheduled turns

A profile lists jobs in `angelia-jobs.yaml` in its folder: a schedule and a prompt, a message or a command. `angelia jobs install` turns each into a LaunchAgent, so macOS runs the timer and the answer lands in the chat. The [24/7 guide](https://useangelia.com/guides/claude-code-24-7/) covers sleep settings and reboots.

## Limits

- macOS only for now. Linux is next. The Mac must be on and awake: while it sleeps, nothing answers.
- Claude Code profiles use your claude.ai login. API keys are kept out of the agent's environment, and in the default mode a session that would bill a Console API key is refused.
- Each chat runs its own Claude Code process. All chats share your plan's limits.
- Claude Code's auto memory (the notes it keeps per project under `~/.claude`) is off in every session Angelia starts. Each profile keeps its memory in its own folder.
- Prompt injection is not solved. A web page or a forwarded message can still talk the agent into what its permission mode allows. Read the [security model](https://useangelia.com/docs/security/) before you give the bot to anyone but yourself.
- It is a young project (v0.3), maintained by one person.

## More about Angelia

- [Angelia for Codex: setup, sandbox, approvals and limits](https://useangelia.com/codex/)
- [Angelia for Grok Build: setup, approvals and limits](https://useangelia.com/grok/)
- [Angelia for pi: setup, sandbox, approvals and limits](https://useangelia.com/pi/)
- [Claude Code on WhatsApp](https://useangelia.com/whatsapp/)
- [Claude Code Telegram bot](https://useangelia.com/telegram/)
- [Angelia vs OpenClaw, Hermes Agent and Remote Control](https://useangelia.com/alternatives/)
- [Docs](https://useangelia.com/docs/)
- [Tools](https://useangelia.com/tools/)
- [Guides](https://useangelia.com/guides/)

## Try Angelia

```
curl -fsSL https://useangelia.com/install | sh
```

It checks the release's signature, then a wizard pairs your first chat. Free and open source (MIT). [How it works](https://useangelia.com/) · [Reference](https://useangelia.com/docs/reference/) · [GitHub](https://github.com/korengast/angelia)

Angelia · open source, MIT [Docs](https://useangelia.com/docs/) · [info@useangelia.com](mailto:info@useangelia.com) · [GitHub](https://github.com/korengast/angelia)
