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.
[20-second demo — coming soon]
You saw it. You dismissed it. Now find it.
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.
- Notifications
- Screen content
- Indexed files (documents, PDFs, images)
Everything ActivityTrace captures is combined into one searchable timeline.
Use ordinary language or precise filters to narrow results:
yesterdaylast weekin:signaltype:notificationtracking 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.
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.
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.
ActivityTrace runs entirely on your device.
- ActivityTrace captures information from the sources you enable.
- The information is indexed in a local encrypted database.
- You search it whenever you need it.
- 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.
ActivityTrace can optionally index screen content using Android's AccessibilityService. This permission is not required for basic notification search.
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.
Developers: report bugs and contribute on GitHub.
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.
- 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
- 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
./gradlew assembleDebug # debug build (unminified)
./gradlew assembleRelease # release build (minified, ProGuard)
./gradlew test # unit tests
./gradlew lint # static analysisPrerequisites: JDK 17, Android SDK 36. See AGENTS.md for architecture details.
SQLCipher upgrades and database-recovery behavior: see docs/sqlcipher-upgrade.md.
Opt-in instrumented benchmark covering large databases (100k / 1m rows):
./gradlew connectedDebugAndroidTest \
-Pandroid.testInstrumentationRunnerArguments.ftsBenchmarkRows=1000000




