Skip to content

About

Find something you saw on your phone — privately and on-device.

Topics

Resources

Stars

27 stars

Watchers

1 watching

Forks

Repository files navigation

ActivityTrace

Find something you saw on your phone.

You know you saw it.

A notification. A message. A link. A piece of text. A file.

But now you can't remember where.

ActivityTrace makes your Android activity searchable.

"tracking number DHL"

"message from Sarah yesterday"

"that link I saw last week"

"error from Signal"

No cloud. No account. No telemetry. No Internet permission.

Get it on F-Droid


See it in action

[20-second demo — coming soon]

You saw it. You dismissed it. Now find it.


Why ActivityTrace?

Android gives you lots of information, but finding something you saw earlier can be surprisingly difficult.

ActivityTrace creates a private, searchable memory of information your phone has already shown you.

Search it when you need it.


Search across your phone's activity

  • Notifications
  • Screen content
  • Indexed files (documents, PDFs, images)

Everything ActivityTrace captures is combined into one searchable timeline.

Search naturally

Use ordinary language or precise filters to narrow results:

  • yesterday
  • last week
  • in:signal
  • type:notification
  • tracking number

Keywords and filters can be combined (tracking number type:notification yesterday). Search uses FTS5 with prefix matching — type whats to find WhatsApp, or track to find any tracking-related item. Results are ranked by relevance and recency.

Private by design

Your ActivityTrace database stays on your device.

  • No Internet permission
  • No cloud
  • No account
  • No telemetry, analytics, or crash reporting
  • Encrypted at rest with SQLCipher + Android Keystore

ActivityTrace cannot send your data anywhere.

You control your data

Choose how long captured information is kept — from 7 days to 90 days. Block individual apps from being captured entirely.

Optional encrypted backup and restore keeps a copy of your database, with integrity verification on restore.

How it works

ActivityTrace runs entirely on your device.

  1. ActivityTrace captures information from the sources you enable.
  2. The information is indexed in a local encrypted database.
  3. You search it whenever you need it.
  4. Retention rules automatically remove old data.

Nothing is uploaded to a server. There is no hidden analytics endpoint, no cloud sync, and no telemetry waiting to be disabled — the app has no network access to send anything.

Optional screen capture

ActivityTrace can optionally index screen content using Android's AccessibilityService. This permission is not required for basic notification search.


Screenshots

Screenshot 1 Screenshot 2 Screenshot 3 Screenshot 4 Screenshot 5


Get ActivityTrace

F-Droid

Install from F-Droid

Source code

GitHub


Help shape ActivityTrace

ActivityTrace is still early, and the most useful features come from real users.

What were you trying to find?

Tell us what you were looking for and what happened.

Give feedback

Developers: report bugs and contribute on GitHub.


Open source

ActivityTrace is free and open source software under the GPL-3.0-only license.

  • No Google Play Services
  • No proprietary dependencies
  • No AI or ML components
  • No cloud features

Contributions are welcome.


Other features

  • Statistics dashboard — activity over time, top apps, content-type breakdown
  • Export as JSON or CSV
  • Encrypted-database backup and restore (plain SQLite)
  • Theme selection — system default, light, dark, or OLED black
  • Demo mode — explore ActivityTrace with fictional data, fully separate from your real captures

Technical details

  • Android 8.0+ (API 26)
  • Jetpack Compose + Material 3
  • Room + SQLCipher (AES-256-CBC) + Android Keystore
  • SQLite FTS5 full-text search with relevance + recency ranking
  • WorkManager for retention cleanup and file indexing
  • NotificationListener + AccessibilityService capture
  • Storage Access Framework file indexing

Build

./gradlew assembleDebug     # debug build (unminified)
./gradlew assembleRelease   # release build (minified, ProGuard)
./gradlew test              # unit tests
./gradlew lint              # static analysis

Prerequisites: JDK 17, Android SDK 36. See AGENTS.md for architecture details.

SQLCipher upgrades and database-recovery behavior: see docs/sqlcipher-upgrade.md.

FTS search benchmarks

Opt-in instrumented benchmark covering large databases (100k / 1m rows):

./gradlew connectedDebugAndroidTest \
  -Pandroid.testInstrumentationRunnerArguments.ftsBenchmarkRows=1000000

About

Find something you saw on your phone — privately and on-device.

Topics

Resources

Stars

27 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages