File size: 4,841 Bytes
9d8ea9c
 
c5fee9e
 
 
9d8ea9c
 
c5fee9e
 
 
 
 
 
 
 
9d8ea9c
 
c5fee9e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
---
title: Echo
emoji: "πŸ€–"
colorFrom: indigo
colorTo: purple
sdk: static
pinned: false
license: mit
short_description: "A companion robot that remembers you and grows with you"
tags:
  - reachy_mini
  - reachy_mini_python_app
  - companion
  - memory
  - ai
---

# Reachy Echo

A companion robot that remembers you and grows with you.

## What Makes Echo Different

Most robot apps treat the robot as a voice interface with decorative movement. Echo is different:

| Feature | Traditional | Echo |
|---------|-------------|------|
| **Memory** | Forgets everything | Remembers your name, preferences, conversations |
| **Initiative** | Waits for commands | Greets you, suggests breaks, celebrates wins |
| **Models** | Single provider | 18+ models via LiteLLM (swap anytime) |
| **Movement** | Decorative | Communicates emotion and state |

## Quick Start

### Install

```bash
cd ~/apps/reachy/apps/echo
pip install -e .
```

### Run (Simulation Mode)

```bash
python -m reachy_mini_echo --sim
```

Open http://localhost:7861

### Run (Real Robot)

With the Reachy daemon running:
- Echo appears in the Reachy Mini dashboard
- Or access directly at http://localhost:7861

## Features

### Memory System

Echo remembers across sessions:
- Your name and preferences
- Past conversations and topics
- Work patterns and habits

Try saying:
- "My name is Alex"
- "I'm a software engineer"
- "What do you know about me?"

### Proactive Behaviors

| Behavior | What it does | When |
|----------|--------------|------|
| **Morning Greeting** | Personalized hello | First appearance, 6-11am |
| **Work Break Reminder** | Suggests a stretch | After 2 hours of work |
| **Build Celebration** | Excited dance | When your code builds |
| **Build Support** | Sympathetic response | When builds fail |
| **Return Greeting** | Welcome back | After 30+ min absence |

### Model Selection

Switch between 18+ models instantly:

| Model | Best for |
|-------|----------|
| `llama-3.3-70b-cerebras` | Fast local inference (default) |
| `claude-opus-4.5-openrouter` | Most capable |
| `gpt-5.2-openrouter` | Latest GPT |
| `gemini-3-pro-openrouter` | Multimodal |
| `qwen-3-235b-cerebras` | Large context |

## Configuration

Environment variables (optional):

```bash
# LiteLLM server (defaults to DGX)
export LITELLM_URL=http://your-litellm-server:4000
export LITELLM_API_KEY=your-key

# Default model
export LITELLM_MODEL=llama-3.3-70b-cerebras
```

## UI Overview

```
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  πŸ€– Reachy Echo                                     β”‚
β”‚  A companion that remembers you and grows with you  β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                             β”‚ Status: 🟒 Connected  β”‚
β”‚  Conversation               β”‚                       β”‚
β”‚  ─────────────              β”‚ Model: [dropdown]     β”‚
β”‚  User: Hi there!            β”‚                       β”‚
β”‚  Echo: Hello! How are you?  β”‚ Memory:               β”‚
β”‚                             β”‚ Facts: 3 | Sessions: 5β”‚
β”‚                             β”‚                       β”‚
β”‚  [Type a message...]  [Send]β”‚ Proactive Behaviors:  β”‚
β”‚                             β”‚ β˜‘ Morning Greeting    β”‚
β”‚                             β”‚ β˜‘ Work Break Reminder β”‚
β”‚                             β”‚ β˜‘ Build Celebration   β”‚
β”‚                             β”‚                       β”‚
β”‚                             β”‚ [Clear] [Forget Me]   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
```

## Architecture

```
reachy_mini_echo/
β”œβ”€β”€ main.py           # ReachyMiniEcho app class
β”œβ”€β”€ providers/        # LLM backends (LiteLLM)
β”œβ”€β”€ memory/           # SQLite + fact extraction
└── proactive/        # Trigger/behavior engine
```

## Development

See `CLAUDE.md` for detailed architecture and development guide.

### Adding Behaviors

1. Create behavior class in `proactive/behaviors.py`
2. Implement `execute(echo)` method
3. Create trigger in `proactive/triggers.py`
4. Register in `proactive/engine.py`

### Memory Fact Extraction

Echo automatically extracts facts from conversation:
- "My name is X" β†’ stores name
- "I prefer X" β†’ stores preference
- "I work at X" β†’ stores employer

## Privacy

- All data stored locally in `data/memory.db`
- "Forget Me" button clears personal data
- No cloud storage of conversations
- Local models available for full privacy

## License

MIT