Agent AI · MCP · głos
Pracownia ceramiki w Londynie prowadzona rozmową z agentem, który niczego nie zmienia bez zgody
Dwie marki jednej firmy, dwa backendy, wspólny agent. Właściciel pisze albo mówi, agent czyta dane, proponuje zmianę na karcie i wykonuje ją dopiero po kliknięciu „Approve”. Ten sam agent jest dostępny w Claude jako konektor MCP.
- Status
- Przed startem: zastępuje zamknięty SaaS, testy z właścicielem
- Okres
- październik – listopad 2026
- od pustego repo do systemu z agentem i MCP (329 commitów)
- 17 dniod pustego repo do systemu z agentem i MCP (329 commitów)
- endpointy API; dostęp sprawdza serwer: klient, personel, właściciel albo agent (OAuth)
- 304endpointy API; dostęp sprawdza serwer: klient, personel, właściciel albo agent (OAuth)
- tabele w dwóch bazach PostgreSQL
- 72tabele w dwóch bazach PostgreSQL
- trafień w evalu rozpoznawania prac ze zdjęć
- 24/24trafień w evalu rozpoznawania prac ze zdjęć
Problem
Pracownia działała na zamkniętym SaaS-ie zrobionym pod fryzjerów: kurs to było jedno wydarzenie z datą startu, nie było obecności, kolejki do pieca ani kont kursantów, a treści ładowane JavaScriptem nie były widoczne dla Google. Właściciel prowadzi dwie marki i nie ma czasu na panele z czterdziestoma zakładkami.
Co zbudowałem
- Dwa backendy FastAPI (Studio Rhei i Sway) z osobnymi bazami PostgreSQL, wspólną biblioteką i mostem podpisanym sekretem, żeby agent jednej marki mógł bezpiecznie czytać i zmieniać dane drugiej.
- Keramos: agent z kilkudziesięcioma narzędziami. Każdy zapis jest propozycją z dokładnym opisem, kwotą i treścią maila. Wykonuje go serwer tymi samymi usługami co panel. Dzienny limit kosztu i historia każdej akcji.
- Głos: Whisper lokalnie na serwerze, ElevenLabs do czytania. Daty, kwoty i kody zamieniane regułami za znacznikami, bo model bez nich przekręcał kody.
- Zdalny serwer MCP z OAuth 2.1 + PKCE: właściciel podłącza Keramosa do swojego Claude. Zmiany wrażliwe (pieniądze, maile, ceny) zatwierdza na stronie w panelu.
- AI do zdjęć prac: model rozpoznaje rodzaj, etap i wymiary (z arkuszem referencyjnym A4), a planer pieca układa prace w 3D na półkach.
- Strony marek prerenderowane do HTML (React Router 7) ze schema.org, sitemap i hreflang. Stripe z podpisanymi webhookami, Resend z kolejką i ponawianiem, Parcel2Go, Google Merchant, Meta.
Architektura
Najciekawsze jest to, co pod spodem
Wybierz przepływ, żeby zobaczyć, jak dane idą przez system. Kliknij element, żeby przeczytać szczegóły.
← przesuń diagram →
Przepływy
Głos → propozycja → zgoda → Stripe. Model nie wykonuje zapisu sam.
Kliknij element diagramu, żeby zobaczyć szczegóły.
- sprzęt
- brzeg / sieć
- usługa
- dane
- AI
- zewnętrzne
- ludzie / aplikacje
- radio
- tunel
- HTTPS
- lokalnie
- zdarzenie
Opis wszystkich elementów
- Właściciel · panel, głos
- Pisze albo mówi do Keramosa w panelu, na telefonie albo komputerze. Zatwierdza propozycje jednym kliknięciem.
- Claude.ai · konektor MCP
- Ten sam agent w Claude właściciela (web, desktop, telefon). Logowanie OAuth, tylko konta właściciela.
- Klient · rezerwacje, sklep
- Kursant albo kupujący: rezerwuje zajęcia, płaci, śledzi swoją pracę po kodzie QR, dostaje maile.
- Pages · HTML z prerenderu
- Strony marek zbudowane do statycznego HTML przy deployu; zmiana produktu w panelu przebudowuje stronę po 30 s.
- Tunnel · jedyne wejście do API
- API słuchają tylko na localhost. Z internetu prowadzi do nich wyłącznie tunel, a SSH działa tylko w sieci Tailscale.
- rhei-mcp · OAuth 2.1, PKCE
- Serwer MCP: rejestracja klienta (CIMD/DCR), tokeny przechowywane jako SHA-256, rotacja refresh tokenów, 600 wywołań na godzinę. 14 testów i 16 kontroli na żywo.
- Studio Rhei API · kursy, piec, prace
- Kursy z obecnością i odrabianiem, wypały, prace z QR, karty podarunkowe, zapytania, maile. Plus Whisper do głosu.
- Sway API · sklep, galeria
- Sklep i galeria marki autorskiej: zamówienia, wysyłki, zwroty, katalog do Google Merchant.
- Keramos · pętla agenta
- Kontekst: stała część w cache, mała migawka stanu studia i ostatnie wiadomości. Resztę agent dociąga narzędziami, które rozwiązują nazwy na identyfikatory. Limit kroków i kosztu.
- PostgreSQL · 2 bazy, 72 tabele
- Osobna baza na markę. Treści przetłumaczalne w JSONB. Migracje Alembic uruchamiane przy deployu.
- jobs · timery, 5 min
- Kolejka maili z ponawianiem, przypomnienia, SEO, katalogi. Ten sam kod i baza co API, osobny proces.
- Anthropic · Sonnet · Haiku
- Sonnet prowadzi wieloetapowe zapisy, Haiku sprawdza zdjęcia (eval 24/24, około 2 centów za przebieg) i wygładza tekst do mowy.
- Stripe · płatności, zwroty
- PaymentIntents i podpisane webhooki: płatności, nieudane płatności, zwroty (także zrobione w panelu Stripe) i spory.
- Supabase Auth · kod z maila
- Tylko uwierzytelnianie (OTP lub magic link). Ludzie i role są w naszej bazie; tokeny weryfikowane przez JWKS.
- ElevenLabs · głos agenta
- Odczyt odpowiedzi z dziennym limitem znaków. Po przekroczeniu limitu czyta głos przeglądarki.
- Resend · Parcel2Go · maile, kurierzy
- Maile z kolejki z ponawianiem; etykiety kurierskie i śledzenie przesyłek.
Decyzje, które robią różnicę
Każdy zapis to propozycja
Model nie ma bezpośredniego zapisu. Zapis wykonuje serwer po kliknięciu, tymi samymi usługami i regułami co ręczny panel. Nie ma usuwania: chowa się i anuluje.
Odtworzyć funkcje, nie kod
Zamkniętego SaaS-a nie da się wyeksportować. Najpierw demo 1:1 na zrzucie publicznego API, z ekranów wyszedł kontrakt, dopiero potem schemat bazy.
Zero otwartych portów
API słucha na 127.0.0.1, ruch wchodzi tunelem, SSH tylko przez Tailscale, sekrety z uprawnieniami 640. Audyt architektury opisany w repo pod przegląd bezpieczeństwa.
Modele dobrane do zadań
Sonnet do wieloetapowych zapisów (Haiku był za słaby), Haiku do zdjęć i mowy. Każde zadanie ma eval i znany koszt.
Jak to działa
Pracownia, sklep i agent w jednym systemie
Panel studia z dwudziestoma sekcjami, sklep marki autorskiej, konto kursanta i Keramos, który z tego wszystkiego korzysta. Opisy pochodzą z przewodnika, który właściciel dostał razem z systemem.
Kursy, obecności, wypały, prace z kodami QR, pieniądze i ludzie, bez zewnętrznego SaaS.





Agent, który czyta dane obu marek, dopytuje i proponuje zmianę na karcie. Nic się nie dzieje, dopóki właściciel nie zatwierdzi.





Sklep i galeria z własnym panelem: wystawienie pracy z telefonu, zamówienia, kurierzy, Etsy i eBay.




Konto bez hasła: rezerwacje, odrabianie zajęć, płatność kartą, wypał własnej pracy i jej status.





Dane na ekranach są fikcyjne.
Stos
Linie oferty
Masz proces, który powinien działać sam?
30 minut, bez opłat. Powiem, czy to ma sens, jak bym to zbudował i ile kosztowałoby utrzymanie.