Przejście do treści
ActiSignal
Oprogramowanie SaaS

ActiSignal

Monitoring aktywności pracowników i komputerów firmowych z Windows — bez zrzutów ekranu i keyloggera.

Produkt własny Griff Software — actisignal.pl ·

  • .NET 10
  • ASP.NET Core
  • PostgreSQL
  • Windows Service
  • WPF
  • Next.js
Krótki opis

Czas aktywny, aplikacje, domeny i stan komputerów w jednym panelu — zgodnie z RODO.

Zrzuty ekranu

Pasek można przewijać w bok. Kliknięcie zrzutu powiększa go — dalej nawigacja strzałkami.

Pełny opis

ActiSignal to oprogramowanie do monitorowania aktywności pracowników i komputerów firmowych z systemem Windows. Pokazuje, kto jest zalogowany, ile czasu komputer był aktywnie używany, z jakich aplikacji i stron korzystano oraz czy każdy komputer prawidłowo przesyła dane — w jednym panelu, bez zrzutów ekranu, keyloggera i podglądania prywatnych treści.

DLA KOGO

Dla właścicieli małych i średnich firm, kierowników zespołów pracujących zdalnie i hybrydowo oraz działów IT, które utrzymują dziesiątki lub setki komputerów w kilku lokalizacjach.

CO WIDAĆ W PANELU

Status każdego komputera — online, bezczynny, offline — z zalogowanym użytkownikiem. Godziny logowania, wylogowania i blokady na osi dnia. Czas aktywny i bezczynny. Czas w Teams, Excelu, programie księgowym, CRM czy ERP. Czas w domenach stron — wyłącznie domena, bez pełnych adresów i wyszukiwanych fraz.

STAN AGENTÓW DLA DZIAŁU IT

Panel wyróżnia komputery, które przestały przesyłać dane, mają nieaktualnego Agenta albo problem z synchronizacją.

CZEGO ACTISIGNAL NIGDY NIE ZAPISUJE

Naciśnięć klawiszy, zrzutów i nagrań ekranu, dźwięku z mikrofonu i obrazu z kamery, zawartości schowka, tytułów okien, treści wiadomości, e-maili i dokumentów, pełnych adresów stron ani danych z formularzy.

RODO I KODEKS PRACY

Zakres danych jest ograniczony i jawny. Administrator decyduje, co jest zbierane, w jakich godzinach i jak długo dane są przechowywane — po tym czasie są usuwane automatycznie. Pracownicy widzą, że monitoring działa.

WDROŻENIE

Instalator MSI uruchamiany ręcznie albo zdalnie przez Intune, GPO lub system RMM. Agent działa w tle jako usługa Windows i łączy się z panelem wyłącznie szyfrowanym połączeniem. Bez zmian w sieci firmowej.

CENNIK

Opłata za monitorowany komputer miesięcznie. Plany Starter, Business i Scale mają te same funkcje i różnią się długością historii danych oraz poziomem wsparcia. 30 dni bezpłatnego testu na maksymalnie 10 komputerach, bez karty płatniczej.


Technologie

Zakres prac: Produkt własny — koncepcja, architektura, agent Windows, backend, aplikacje desktopowe, panel webowy, strona produktu, wdrożenie

Agent Windows
  • .NET 10 Windows Service
  • Session worker per logged-on user
  • Win32 P/Invoke (LibraryImport)
  • SQLite outbox (WAL)
  • DPAPI
  • Named-pipe IPC with ACL
  • MV3 browser extension (Edge, Chrome, Firefox) + native messaging
  • Serilog
Backend
  • ASP.NET Core (.NET 10)
  • EF Core 10
  • PostgreSQL 17
  • Clean Architecture
  • FluentValidation
  • OpenAPI
  • OpenTelemetry
  • Sentry
  • JWT + TOTP (2FA)
Aplikacje desktopowe
  • WPF (.NET 10)
  • CommunityToolkit.Mvvm
  • WPF-UI
  • Polish / English localization
Aplikacja frontendowa
  • Next.js 16
  • React 19
  • TypeScript
  • Tailwind CSS 4
  • next-intl
  • Zod
  • Static export (product website)
  • BFF session (customer web panel)
Testy
  • xUnit v3
  • FluentAssertions
  • NSubstitute
  • Testcontainers (PostgreSQL)
  • Architecture tests
  • Vitest
  • Playwright + axe
Wdrożenie
  • WiX 7 MSI + Setup.exe
  • Intune / GPO / RMM
  • Signed, staged updates (Authenticode, SHA-256)
  • Docker Compose
  • Caddy (TLS, HSTS)

Realizacja — architektura i technologie

10 min

Realizacja w jednym akapicie

ActiSignal to nasz własny produkt: system do monitorowania aktywności pracowników i stanu komputerów firmowych z Windows. Składa się z agenta działającego jako usługa systemu Windows, API w ASP.NET Core z bazą PostgreSQL, aplikacji dla administratorów klienta, wewnętrznego panelu operatora usługi i strony produktu w Next.js. Całość zaprojektowaliśmy wokół jednego założenia: pokazać firmie to, czego potrzebuje do organizacji pracy i utrzymania komputerów — i zatrzymać się tam, gdzie zaczyna się prywatność pracownika.

Problem: widoczność bez inwigilacji

Programy do monitorowania pracowników mają złą sławę i nie bez powodu. Wiele z nich robi zrzuty ekranu co kilka minut, rejestruje naciśnięcia klawiszy i zapisuje pełne adresy odwiedzanych stron. Taki zakres jest trudny do obrony przed RODO i Kodeksem pracy, a w zespole buduje atmosferę nieufności.

Tymczasem większość pytań, z którymi przychodzi właściciel firmy albo dział IT, jest dużo prostsza: czy praca się rozpoczęła, ile czasu komputer był używany, czy opłacane licencje są wykorzystywane, który laptop od tygodnia nie przesyła danych. Na żadne z nich nie trzeba znać treści ekranu.

Dlatego ActiSignal zbiera metadane, nie treści — i to nie jest ustawienie, które da się przełączyć, tylko granica wpisana w architekturę. Kod, który mógłby odczytać tytuł okna czy wpisywany tekst, po prostu nie istnieje.

Architektura — cztery aplikacje, jedno API

Agent Windows (usługa + proces w sesji)  ──HTTPS──┐
Aplikacja administratora klienta (WPF)   ──HTTPS──┤
Panel webowy klienta (Next.js, BFF)      ──HTTPS──┼──>  API (ASP.NET Core)  ──>  PostgreSQL
Panel operatora usługi (WPF)             ──HTTPS──┘

Backend jest zbudowany według Clean Architecture: Domain (encje i reguły, bez zależności), Application (każda operacja jako jawny use case), Infrastructure (EF Core, PostgreSQL, bezpieczeństwo) i Api jako composition root. Ta sama dyscyplina obowiązuje w agencie: logika i maszyny stanów żyją w projekcie, który da się testować bez systemu Windows, a wywołania Win32, SQLite i HTTP siedzą w osobnej warstwie infrastruktury.

Od początku rozdzieliliśmy też dwa światy: funkcje klienta (komputery, sesje, raporty jego organizacji) i funkcje operatora usługi (organizacje, licencje, wydania agenta). To dwie osobne aplikacje i dwa osobne obszary API — funkcja jednego nigdy nie trafia do drugiego.

Agent Windows — usługa systemowa i proces w sesji użytkownika

Usługa Windows działa w izolowanej sesji 0, więc sama nie widzi pulpitu użytkownika. Dla każdej zalogowanej sesji uruchamia osobny, lekki proces roboczy, pilnuje go i wznawia, jeśli przestanie działać — a brak takiego procesu jest raportowany jako problem do panelu.

Proces w sesji użytkownika jest traktowany jako niezaufany: nigdy nie łączy się z API, tylko przekazuje odczyty usłudze przez lokalny kanał z ograniczonymi uprawnieniami, w którym obie strony nawzajem sprawdzają swoją tożsamość. Dostęp do sieci i poświadczeń ma wyłącznie usługa.

Czas aktywny bez przechwytywania klawiatury

Do wyznaczenia czasu aktywnego wystarczy wiedzieć, że komputer jest używany — nie co zostało wpisane. Agent co kilka sekund odczytuje z systemu czas od ostatniej interakcji i nie instaluje żadnych hooków klawiatury ani myszy. Stan komputera ma prosty priorytet: zablokowany > bezczynny > aktywny, a bezczynność zaczyna się domyślnie po 5 minutach.

Agent odczytujeAgent nigdy nie odczytuje
czas od ostatniej interakcji z komputeremnaciśnięć klawiszy, ruchów myszy
logowanie, wylogowanie, blokadę, odblokowanieobrazu ekranu, kamery, mikrofonu
nazwę pliku i produktu aplikacji na pierwszym planietytułów okien, ścieżek, treści dokumentów
domenę strony w przeglądarce — jeśli funkcja jest włączonapełnych adresów, wyszukiwań, kart prywatnych

Domeny stron dostarcza rozszerzenie przeglądarki (Edge, Chrome, Firefox), które przekazuje wyłącznie nazwę hosta. Strona jest liczona tylko wtedy, gdy przeglądarka jest aplikacją na pierwszym planie, adresy są grupowane do domeny rejestrowalnej według Public Suffix List, a sama funkcja jest domyślnie wyłączona i włącza ją świadomie administrator organizacji.

Praca zdalna: dane nie giną, gdy laptop jest offline

Laptop pracownika zdalnego bywa godzinami bez sieci. Agent zapisuje zdarzenia w lokalnej kolejce SQLite i wysyła je partiami, skompresowane, w osobnych kanałach dla zdarzeń sesji i dla aktywności. Kolejka ma twarde limity rozmiaru i wieku, a jeśli kiedykolwiek musi coś odrzucić, liczba odrzuconych zdarzeń trafia w sygnale „heartbeat” do panelu — utrata danych nigdy nie jest cicha. Serwer przyjmuje partie idempotentnie, więc ponowna wysyłka po zerwanym połączeniu nie tworzy duplikatów.

Wielodostępność, która domyślnie odmawia

Wszystkie organizacje dzielą jeden schemat bazy, a izolacja jest warstwowa: globalny filtr zapytań EF Core, który zawodzi w stronę bezpieczną, gdy nie ustawiono kontekstu organizacji, strażnik przy zapisie, złożone klucze obce i test, który pilnuje listy miejsc, gdzie wolno ominąć filtr. Identyfikator z cudzej organizacji zwraca po prostu 404.

Role, audyt i automatyczne usuwanie danych

  • Role — Właściciel, Administrator, Analityk i Audytor, każda ze stałym zestawem uprawnień.

  • Dziennik audytu — zdarzenia domenowe zapisywane w tej samej transakcji co zmiana, w tabeli tylko do dopisywania. Audytowany jest także sam odczyt aktywności konkretnej osoby.

  • Retencja — organizacja wybiera, czy surowe dane są przechowywane 30, 90, 180 czy 365 dni. Zadanie w tle usuwa je automatycznie, a zostają tylko zagregowane podsumowania dzienne.

  • Logowanie administratorów — obowiązkowe drugie uwierzytelnienie (TOTP) i kody odzyskiwania.

Wdrożenie i aktualizacje

Agent jest dostarczany jako instalator MSI (WiX), który dział IT może wdrożyć po cichu przez Intune, GPO albo system RMM. Rejestracja urządzenia działa na krótkotrwałym tokenie: urządzenie wymienia go na własny sekret, zapisany przez DPAPI, a ten na krótko ważny token dostępu, który jest regularnie odnawiany. Unieważnienie urządzenia działa w ciągu około minuty.

Aktualizacje przechodzą przez etapy: szkic, pilotaż, publikacja z rozłożonym w czasie wdrożeniem. Agent pobiera paczkę wyłącznie z własnego API, sprawdza jej sumę kontrolną, a moduł aktualizacji instaluje tylko pakiety z poprawnym podpisem cyfrowym.

Jakość jako element produktu

  • blisko 60 zapisanych decyzji architektonicznych (ADR), które wyjaśniają, dlaczego coś działa tak, a nie inaczej,

  • ponad 11 tysięcy metod testowych, w tym testy integracyjne na prawdziwym PostgreSQL w kontenerach i testy architektury pilnujące kierunku zależności,

  • ostrzeżenia kompilatora traktowane jako błędy i analizator, który zabrania odczytu zegara z pominięciem abstrakcji czasu — dzięki temu logika retencji i sesji jest w pełni testowalna.

Strona produktu

actisignal.pl to statycznie eksportowana strona w Next.js 16 z wersjami polską i angielską, animowanym podglądem panelu na danych przykładowych, cennikiem i rozbudowanym FAQ. Analityka działa wyłącznie po zgodzie (Consent Mode), a treść jest pisana pod frazy, którymi firmy faktycznie szukają takiego oprogramowania. Szerzej o tym, na co zwracać uwagę przy wyborze, piszemy w artykule Program do monitorowania pracowników zgodny z RODO — jak wybrać?

Co z tej realizacji wynika

Najważniejsza decyzja w ActiSignal nie dotyczyła technologii, tylko zakresu danych. Ograniczenie się do metadanych sprawiło, że produkt łatwiej wdrożyć zgodnie z prawem, łatwiej wytłumaczyć zespołowi i łatwiej zabezpieczyć — bo dane, których się nie zbiera, nie mogą wyciec. Ta sama zasada, „zbieraj tylko to, co odpowiada na konkretne pytanie”, sprawdza się w każdym systemie, który przetwarza dane o ludziach.


Porozmawiajmy o planowanym projekcie

Pierwsza konsultacja jest bezpłatna i niezobowiązująca. Wystarczy krótki opis procesu oraz oczekiwanego rezultatu.

Porozmawiajmy o projekcie