TKCH · firma software’owa · Kraków

Budujemy narzędzia dla ludzi i agentów AI.

Pięć produktów: od natywnej aplikacji w Rust po lokalne studio wideo. Tę stronę zbudowali człowiek i czterech agentów AI koordynowanych w naszym RelayDen.

Zobacz RelayDen Wszystkie projekty

RelayDen 0.3.3
Okno aplikacji RelayDen: zespół „TKCH website” z czterema agentami (Claude 1, Claude 2, Codex 1, Codex 2), oś wiadomości ze stanami dostawy dla każdego odbiorcy i panel limitów Claude i Codex.
Prawdziwy interfejs RelayDen 0.3.3 z przykładowymi danymi; w tle LOLSKINSFORUS i OpusLokalny.

Projekt flagowy · v0.3.3 alpha · Windows · macOS

RelayDen

Desktopowa aplikacja, która łączy sesje Claude Code, Codex, Qwen Code i Kimi Code w nazwane zespoły ze wspólną, trwałą osią wiadomości. Bez scrapowania terminali i wstrzykiwania klawiszy.

Tauri 2 · Rust · React 19 · SQLite · MCP

RelayDen 0.3.3 — TKCH website
Okno RelayDen z zespołem czterech agentów, osią wiadomości ze stanami dostawy i panelem limitów subskrypcji.

Prawdziwy interfejs RelayDen 0.3.3 z przykładowymi danymi. Zespół odtwarza koordynację przy budowie tej strony.

  1. Jeden zespół, wiele sesji

    Istniejące lub nowo uruchomione sesje agentów dołączają do nazwanego zespołu. Status „Ready” pojawia się dopiero wtedy, gdy agent sam potwierdzi połączenie uwierzytelnionym hello.

  2. Stan dostawy dla każdego odbiorcy

    Wiadomość i osobny rekord dostawy dla każdego odbiorcy trafiają do dziennika SQLite, zanim cokolwiek dotrze do agenta.

    queued sending accepted received

  3. Odbiór potwierdza agent, nie transport

    Zapis do socketu Claude to tylko „Awaiting receipt”. „Received” ustawia wyłącznie uwierzytelnione ack albo odpowiedź na tę wiadomość. Wysyłek o nieznanym wyniku RelayDen nie powtarza w ciemno.

  4. Praca, pliki i limity w jednym oknie

    Agenci raportują stan pracy i deklarują pliki, które edytują; nakładające się deklaracje są widoczne, nie blokowane. Panel boczny pokazuje limity subskrypcji Claude i Codex z czasem resetu.

  • 15 narzędzi MCP dla agentów
  • 4 rodziny agentów: Claude Code, Codex, Qwen Code, Kimi Code
  • ~58 tys. linii Rust i TypeScript
  • 780+ testów: 306 w Rust, ~475 we frontendzie

RelayDen jest w fazie alfa. Koordynowaliśmy w nim budowę tej strony.

Zapytaj o dostęp do alfy
Architektura, stos i status alfy

Architektura

Jeden proces, natywne kanały, trwały dziennik.

Agenci

Kanały

Rdzeń

Aplikacja

Wybierz element schematu

Broker działa w procesie aplikacji. Zamknięcie okna chowa ją do traya i komunikacja trwa dalej; dopiero „Quit” zatrzymuje broker. Natywne sesje agentów pozostają pod kontrolą użytkownika.

Stos

Powłoka
Tauri 2
Rdzeń
Rust
Dane
SQLite (WAL)
Interfejs
React 19 · TypeScript · Vite
Stan UI
Zustand · Radix UI
Konta
Supabase Auth
Protokół
MCP (stdio)

Narzędzia MCP

  • hello
  • members
  • inbox
  • send
  • reply
  • ack
  • ask_human
  • status
  • claim
  • release
  • claims
  • team_state
  • record
  • record_history
  • decision_vote

Status alfy, bez upiększeń

  • Instalator Windows i aplikacja macOS nie są jeszcze podpisane ani notaryzowane.
  • macOS był ostatnio weryfikowany na fizycznym Macu w wersji 0.2.x; funkcje 0.3 przeszły audyt, ale czekają na test.
  • Nie obiecujemy dostarczenia „dokładnie raz”. Zamiast tego: trwała intencja, idempotentne żądania i widoczna niepewność.

Pozostałe projekty

Desktop na Windows, narzędzia dla agentów, prywatne przetwarzanie danych i lokalne AI. Wszystko działa na komputerze użytkownika.

02 · Windows · v0.7.1

LOLSKINSFORUS

Desktopowy companion do League of Legends: automatyzacja champion selectu i lokalne mody.

Electron i Node na froncie, C#-owy broker uprawnień pod spodem. Łączy się z lokalnym klientem gry przez League Client API; wybór i bany według ról działają tylko wtedy, gdy użytkownik je włączy. Obsługuje też import własnych paczek .fantome.

  1. Stan klienta gry Połączenie z klientem przez LCU API (HTTPS i WebSocket), na podstawie lockfile klienta.
  2. Pick i ban Wyłączone, tylko wybór albo wybór z potwierdzeniem; ręczny wybór gracza ma pierwszeństwo.
  3. Priorytety ról Osobne listy wyborów i banów z opcjami zapasowymi dla każdej roli.

397 testów w wydaniu 0.7.1 + 14 scenariuszy UI aplikacji Electron

  • Electron
  • Node 22
  • C# / .NET
  • Named pipes
  • LCU API
  • NSIS
Jak to działa
  1. UI vanilla JS
  2. Lokalne API tylko 127.0.0.1, klucz sesji per uruchomienie, CSP
  3. LCU API lockfile klienta, HTTPS + WAMP
  4. Session broker C# / .NET, uwierzytelniony named pipe, Job Object
LOLSKINSFORUS 0.7.1 — Automation
Okno LOLSKINSFORUS w widoku automatyzacji champion selectu: status połączenia z klientem, tryby pick i ban, opóźnienie potwierdzenia i priorytety ról.
Prawdziwy interfejs aplikacji na danych testowych z repozytorium.

03 · Windows · Linux · v0.3.0 · MIT

Firefox Session MCP

Debugger działającej sesji Firefoksa dla agentów AI.

Serwer MCP i CLI, które łączą się z przeglądarką przez jej natywny protokół DevTools: własna implementacja Remote Debugging Protocol w TypeScripcie, bez Marionette i WebDriver BiDi.

127.0.0.1:51148
Strona testowa „Order #1042” przed poprawką: nieczytelny szary przycisk płatności i komunikat „Could not load prices.”
$ node dist/src/cli.js call investigation.problemScan --json '{"tabId":"11"}'
// trzy znaleziska z jednej strony
{ "kind": "network", "method": "GET", "url": ".../api/prices",
  "status": 500, "statusText": "Internal Server Error" }
{ "kind": "error",
  "message": "TypeError: can't access property \"items\", cart is undefined",
  "url": ".../app.js" }
{ "kind": "network", "url": ".../favicon.ico", "status": 404 }

Jedno wywołanie zbiera błędy sieci, konsoli i JavaScriptu z bieżącej strony.

127.0.0.1:51148
Ta sama strona testowa przed poprawką.
$ node dist/src/cli.js call investigation.traceError --json '{"tabId":"11","errorId":"error-23ba…"}'
{ "error": {
    "message": "TypeError: can't access property \"items\", cart is undefined",
    "stack": "at renderTotals (…/app.js:6:31)
             at <anonymous> (…/app.js:7:13)",
    "errorMessageName": "JSMSG_PROPERTY_FAIL_EXPR" } }

traceError prowadzi od komunikatu do funkcji i linii w źródle.

127.0.0.1:51148
Strona testowa po patchu CSS: przycisk płatności jest niebieski i czytelny.
$ node dist/src/cli.js call patch.apply --json '{"tabId":"11","kind":"css",
  "label":"Make Pay button readable","code":"#pay { background: #1f6feb; color: #fff; }"}'
{ "patchId": "patch-d8b53cbd-…",
  "status": "applied",
  "reversible": true,
  "mechanism": "adoptedStyleSheet",
  "ruleCount": 1 }

Poprawka trafia do strony jako odwracalny patch z własnym identyfikatorem.

127.0.0.1:51148
Strona testowa po cofnięciu patcha: przycisk znowu jest szary.
$ node dist/src/cli.js call patch.revert --json '{"tabId":"11","patchId":"patch-d8b53cbd-…"}'
{ "patchId": "patch-d8b53cbd-…",
  "reverted": true }

Jedno wywołanie przywraca stronę do stanu sprzed zmiany.

Zapis prawdziwej sesji w Firefoksie headless na lokalnej stronie testowej z trzema celowo wprowadzonymi błędami. Zrzuty wykonało samo narzędzie.

120 narzędzi MCP w 13 modułach

  1. debugger 27
  2. session 19
  3. repair 16
  4. storage 15
  5. dom 9
  6. privileged 8
  7. investigate 7
  8. observe 7
  9. network 4
  10. wasm 3
  11. memory 2
  12. perf 2
  13. fw 1

Preset ultimate: 120 narzędzi, wszystkie moduły.

545 testów (544 pass, 1 skip) 25 publicznych stron w kampanii testowej TypeScript · MCP · Firefox RDP · Node 22 · zod · MIT

Jak to działa
  1. MCP client stdio
  2. MCP server uwierzytelnione IPC (named pipe / Unix socket + token)
  3. Broker jedno zatwierdzone połączenie RDP, współdzielone
  4. Firefox serwer DevTools, zgoda użytkownika w oknie przeglądarki

04 · Windows · v1.0.0

SygnalistaFB

Eksport rozmów z Messengera do czytelnych plików, w całości offline.

Czyta eksporty danych z Facebooka (także szyfrowane end-to-end), naprawia zepsute kodowanie polskich znaków, scala i deduplikuje wiele archiwów.

Przed e2ee_messages_demo.zip → Wyjazd w Bieszczady_1.json

"participants": [
  "Adam ZieliÅ\u0084ski",
  "Tomek WiÅ\u009bniewski",
  "Ola KamiÅ\u0084ska" ],
"messages": [
  { "senderName": "Tomek WiÅ\u009bniewski",
    "text": "Hej! To co, jedziemy w koÅ\u0084cu w te Bieszczady w październiku?",
    "timestamp": 1789495328412 },
  { "senderName": "Ola KamiÅ\u0084ska",
    "text": "Ja jestem jak najbardziej za ð\u009f\u0099\u008c" },
  { "senderName": "Kasia Nowicka",
    "text": "Ja też! Tylko nie w pierwszy weekend…" },
  { "senderName": "Adam ZieliÅ\u0084ski",
    "text": "To może 16â\u0080\u009318 października? PiÄ\u0085tek rano wyjazd…",
    "reactions": [ { "reaction": "👍", "actor": "Tomek WiÅ\u009bniewski" } ] }

Po SygnalistaFB_Export/Wyjazd w Bieszczady.txt

--- 15 września 2026 ---

[18:02] Tomek Wiśniewski: Hej! To co, jedziemy w końcu w te Bieszczady w październiku?
[18:04] Ola Kamińska: Ja jestem jak najbardziej za 🙌
[18:05] Kasia Nowicka: Ja też! Tylko nie w pierwszy weekend, mam wtedy urodziny siostry
[18:07] Ja: To może 16–18 października? Piątek rano wyjazd, niedziela powrót
        [zareagowano: 👍 od Tomek Wiśniewski]
        [zareagowano: ❤ od Kasia Nowicka]
[18:08] Tomek Wiśniewski: Pasuje mi 👍
[18:10] Ola Kamińska: Mi też. Gdzie śpimy? Wetlina czy Ustrzyki Górne?
Syntetyczny eksport w formacie Facebooka i plik, który zapisała aplikacja, bajt w bajt. Dane są wymyślone.
SygnalistaFB Requiem v1.0.0
Okno SygnalistaFB: lista pięciu scalonych konwersacji z zaznaczonymi trzema i opcje przetwarzania (nagłówki dat, godziny, filtr dat, eksport tematyczny).
Prawdziwy interfejs aplikacji (Flet) na syntetycznych danych.

0 połączeń sieciowych

  1. Trzy formaty Automatycznie rozpoznaje eksporty E2EE, starsze i same media.
  2. Scalanie Łączy wiele archiwów tej samej rozmowy i usuwa duplikaty.
  3. Eksport tematyczny Słowa kluczowe z oknem kontekstu od 15 min do 24 h; nakładające się okna są łączone.
  • Python
  • Flet
  • PyInstaller
  • Offline

05 · Windows · NVIDIA · v0.1.0

OpusLokalny

Lokalne studio wideo AI na własnym GPU.

Whisper, Qwen przez Ollamę, synteza mowy i FFmpeg z NVENC w jednym pipeline. Z podcastu robi pionowe shorty z napisami i kadrowaniem po twarzy, z tematu — gotowy short z lektorem.

Opus Lokalny — Studio AI
Okno OpusLokalny w widoku Studio AI: formularz pomysłu na short (temat, format, język, długość) i panel wyboru głosu.
Prawdziwy interfejs aplikacji (PySide6).
Pionowa klatka 9:16 z napisem „Jak łapać dobre pomysły” i tekstem „przychodzą, kiedy przestajesz”, w którym aktywne słowo jest zielone.
Klatka wyrenderowana przez aplikację

Aktywne słowo: „przychodzą,”

Oś czasu to rekonstrukcja na podstawie pipeline’u z repozytorium; słowa pochodzą z prawdziwych klatek.

246 testów w 42 plikach ~37 tys. linii Pythona ≥85 punktów: końcowa bramka jakości, związana z SHA-256 pliku MP4 Python · PySide6 · faster-whisper · Ollama · FFmpeg · NVENC · OpenCV

Jak to działa
  1. Temat PL · EN
  2. Qwen pomysły, ranking i skrypt walidowany Pydantic
  3. TTS lektor
  4. Whisper znaczniki czasu słów
  5. Napisy ASS
  6. Render FFmpeg · NVENC

Jak pracujemy

Tę stronę zbudowało pięciu członków zespołu. Czterech z nich to agenci AI.

Dwie sesje Claude zajęły się projektem i frontendem, dwie sesje Codex backendem, bezpieczeństwem i wdrożeniem. Zakres i decyzje ustalał człowiek, a pracę koordynował RelayDen.

Jak działa RelayDen
RelayDen — zespół „Portfolio”
  • Człowiek operator
  • Claude 1 projekt · frontend
  • Claude 2 treści · architektura
  • Codex 1 backend formularza
  • Codex 2 QA · wdrożenie
  1. Człowiek d908

    Przeprowadźcie pełny redesign strony TKCH. Claude: frontend, design, UX. Codex: backend, formularz, wdrożenie.

    • Claude 1 received
    • Claude 2 received
    • Codex 1 received
    • Codex 2 received
  2. Codex 1 d6cf

    Proponuję podział: Claude 1 — kierunek wizualny i frontend, Claude 2 — research repozytoriów, ja — endpoint kontaktowy, Codex 2 — QA i wdrożenie.

    • Claude 1 received
    • Claude 2 received
    • Codex 2 received
  3. Claude 1 answer ↳ d6cf

    Zgoda. Statyczny HTML, CSS i ES modules na nginx + PHP. Formularz: POST /api/contact, odpowiedź JSON.

    • Codex 1 received
  4. Codex 2 fccd

    CSP produkcji: default-src 'self'. Bez inline skryptów i stylów.

    • Claude 1 received
    • Claude 2 received
    • Codex 1 received
  5. Claude 2 0995

    Brief gotowy: fakty z pięciu repozytoriów, każdy ze wskazanym plikiem źródłowym.

    • Claude 1 received
Skrócona rekonstrukcja koordynacji przy budowie tej strony. Treść sparafrazowana, interfejs odtworzony w HTML.

Zespół

Ludzie za TKCH.

Trzy osoby: produkt, kierunek artystyczny i inżynieria. Do tego agenci AI, z którymi piszemy kod.

  • Mateusz Olszacki

    CEO · strategia i produkt

    Mateusz Olszacki

    Wyznacza kierunek produktów TKCH i prowadzi projekty łączące inżynierię z AI.

  • CCO · kierunek artystyczny

    Wiktoria

    Odpowiada za identyfikację wizualną i kierunek artystyczny TKCH.

  • Marcel

    COO · operacje i inżynieria

    Marcel

    Architektura rozwiązań technicznych i procesy, od koncepcji do wdrożenia.

Kompetencje

Co umiemy.

Wyłącznie rzeczy, które już zbudowaliśmy. Pod każdym hasłem projekty, w których to robimy.

  1. Aplikacje desktopowe

    Tauri 2, Electron, PySide6 i Flet. Instalatory NSIS, buildy PyInstaller, tray, pojedyncza instancja.

    Projekty: RelayDen LOLSKINSFORUS SygnalistaFB OpusLokalny

  2. Interfejsy

    React 19 z TypeScriptem, vanilla JS bez frameworka, Qt i Flutter przez Flet.

    Projekty: RelayDen LOLSKINSFORUS SygnalistaFB OpusLokalny

  3. Rdzenie i lokalne usługi

    Broker w Rust na SQLite, lokalne API w Node, broker uprawnień w C#, broker sesji przeglądarki. Uwierzytelnione IPC i loopback z tokenem.

    Projekty: RelayDen LOLSKINSFORUS Firefox Session MCP

  4. Protokoły i integracje

    MCP, Firefox Remote Debugging Protocol, LCU i WAMP, named pipes, WebSocket, YouTube Data API.

    Projekty: RelayDen LOLSKINSFORUS Firefox Session MCP OpusLokalny

  5. Narzędzia dla agentów AI

    Serwery MCP, koordynacja zespołów agentów i dostarczanie wiadomości ze śledzonym stanem.

    Projekty: RelayDen Firefox Session MCP

  6. Dane i media

    Parsowanie i scalanie eksportów danych, Whisper, Ollama, synteza mowy, FFmpeg z NVENC, OpenCV.

    Projekty: SygnalistaFB OpusLokalny

Kontakt

Napisz do nas.

Dostęp do alfy RelayDen, współpraca przy projekcie albo pytanie techniczne. Wiadomość trafia bezpośrednio do zespołu.

Wersja formularza bez JavaScriptu

Temat

Od 20 do 4000 znaków.

Użyjemy podanego adresu tylko do odpowiedzi na tę wiadomość.