Eleven це застосунок для реверс-інженерії, побудований навколо агентів. Додайте застосунок, бінарний файл, шейдер або модель і запитайте, що він робить. Будь-який агент, який підтримує [Agent Client Protocol](https://agentclientprotocol.com), може читати код, переходити за посиланнями, перейменовувати функції, залишати нотатки та пропонувати патчі, поки ви спостерігаєте й ухвалюєте зміни в тому самому вікні.
Аналіз виконується в [Ghidra](https://ghidra-sre.org) через [REA](https://github.com/morluto/rea). Інтерфейс написано на React і рендериться нативно на GPUI за допомогою [GPUIX](https://www.npmjs.com/package/@gpuix/react).
## Можливості
- **Власний агент.** Aster, Claude, Codex, Gemini, Cursor, Copilot, OpenCode і будь-який інший агент ACP. Запускайте кілька в одному проєкті, кожен у власному чаті.
- **Агенти керують вікном.** Eleven надає власні інструменти MCP, тож агент може відкрити функцію, змінити подання, перейменувати, додати нотатки та запропонувати патчі.
- **Контроль залишається у вас.** Кожна зміна, ваша або агента, записується разом з автором і може бути скасована. Байтові патчі від агентів надходять як пропозиції, які ви приймаєте або відхиляєте.
- **Mach-O, ELF і PE.** Функції, псевдокод, асемблер, граф потоку керування, перехресні посилання, рядки, сегменти та шістнадцятковий код.
- **Проєкти.** Проєкт це один застосунок або бінарний файл. Його чати, перейменування, закладки, нотатки та патчі зберігаються після повторного відкриття.
- **Патчі.** Редагуйте байти за адресою та записуйте пропатчену копію. Оригінал ніколи не змінюється.
- **Порівняння.** Порівнюйте дві збірки за функціями та дивіться, що змінилося в псевдокоді.
- **Налагодження.** Запускайте програму під LLDB, ставте точку зупинки на функції, яку переглядаєте, виконуйте кроки та читайте локальні змінні.
- **Шейдери, моделі та профілі GPU.** Шейдери Metal і файли моделей ML відкриваються в робочому середовищі та пов'язані з кодом, який їх завантажує. Профілюйте за допомогою Instruments.
- **Playbooks.** Вбудовані навички, як-от перший огляд, найменування функцій, трасування функції та карта мережі, працюють з будь-яким агентом.
- **Експорт.** Інвентаризація псевдокоду, асемблера та класів Objective-C.
## Встановлення
Eleven працює на macOS 14 або новішої версії на Apple Silicon.
```sh
curl -fsSL https://raw.githubusercontent.com/Zfinix/eleven/main/install.sh | sh
```
Це встановлює `Eleven.app` у `/Applications`. Збірки ще не нотаризовані, тому інсталятор сам знімає карантин завантаження.
Eleven також потребує:
- **Ghidra 12.x.** Завантажте її з [ghidra-sre.org](https://ghidra-sre.org) і розпакуйте в `~/.local/share` або `~/Applications`, чи задайте `GHIDRA_INSTALL_DIR`.
- **JDK, 21 або новіший.** `brew install openjdk@21` підійде. Eleven знаходить його самостійно.
- **Агент.** Виберіть його під час першого запуску. Eleven встановлює адаптери ACP за вас, коли вони потрібні.
## Збірка з вихідного коду
Потрібні [Bun](https://bun.sh), Node 20 або новіший, Ghidra і JDK, як зазначено вище, а також копія REA 6.x поряд із цим репозиторієм (`../rea`) або `ELEVEN_REA`, що вказує на неї.
```sh
git clone https://github.com/Zfinix/eleven
git clone https://github.com/Zfinix/rea
cd eleven/app
bun install
bun run dev
```
| Команда | Що вона робить |
| --- | --- |
| `bun run dev [file]` | Запускає застосунок з гарячим перезавантаженням і за потреби відкриває файл |
| `bunx tsc --noEmit --noUnusedLocals` | Перевіряє типи в застосунку, тестах і скриптах |
| `./script/test` | Запускає набір тестів по одному файлу за раз |
| `./script/bundle-macos` | Збирає `build/Eleven.app` |
| `./script/package` | Збирає, підписує та пакує реліз |
## Середовище
Усі вони необов'язкові. Eleven самостійно знаходить звичайні місця встановлення.
| Змінна | Призначення |
| --- | --- |
| `GHIDRA_INSTALL_DIR` | Яку інсталяцію Ghidra використовувати |
| `JAVA_HOME` | JDK для запуску Ghidra |
| `ELEVEN_REA` | REA замість вбудованої |
| `ELEVEN_LLDB_DAP` | `lldb-dap` для налагоджувача |
| `ELEVEN_SUPPORT` | Де Eleven зберігає проєкти й налаштування |
| `ELEVEN_SIGN_IDENTITY` | Ідентичність підписування коду для `./script/package` |
## Документація
- [Інструменти MCP](docs/mcp-tools.md): усі інструменти, доступні агентам у Eleven, що кожен приймає та повертає, дозволи й приватність.
- [Навички](docs/skills.md): вбудовані сценарії та як написати власні.
## Структура репозиторію
- `app/` це застосунок: React і TypeScript на GPUIX.
- `crates/` це ранній прототип на Rust, збережений для довідки. Застосунок його не використовує.
- `launch/` це відео запуску, створене в Remotion.
- `install.sh` це інсталятор.
Дивіться [AGENTS.md](AGENTS.md), щоб дізнатися, як організовано код і яких правил він дотримується.
## Ліцензія
Eleven випущено за [Apache License 2.0](LICENSE). Сторонній код, що входить до складу, перелічено в [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md). Логотипи агентів належать їхнім власникам і використовуються лише для їх позначення.