Privacy Policy & Terms · Last updated 1 September 2026
FreeCode is a private, on-device AI assistant that can chat, use tools, and — with your
permission — operate your phone for you. It runs against an AI model you
host or choose. This page explains how it handles information and the terms of use.
🔒 Your data stays on your device
FreeCode has no servers of its own. We don’t collect, store, sell,
or transmit your conversations, files, or personal data.
You bring your own AI model — point it at LM Studio, vLLM, or any
compatible endpoint running on your own hardware or a server you control. Your prompts
go only to the endpoint you configure, nowhere else.
Chats, settings, and voices are saved locally on your phone.
Uninstalling the app removes them.
It’s fully free — no account, no sign-in, no subscription, and no
analytics or tracking SDKs of our own. Free release builds show ads served by Google
AdMob, which shares your advertising ID with Google to serve them (see
Advertising); nothing else leaves your device to anyone but the
AI endpoint you choose.
Privacy Policy
No data collection. The developers of FreeCode operate no backend,
analytics, advertising identifiers of our own, crash-reporting, or telemetry. We never
receive your messages, files, voice, contacts, location, or usage.
Your AI endpoint. FreeCode sends your prompts and any content you
attach only to the model endpoint you configure in Settings (for example an
LM Studio or vLLM server on your own hardware). That endpoint is operated by you or a
party you choose; its handling of the data is governed by that party, not by us. If you
point FreeCode at a third-party hosted endpoint, review that provider’s own privacy terms.
On-device storage. Conversations, provider settings, downloaded voices,
and your acceptance of these terms are stored locally on your device using the operating
system’s private app storage. They are not backed up to us. Uninstalling the app deletes them.
Permissions. The accessibility, microphone, overlay, media, and
notification permissions are used solely to provide the features described in the app, in
real time, at your request. Data obtained through them (screen contents, audio, attachments)
is processed on-device and/or sent only to your configured endpoint — never to the developers.
Voice. Speech recognition uses your device’s recognizer (on-device where
available; it may fall back to your device’s system recognizer, which is governed by your
device maker’s / Google’s terms). Text-to-speech runs on-device.
Children. FreeCode is a general-purpose developer tool and is not
directed at children.
Advertising. Free release versions may display ads served by
Google AdMob. When ads are enabled, the AdMob SDK collects and shares your
device’s advertising ID and coarse ad-request data (e.g. approximate,
IP-derived region and device type) with Google to serve and measure ads, under
Google’s advertising policies.
This is the only case where any data leaves your device to a party other than the
AI endpoint you configure — and even then it goes to Google, not to us: we still
operate no servers and collect nothing. Ads are limited to a family-safe content
rating and exclude sensitive categories, never use your conversations, health, contacts, or
messages for targeting, are disclosed in-app, require your acceptance of these terms, and are
never present in debug builds.
Changes. A materially changed policy will re-prompt you to accept it on
next launch.
Every permission — what it is and why
Below is the complete list of every Android permission and
special capability FreeCode declares, the exact system name, what it does, and why the app
needs it. FreeCode requests each one only for the matching feature, and most are optional —
permissions you never use can be left ungranted and the app still runs. Nothing obtained
through any permission is sent to the developers: on-device processing stays on the device,
and anything the AI model needs to see goes only to the endpoint you
configure. None of this data is ever used for advertising.
Accessibility & automation
Accessibility service(BIND_ACCESSIBILITY_SERVICE)
— lets FreeCode read on-screen content and tap, type, and scroll on your behalf so it can
operate other apps for you. This is the core phone-automation feature. You enable it manually
once in Android Settings → Accessibility; it acts only while you ask it to do something, and
what it reads is used in the moment and never uploaded by us.
Display over other apps(SYSTEM_ALERT_WINDOW)
— powers the floating chat bubble so FreeCode stays reachable and keeps listening while it
works inside other apps.
See installed apps(QUERY_ALL_PACKAGES) — lets
FreeCode enumerate and launch the specific app you name so it can automate it (“open Maps and
search…”). The list is used on-device to route your request only; it is not collected,
profiled, or sent anywhere.
Screen & media
Screen capture(MediaProjection via
FOREGROUND_SERVICE_MEDIA_PROJECTION) — when you start screen sharing, FreeCode captures
still frames of your screen so the model can see what you see and help. You trigger it
explicitly, Android shows the cast indicator the whole time, and frames are processed
on-device and/or sent only to your configured endpoint.
Photos & images(READ_MEDIA_IMAGES; READ_EXTERNAL_STORAGE
on Android 12 and below) — only the images you explicitly attach are read, so the model
can see them. Nothing is scanned in the background. Core use of photo/video access:
letting you attach a picture to a chat so the AI can look at it and answer questions about it.
Voice
Microphone(RECORD_AUDIO) — for voice chat and
call mode. Speech is transcribed on-device (or by the device recognizer you choose) and turned
into a normal text message. No audio is recorded to a file or uploaded by us.
Personal data — all optional, granted only when you ask for the matching action
Contacts(READ_CONTACTS) — read only when you ask
FreeCode to look up or use a contact (e.g. “call Sam”). Used for that task in the moment,
passed only to your configured endpoint; never read in the background.
Calendar(READ_CALENDAR, WRITE_CALENDAR) — read or
add events only when you ask (e.g. “what’s on Friday”, “add a meeting at 3”).
Phone / calls(CALL_PHONE, READ_PHONE_STATE) —
place a call you dictate and detect call state so it can pause voice mode. FreeCode does not
read your call log.
SMS(READ_SMS) — read a message only when you point
FreeCode at one (for example to grab a one-time verification code you ask it to fetch). Messages
are never read in bulk or in the background, never uploaded to us, and never used for ads.
Location(ACCESS_FINE_LOCATION) — used only when a
request needs it (“what’s near me”). Passed to your configured endpoint for that request only;
not tracked, logged, or shared with us.
Health & fitness(health.READ_STEPS, READ_DISTANCE,
READ_ACTIVE_CALORIES_BURNED, READ_HEART_RATE, READ_SLEEP via Health Connect) — read only
when you ask about your steps, distance, calories, heart rate, or sleep, through Android Health
Connect’s own consent flow. Health data is never uploaded to us and is never used for ads.
Background operation & scheduling
Foreground services(FOREGROUND_SERVICE, plus
FOREGROUND_SERVICE_SPECIAL_USE and FOREGROUND_SERVICE_MEDIA_PROJECTION) — keep a task
running with a visible notification while it needs to. FreeCode uses special-use foreground
services for three things: the floating chat overlay (staying on top and
listening while it drives other apps), scheduled agent automation (running a
task you scheduled), and the local desktop gateway (a paired computer you own
driving the phone). A separate media-projection foreground service holds the screen-capture
session while you are sharing your screen.
Notifications(POST_NOTIFICATIONS) — shows the
foreground-service notice while voice, the overlay, screen capture, a scheduled task, or the
desktop link is active, as Android requires.
Notification access(BIND_NOTIFICATION_LISTENER_SERVICE)
— optional; enabled manually in Settings. Lets the “read notifications” tool report your current
notifications when you ask. Nothing is uploaded by us.
Exact alarms & run at startup(SCHEDULE_EXACT_ALARM,
RECEIVE_BOOT_COMPLETED, WAKE_LOCK) — used only if you schedule a task (a reminder or a
recurring action). Exact alarms fire it on time, start-at-boot re-arms your schedules after a
restart, and a wake lock keeps the phone awake just long enough to run it.
Vibrate(VIBRATE) — haptic feedback for alerts and
voice cues.
Network
Internet & network state(INTERNET, ACCESS_NETWORK_STATE)
— reach the AI model endpoint you configure and check connectivity. No traffic goes to servers
of ours (we have none) except, in free release builds, Google AdMob ad requests (see
Advertising).
Local Wi-Fi / desktop link(ACCESS_WIFI_STATE,
CHANGE_WIFI_STATE) — optional. If you turn on the desktop gateway, FreeCode listens on
your local Wi-Fi so a paired computer you own can drive the phone. It is off by default, trust
is pinned per machine, and data stays on your local network — it never goes to us.
Advertising
Release builds may show ads to support development. Ads appear as a small banner
and, after a longer AI reply, as a single labelled “Sponsored” card inside the chat that is
kept relevant to what you just asked. Ads are served by Google AdMob. To do
this, the AdMob SDK shares your device’s advertising ID and coarse ad-request data with
Google to select and measure ads, governed by Google’s advertising policies — this is
the one third party, besides your own AI endpoint, that any data is shared with, and the
developer still receives nothing. Ad content is restricted to a family-safe rating and blocks
sensitive categories (such as alcohol, gambling, and dating). Ads never use your health data,
messages, contacts, location, or the contents of your conversations for targeting; the only
signal used to keep the in-chat card relevant is a few keywords derived on-device from the
request you just made. Advertising is disclosed in-app, requires your acceptance of these
terms, and is never present in debug builds. You can limit ad personalisation system-wide in
Android Settings → Privacy → Ads, or reset your advertising ID there.
Terms & Conditions
Acceptance. By using FreeCode you agree to these terms. If you don’t
agree, don’t use the app.
What FreeCode is. FreeCode is a tool that connects to an AI model
endpoint you provide and can, with the permissions you grant, automate actions on
your device. You are responsible for the endpoint you connect to and for the actions you
direct the app to perform.
Your responsibility. Automation and accessibility control are powerful.
You are responsible for reviewing what FreeCode does on your behalf, for the content you
send to your model, and for complying with the terms of any app, service, or model provider
you use it with. Don’t use FreeCode for anything unlawful.
No warranty. FreeCode is provided “as is”, without warranties of any kind,
express or implied, including fitness for a particular purpose. AI output can be wrong;
verify anything important.
Limitation of liability. To the maximum extent permitted by law, the
developers are not liable for any damages arising from your use of the app, including any
actions it performs on your device or data sent to your configured endpoint.
No fees. The app is free to use. Optional advertising may support
development in release builds.
Termination. You may stop using and uninstall FreeCode at any time,
which removes its local data.
Governing terms. Where these terms are silent, the applicable app-store
terms and your local law apply.