Open-source project
digital-grease/fauxx avatar
digital-grease/fauxx

Fauxx: poisoning your own tracking profile from an Android device

Data poisoning for your everyday tracking

588 stars27 forksKotlinAGPL-3.0

At a glance

What is it?
Fauxx is an Android privacy tool that generates continuous synthetic activity across search engines and other channels, so that a data broker profiling your device has to separate your real behaviour from a steady stream of plausible decoys. It suits an Android user who has read the terms of an ad network and wants the profile to be less accurate, and it does nothing for anyone whose concern is data held on their own phone.
Who is it for?
Fauxx fits an Android user who wants the behavioural profile that ad networks build about their device to be less certain, since the decoy activity is category-weighted, grammatical and deliberately jittered rather than random noise, and the persona rotation avoids a change-point a broker could filter on.
Can I use it commercially?
Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly Kotlin, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

The target is the off-device profile, not the phone

Fauxx describes itself in one line: data poisoning for your everyday tracking. It is an open source Android privacy tool that poisons data broker and ad-tech profiles by generating continuous, plausible, off-demographic synthetic activity from your device.

The framing is worth pausing on, because it determines what the tool does and does not do. The problem being addressed is that every search, every link and every place you visit is collected by data brokers, ad networks and analytics platforms, which build a profile of who you are, what you want and what you are likely to do next, and that profile is then sold, traded and collated with other profiles.

So the target is the aggregated profile, not any single app's local storage. Nothing here encrypts your device, blocks trackers, or limits what a permission you granted can read. Fauxx does not sit between you and the network. It adds to the traffic, deliberately, so that the signal a broker receives about you contains less certainty about you.

That is a different philosophy from a blocker. A tracker blocker removes data points; a poisoner fills the space with decoys. The readme is blunt about the intent: not easily filterable noise, but deception that reads as real people. Whether a broker's models can be fooled in practice is not something the documentation claims to have measured, and it would be worth treating that as an open question rather than a promise.

The licence is AGPL-3.0, the language is Kotlin, the minimum API level is 26, and the project ships as an Android application. There is also a desktop companion, fauxx-desktop, described as an early-alpha cross-device privacy command center with a Rust headless core and an Iced GUI, which runs decoy generation on a desktop or homelab box and shares an encrypted, local-only LAN persona-sync protocol with the phone so paired devices keep one coherent persona.

Four layers deciding what gets generated

The core of the tool is what it calls a Demographic Distancing Engine, a layered system that decides what synthetic activity to produce. The layering is what makes the output coherent rather than random, and each layer answers a different question.

Layer 0 is the baseline and is always active. Every category starts from the same weight, and none is ever dropped entirely, so decoy activity always spans the whole range of topics. On its own this layer changes nothing; it exists so that no category is left empty.

Layer 1 is optional self-report. You optionally tell Fauxx coarse demographics such as age range, interests, profession and region, and it then weights away from those categories, generating decoy activity in the things you do not care about. The reasoning in the readme is the inversion that makes the tool useful: the interests it steers clear of are your real ones, so what remains associated with your account is the decoy set.

Layer 2 is the opt-in and advanced one, ad-profile import. Fauxx imports the ad-interest profile the platforms have already built about you, from an export you supply: Google Takeout under My Ad Center, or Facebook's Download Your Information in JSON. It reads exactly what the ad networks think they know about you and then suppresses those confirmed categories, concentrating decoys on off-profile interests.

The privacy posture of that import is spelled out, and it is the part worth checking before you hand over a file. You provide the exported file, Fauxx never logs in, never reads cookies and never touches the platforms, and it only reads the file rather than sending anything anywhere. On a missing or unrecognised file, nothing is imported and the other layers carry on unchanged. The tool also reminds you to re-import after about ninety days, since the profile drifts.

Layer 3 is synthetic persona rotation and it runs on its own whether or not Layers 1 and 2 are enabled. To avoid a predictable change-point, Fauxx rotates to a fresh coherent persona on a jittered schedule, a lifetime drawn uniformly over 30 to 90 days and re-rolled every cycle, so rotations never land on a fixed tick. The persona is a fake age, profession, interests and region, and it becomes the decoy identity shaping the next stretch of activity. It does not all flip at once: the persona's channels, covering device, location, queries, rhythm and category weights, phase in over days through staggered adoption, so a broker sees no single synchronised change to lock onto.

Multiplicative weights and why a category is never zero

All the layers produce a weight map across content categories, and those weights multiply together and normalise so the final distribution sums to 1.0. Categories are clamped with a minimum weight of 0.001.

That clamp is the detail an engineer should notice. A weight of zero would mean the category never appears, and absence is a signal in itself: a device that never searches for anything in a category is distinguishable from one that has not been observed yet. Holding every category at a small floor means the synthetic stream keeps the shape of a complete person rather than the shape of a topic-limited one.

The worked example in the readme sets out the arithmetic. If you report yourself as a 25-year-old software engineer, Layer 1 drops RETIREMENT and PARENTING to 0.15 times, away from your real life, and boosts GAMING and TECHNOLOGY to 2.5 times, toward other interests. When Layer 2 imports an ad profile that has tagged you with TECH, it suppresses TECH further to 0.05 times and boosts categories Google has never associated with you by 3.0 times. Those multiply, and Layer 3 then blends in the current persona's preferences.

Multiplication is the right choice here and it is also the reason the layers compose in a particular way. Because each layer is a multiplier, the strongest input dominates, and the clamp applies at the end. A Layer 2 suppression of 0.05 applied on top of a Layer 1 boost of 2.5 leaves 0.125, not 0.05, which is the behaviour you would want: no single signal gets to zero out a category on its own, so the stream stays plausible even if one input is wrong.

The result as described is a decoy profile that reads like a real person, just not you.

Seven channels, two of them off by default

Fauxx poisons through seven complementary channels. Location Spoofing and App Signals are off by default; the rest are on.

The channel that the readme describes in most detail is Search Poisoning. It runs synthetic search sessions across Google, Bing, DuckDuckGo, Yahoo and Yandex, and you can switch off any engine you would rather spare.

The mechanism for the queries is the interesting part. Most queries are composed on-device by a per-install grammar model, with a Markov fallback, over a bundled corpus, so they read as natural and topically coherent searches rather than random gibberish. The grammar is styled per install, which means no two devices emit the same query.

Two things follow from that design. Because the composition is local, the query text does not need to be shipped to a server to be generated, and the bundled corpus means the tool works without fetching a model. Because the grammar is styled per install, two phones running the same build do not produce identical traffic, which is exactly what a broker-side filter would look for.

The readme is explicit that each engine can be disabled individually, which is the right level of control. Some users may object to any traffic to a given engine regardless of what it contains, and a tool that only offered an all-or-nothing switch would force that choice to be made at the wrong granularity.

The remaining channels are named in the readme's module list, and location spoofing plus app signals being opt-in is a meaningful default. Synthesised location and synthetic in-app activity are the two channels most likely to produce visible side effects on a real device, and a user who wants only the search traffic can leave them off.

The repository layout supports the claim that this is a maintained, real project rather than a script: an .fdroid/ directory for the F-Droid metadata, fastlane/ for release automation, scripts/, app/, gradle/, a build.gradle.kts and settings.gradle.kts, gradlew wrappers, renovate.json for dependency updates, a CI workflow badge, and separate AIUSE.md, PRIVACY.md and SECURITY.md files.

Where to get it, and why there is no Play Store build

Fauxx ships through F-Droid, GitHub Releases, and sideloading via Obtainium. The readme is unusually firm about one point: Fauxx is not distributed on Google Play and will not return there.

The stated reasons are specific. Play is too restrictive for the full feature set, because it disallows the location-spoofing and ad-profile-pollution modules, and it is moving toward requiring the age-verification API, which the project says a no-account privacy tool has no business integrating. The former play build flavour has been removed from the source, so this is not a policy that might change with a new release; the code path is gone.

The practical consequences for an adopter are worth spelling out. A phone that has not enabled installation from unknown sources cannot install the APK from GitHub Releases without that setting being turned on, and Obtainium is the route that avoids the manual sideload for people who want update tracking. The F-Droid channel is the one with the least friction for anyone already comfortable with that client.

The project also directs questions to Discussions rather than Issues, with bug reports and feature requests staying in Issues, and it points at AIUSE.md for the AI usage disclosure.

The release cadence is visible in the version list: v0.9.0 on 2026-10-05, v0.9.1 on 2026-10-12 and v0.9.2 on 2026-10-13, with the last push to the repository on 2026-10-20. Three releases in eight days is a fast cadence for a pre-1.0 project, and it means the settings and behaviour may shift between builds.

Where Fauxx is the wrong tool

The first limitation is scope, and it is the one most likely to cause a wrong purchase of time. Fauxx does not protect anything on the device. It does not block trackers, encrypt storage, revoke permissions or stop an app from collecting what you already agreed to give it. If your concern is that a specific app on your phone holds a profile of you, this tool does nothing about that, and it is easy to mistake a busy-looking traffic stream for a privacy improvement.

The second is that the effectiveness claim is unverified in the documentation. The readme describes what the decoys look like and how they are weighted, which is a mechanism, but it does not report any measurement of how a broker's profile changes as a result. Whether coherent decoys survive a model trained on real behaviour is a research question, and the honest reading of the documentation is that Fauxx is designed to be hard to filter rather than proven to be.

The third is the cost of Layer 2. Importing a Google Takeout or Facebook export hands the tool a file that describes your real interests, and while the readme states that the file is only read and nothing is sent anywhere, the import path is the one part of the design that touches your actual profile. Leaving it off costs you nothing but the extra suppression, since Layer 3 runs regardless.

The fourth is the platform and the ecosystem. This is an Android application with a minimum API level of 26, sideloaded from outside the Play Store, and the desktop companion is explicitly early-alpha software where the readme says to expect rough edges while it stabilises. A team that wants a coordinated multi-device persona is depending on an alpha component with an encrypted local-only LAN protocol between the two halves, which is a meaningful amount of trust in a component that has not stabilised.

The fifth is the licence and the pre-1.0 churn. AGPL-3.0 is a strong copyleft, which matters if you intend to modify and redistribute the code or build it into something else. And with v0.9.x releases landing days apart, an adoption decision is being made on a version that is still moving, so pinning to a specific build and reading Changelog entries between versions is a sensible precaution.

Editorial conclusion

Fauxx fits an Android user who wants the behavioural profile that ad networks build about their device to be less certain, since the decoy activity is category-weighted, grammatical and deliberately jittered rather than random noise, and the persona rotation avoids a change-point a broker could filter on. It is the wrong choice if your concern is what an app on your own phone stores, since the tool targets the off-device profile, and it is the wrong choice if you need the Play Store, since the project has removed that build flavour and states it will not return. Before installing, check that you can accept an AGPL-3.0 licence, decide whether the optional ad-profile import is worth handing over a Takeout or Facebook export, and note that the last push was on 2026-10-20 with v0.9.2 released on 2026-10-13.

Frequently asked questions

What does Fauxx do on an Android device?

Fauxx poisons data broker and ad-tech profiles by generating continuous, plausible synthetic activity across seven channels, including synthetic search sessions on Google, Bing, DuckDuckGo, Yahoo and Yandex, so that the profile built about you is harder to separate from the decoys.

How do I install Fauxx?

Fauxx ships through F-Droid, GitHub Releases and sideloading via Obtainium. It is not distributed on Google Play and will not return, because Play disallows the location-spoofing and ad-profile-pollution modules, and the former play build flavour has been removed from the source.

What is the Demographic Distancing Engine in Fauxx?

It is the layered system that decides what synthetic activity to generate: an always-active baseline where every category starts at the same weight, optional self-report demographics that weight away from your real interests, an opt-in import of your ad-interest profile from a Google Takeout or Facebook export, and a synthetic persona rotation that phases a new persona in over days on a jittered 30 to 90 day schedule.

Does Fauxx send my data anywhere?

For the ad-profile import you provide an exported file from Google Takeout or Facebook's Download Your Information, and Fauxx only reads that file. The readme states that Fauxx never logs in, never reads cookies, never touches the platforms and sends nothing anywhere, and that queries are composed on-device over a bundled corpus.

Is Fauxx available on the Google Play Store?

No. The readme states that Fauxx is not distributed on Google Play and will not return, because Play is too restrictive for the location-spoofing and ad-profile-pollution modules and is moving toward requiring the age-verification API. The play build flavour has been removed from the source.

What licence is Fauxx released under?

AGPL-3.0, with the licence file at the root of the repository. The last push was on 2026-10-20 and the newest release is v0.9.2 from 2026-10-13, following v0.9.1 and v0.9.0 earlier that month.

Official sources

  1. digital-grease/fauxx on GitHub
  2. Issues
  3. License: AGPL-3.0
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/digital-grease-fauxx.svg)](https://hysenlabs.com/projects/digital-grease-fauxx)

Was this useful?