Огляд коду MemBox: відполіроване memory API і незамкнені двері дашборду
MemBox поєднує REST-пам’ять, файли, пошук, TTL, snapshots, webhooks, shares, analytics і GitHub. Build проходить, але routes без auth відкривають tokens і видалення.

DEEP PROJECT REVIEW · SOURCE + LIVE PREVIEW
Превʼю на Vercel виглядає готовим для клієнтів: вводиш імʼя, отримуєш endpoint, завантажуєш файли, віддаєш агентові bearer-токен. За охайною сторінкою стоїть значно більший репозиторій: 11 079 рядків TypeScript/TSX, 22 файли API-маршрутів, п’ять мов інтерфейсу, два режими зберігання, посилання для обміну, знімки, webhooks, аналітика, пакетні виклики, TTL, повнотекстовий пошук і «мозок» на GitHub. А потім огляд доходить до маршрутів дашборду. Кілька з них віддають приватні записи box або видаляють box, не перевіривши, хто питає. Ця знахідка змінює вердикт.
Сильні сторони
- Простий REST для будь-якого HTTP client
- GitHub persistence і AES-GCM для PAT
- П’ять мов із коректним RTL
Критичні ризики
- Routes без auth відкривають tokens, files і delete
- Tokens зберігаються plaintext
- Ліміти 1 MB і 500 MB не enforced
Як це влаштовано
Next.js 16 обслуговує UI та routes. Prisma зберігає metadata в SQLite; файли йдуть у filesystem або GitHub Contents API. Central repo тримає checkpoints, share mirrors і pairing records.
Що він уміє
API підтримує upsert, append, read, list, delete, upload, download, search, batch, TTL, snapshots, shares, webhooks і analytics, плюс file browser і GitHub pairing.
| Layer | Reviewed implementation | Finding |
|---|---|---|
| Agent API | Bearer + share tokens | Read/write split exists |
| Dashboard API | Box and file routes | Authentication gaps |
| Storage | Local FS + GitHub | Flexible, operationally complex |
| Quality | Build, lint, audit | Build passes; lint and audit need work |
Де контроль доступу тримається, а де ні
Agent routes зазвичай вимагають token і розділяють read/write. Є path guards. Але `/api/boxes` повертає master tokens за username, а GET, DELETE і preview не потребують auth. Це критичний broken access control.
Межа bearer-токена настільки міцна, наскільки захищений найслабший маршрут, а тут ендпоінти дашборду обходять її.
Ризики даних і платформи
Tokens випадкові, але plaintext у DB. query token може витекти. Webhooks приймають будь-який URL без private-network block, тому можливий SSRF. rate limit per-process.
Що обіцяють документи і що робить код
UI обіцяє 1 MB і 500 MB/file, але route читає весь файл у Buffer без перевірки. Основний demo expired; preview працює, але data ephemeral.
Чи збирається він, чи проходить лінтер і тести
Build проходить із tracing warnings. Lint падає на шести React errors. Tests відсутні. Audit показав дев’ять advisories: п’ять high і чотири moderate.
Як він виглядає і звучить
Темна UI, emerald accent і чіткий hero працюють. “No limits” суперечить 1 MB, а 500 MB не enforced.
Що лагодити першим
Закрийте dashboard routes auth, не повертайте master tokens, hash secrets, enforce caps, block private webhook targets, sign payloads, shared rate limits і auth tests у CI.
Вердикт
Продуктова форма сильна й preview гарний, але важливі дані довіряти не можна до виправлення authorization.
FAQ
Що таке MemBox?
Відкритий REST API памʼяті й файлів для AI-агентів із пошуком, знімками, TTL, спільним доступом, webhooks, аналітикою та зберіганням у GitHub.
Чи працює demo?
Vercel preview працює; основний сайт expired.
Чи готовий до sensitive data?
Ні. Routes без auth можуть відкрити tokens і видалити boxes.
Посилання й автор
Робоче превʼю на Vercel · Основне демо (на момент перевірки закінчилося) · Вихідний код
Reviewed source at commit e8e53b5 · Build and audit reproduced 2026-09-21