The privacy-aware signal layer for desktop activity

Useful signals. Clean of personal data, sensitive data and noise.

CleanSignals turns Mac activity into structured, privacy-safe signals for your product. Everything is processed on the Mac. Only the signals leave to your cloud.

Free · macOS 14 or later No account needed Any webhook, or our free dashboard
Notes collecting 09:41
Supplier contracts – Q3
portal.example-crm.com/contracts/4471
Payroll_March_J.Smith.numbers
Meeting notes – 1:1 with Jane
Move, click and type — nothing leaves this page
Raw activitystays on device
    Clean signalsdelivered via webhook
      What the Mac sees What your product receives
      What your product receives

      Raw activity in. Clean signals out. The filtering happens on the Mac, before anything leaves it.

      How it works

      Capture locally. Share only what matters.

      01

      Observe

      Notices which apps and windows are in use.

      02

      Filter

      Drops text, titles and personal data on the Mac.

      03

      Understand

      Labels the kind of work with on-device AI.

      04

      Summarise

      Builds signals: times, counts and categories.

      05

      Deliver

      Sends signed batches to your webhook.

      12 signals, each one a switch

      Structured data about how work happens.

      A few examples. See every signal and field →

      app.focus · app.switch

      Apps and switching

      Which apps are used, for how long, and where people switch.

      app.focus
      { "app_name": "Numbers", "category": "analysis", "duration_s": 412 }
      Never sentwindow titlefile namefull URL
      work.category · task.label

      Kinds of work

      Labelled on the Mac. Only the label leaves.

      work.category
      { "category": "analysis", "confidence": 0.84 }
      task.episode · handover

      Tasks and handovers

      Continuous pieces of work, and data copied from one tool into another.

      task.episode
      { "apps": ["Salesforce", "Excel", "Mail"], "duration_s": 2934, "paste_count": 3, "rework_count": 1 }
      Never sentwhat was copiedrecord contents
      activity.* · work.day.summary

      Time and activity

      Active, idle and away time. Counts, never keys.

      activity.presence
      { "state": "active", "duration_s": 1860 }
      One app. Many products.

      The desktop data layer for your platform.

      Work intelligenceHow roles and teams really work.
      Process discoveryRepeated workflows worth automating.
      Tool adoptionWhich apps and AI tools get used.
      Productivity analyticsFocus, fragmentation, meeting load.
      HR and AI platformsWork signals without private content.
      ResearchStructured behavioural data, with consent.
      Built for integration

      Signed JSON, straight to your webhook.

      Mac activityapps, windows, input
      Privacy filterdrop, mask, code
      On-device AIlabels the work
      Signalssigned batches
      Your platformyour analysis

      Any webhook

      HMAC-signed, retried, never duplicated.

      Free dashboard

      Explore the signals before you build.

      Documented

      Every field explained. Read the docs →

      POST https://your-platform.example/webhook
      X-CleanSignals-Signature: v1=pdneHSOiM+CG…
      
      {
        "type": "signals.batch",
        "device_id": "dev_c0ffee91…",
        "subject": "sub_4f9c2e7a…",
        "data": [
          { "type": "app.switch", "dwell_s": 2237 },
          { "type": "work.category", "category": "analysis" },
          { "type": "handover", "content": never sent }
        ]
      }
      Free to try

      Running in two minutes.

      01

      Download

      Drag CleanSignals to Applications.

      02

      Allow one permission

      Accessibility, so it can see the front app.

      03

      Connect

      Your webhook, or our free dashboard.

      Let's talk about your signals.

      Tell us what your product needs to understand. We'll show you how to deliver it without the sensitive data.