Privacy policy

Last updated: 17 October 2026

Effective date: 17 October 2026

Privacy contact: [email protected]

This policy explains how we process personal data in connection with the Ajica desktop application, Ajica server, ajica.app website, support, purchases and licensing.

Privacy at a glance

1. Who is responsible for your data

The controller for the processing described in this policy is Viacheslav Eniutin, an individual entrepreneur registered in the Republic of Armenia, State Registration Number 286.1596476, registered 16 July 2026, Taxpayer Identification Number 20344253, registered address 2 Nar-Dos St., Kentron, Yerevan 0018, Armenia. In this policy, “Ajica”, “we” and “us” refer to this business.

Contact us at [email protected] for privacy questions and requests.

2. Local content and connected services

Projects, tasks, comments, prompts, agent output, file paths and repositories are stored on your device or infrastructure you choose. Ajica does not upload this content to services operated by us. We receive content only if you choose to send it to us, for example with a support request.

When you connect coding agents, model providers or remote servers, the information made available to those services may leave your device. Their operators process it under their own arrangements and privacy notices. We do not receive traffic exchanged directly between your environment and those providers merely because you use Ajica.

When you ask Ajica to install an agent tool, it downloads the tool from its publisher or package registry, such as npm or GitHub. When you set up a remote board, the Mac app connects to your server over SSH with the access you provide and installs the Ajica server there. During installation, your server downloads operating-system packages from its distribution's repositories, Node.js from nodejs.org and agent tools from their registries. Those services see the requesting IP address. We do not receive your server's address, your SSH credentials or the content of your boards.

If someone else operates an Ajica server for you, that operator may have access to the content and connection information on that server. Contact the operator about its processing and retention practices.

Ajica does not require an Ajica product account. The Pro trial is tracked on your Mac and does not contact our services. Purchases, licence verification, update checks and optional analytics involve the data flows described below.

3. Optional app usage analytics

Choice and purpose

Usage analytics are disabled until you give consent. The Mac app asks once, on the “Help improve Ajica?” screen. You can change your choice at any time with “Send usage metrics” in the Ajica menu. We use these reports to understand adoption, feature use, engagement and reliability. Where the GDPR applies, the legal basis is consent under Article 6(1)(a).

Report contents and delivery

For each UTC day on which the application runs with analytics enabled, it may prepare a daily report after that day ends. Reports can be queued and retried, so several reports for earlier days may be transmitted during a later session. Reports older than seven days are dropped from the sending queue when the scheduler next runs.

A report can include:

The analytics ID is not derived from your hardware, email or licence. It is separate from the IDs used for licensing and server updates. Reports associated with this ID are pseudonymous, not necessarily anonymous.

The report payload excludes task content, prompts, agent responses, project and repository names, file paths, hostnames, email addresses, licence keys, payment details and exact activity times. Requests also carry technical delivery information: receiving services can see an IP address and the time a request arrives.

Reports are sent to PostHog Cloud in its EU region (Frankfurt, Germany). Our PostHog project is set to discard client IP addresses. Each report also asks PostHog not to derive a location from the IP address and not to create a person profile. The application uses no PostHog SDK, and it does not send session recordings, screenshots, heatmaps or automatically captured events.

The “What is sent…” window in the Ajica menu displays the most recent report exactly as it is transmitted, with its delivery status. It does not display HTTP headers, provider logs or server-side records.

Withdrawing consent and requesting deletion

Disabling analytics stops further analytics collection and sending by the application. It also clears the local analytics ID, report history and unsent queue. A request already transmitted may have reached the receiving service; switching analytics off cannot recall it. Reports already received are subject to section 8 and your applicable rights.

If you want us to locate previously received reports, copy the analytics install_id from “What is sent…”, if available, before disabling analytics, and include it in your request. You do not need to keep analytics enabled while we handle the request. Without an identifier that links the reports to you, we may be unable to locate them. We will explain any such limitation rather than ask you to provide unrelated identification documents.

Withdrawing consent does not affect the lawfulness of processing carried out before withdrawal.

4. Updates and installation measurement

Update checks are separate from optional app usage analytics and do not depend on your analytics choice.

Mac application. The application checks our release feed about once a day and when you choose “Check for Updates…”. Requests include the app version, operating system, architecture, edition and installation method, without any installation ID. A download link in the answer opens only when you click it. Turn off automatic checks with “Check for Updates Automatically” in the Ajica menu. The server embedded in the Mac app does not make its own update checks.

Standalone server. This covers the Linux server builds, remote-board servers and other installations of ajica-server. A standalone server checks for updates only when it has the address of our release feed, either built in or set with AJICA_UPDATE_URL. Current server builds have no built-in address, so they make no automatic checks unless you set one. When an address is set, the server checks about once a day. Each request includes a random server installation ID stored in the server's database, the server version, operating system, architecture, edition and installation method. It contains nothing about your work. The first start that will make the request writes a note to the server log. Set AJICA_UPDATE_CHECK=0 or DO_NOT_TRACK=1 in the server environment to disable the checks.

Our update service counts requests by day, version, operating system, architecture, edition and installation method. For standalone servers, it also stores the installation ID, first-seen day, last-seen day and latest reported version. Requests from the Mac app never create such a record. We use these records to deliver updates and to understand which server versions are in use and need support. Disabling automatic checks stops subsequent automatic submissions; it does not itself delete existing records. To have a record deleted, send us the server's installation ID: the install_id value in the telemetry_metadata table of the server's database.

The update service does not store IP addresses or User-Agent strings and keeps no request logs. Cloudflare, which hosts it, processes connection data as described in section 6.

Where the GDPR applies, the legal basis is our legitimate interests under Article 6(1)(f): delivering compatible updates and knowing which installed server versions we need to support, including for security fixes.

5. Purchases and licences

Purchases through Polar

Polar (Polar Software Inc.) is our merchant of record and the seller in the purchase transaction. It handles checkout, payment, applicable sales taxes, invoices and refunds through its service providers. It also issues and emails your licence key and runs the customer portal where you manage activations. Its processing is explained in Polar's Privacy Policy.

Polar makes purchase information available to us, including your email address, name and billing country as provided at checkout, order and product details, amount, tax, payment and refund status, and your licence key and its activations. We use it to provide purchased rights, handle purchase enquiries and maintain records of those rights. We do not receive full payment-card numbers, card security codes or bank-account credentials.

Our licensing service

Our licensing service at license.ajica.app activates and verifies licences, creates checkouts on Polar and receives Polar's payment and refund notifications. It stores licence and order references, the time and amount of each payment, refund and revocation status, update coverage, enabled Pro features and launch-campaign allocations. For each activated installation, it stores a random licensing installation ID, an activation ID, its state and request identifiers. It does not store your name, email address, country or payment details. It passes licence keys to Polar for validation and does not store them in readable form. Instead, it keeps keyed hashes of requests to detect replays.

Activation, verification refresh and deactivation send the licence key, the licensing installation ID and request identifiers. The licensing installation ID is a random value kept in the macOS Keychain or the server's own data. It is also passed to Polar as the label of the activation. While Pro is in use, an installation refreshes its verification about once a day. Licence requests do not include project content, tasks or AI prompts.

Abuse and checkout protection

The licensing service applies rate limits to all requests, and our purchase page checks Cloudflare Turnstile before a checkout is created. For this purpose, the licensing service stores a keyed hash (HMAC) of the requesting IP address in rate-limit counters and with each admitted checkout request; it does not store the IP address itself. The purchase page keeps checkout state in the sessionStorage of your browser tab. For a renewal, the application gives the licensing service its signed verification and licensing installation ID. The resulting link to the purchase page carries them only in encrypted form, valid for 15 minutes.

Legal bases and records

Where the GDPR applies, processing necessary to provide the purchased licence relies on Article 6(1)(b). Proportionate security, abuse prevention and checkout protection rely on our legitimate interests under Article 6(1)(f). Purchase and licensing services may be unavailable if information necessary to provide them is not supplied.

We retain purchase and licence records to meet the tax and accounting requirements of the Republic of Armenia. Where the GDPR applies, we rely on our legitimate interest in complying with the legal obligations that apply to our business (Article 6(1)(f)). Article 6(1)(c) applies only where EU or Member State law imposes the obligation.

Disabling analytics, uninstalling Ajica or deactivating an installation does not automatically erase purchase records or the records needed to establish your continuing licence rights.

6. Support, website and downloads

Support and diagnostics

When you contact us, including about refunds, we receive your email address, message and any files you provide. We use them to respond and investigate the issue. Where necessary to provide contracted support, the GDPR basis is Article 6(1)(b). For other enquiries and troubleshooting, it is our legitimate interest in responding and maintaining the service under Article 6(1)(f).

“Collect Diagnostics…” in the Ajica menu and ajica-server diagnostics create a diagnostics archive on your computer. We receive it only if you send it to us. The archive is built from an allowlist of fields. It holds versions, operating system and architecture, self-check results and database size and row counts per table. It also lists the names of settings, with values only for a fixed list of safe settings, and the feature, plan and agent-tool states. Its server log keeps request method, path without query, status, duration and request and actor IDs. Warning and error messages are kept with credentials and home-directory paths removed. The archive excludes tokens, keys, licence strings, task content, prompts, agent run logs, host and user names and the database itself. Its manifest.json lists what is inside. Please review the archive and any other attachments before sharing them: they can still contain personal or confidential information.

Website and downloads

The ajica.app website runs on Cloudflare Pages. Application files are delivered from Cloudflare R2. Our update and download endpoints and our licensing service run on Cloudflare Workers. Cloudflare processes IP addresses, requested resources, request times and technical browser or connection information to deliver and protect these services. Bot Fight Mode is enabled on our domain, and an IP-based rate limit protects the download endpoint. Our Workers keep no request logs. Except for the keyed hashes described in section 5, they do not store IP addresses or User-Agent strings. Our download counter records totals by UTC day, version, source (website or update check) and file type (macOS, Linux x86_64 or Linux ARM64, taken from the link you chose, not from your browser), without individual identifiers. Where the GDPR applies, the basis is our legitimate interest in operating reliable and secure services under Article 6(1)(f).

We do not use advertising trackers, analytics scripts or third-party fonts on Ajica pages. Ajica pages set no cookies of their own and write nothing to your browser's localStorage. Browser storage and cookies on Ajica pages are limited to:

This does not describe tracking or cookies on Polar's checkout or other third-party websites.

Cloudflare Turnstile protects our purchase page at license.ajica.app, which we operate. Turnstile processes IP addresses and technical browser signals. Cloudflare processes them on our behalf to detect bots, and as an independent controller to improve Turnstile, as described in its Turnstile Privacy Addendum. Polar's checkout pages are operated by Polar, and any bot protection on them is Polar's responsibility.

Analytics and diagnostic sharing are not required for Ajica's core local functionality.

7. Who receives data

Provider Data and purpose
PostHog Cloud, EU region Optional usage reports and associated delivery information for analytics.
Cloudflare Website hosting, file delivery, the update and download service, the licensing service and security protection, including Turnstile. It receives connection data and stores the records described in sections 4–6.
Polar Checkout, payment, taxes, invoices, refunds and the customer portal as merchant of record. Issues licence keys and validates them and their activations for our licensing service.
Google Workspace Email at [email protected]: support, refund and privacy correspondence and attachments.

PostHog, Cloudflare and Google Workspace process the data described here on our behalf, under their data processing terms for business customers. Cloudflare also processes Turnstile signals for its own purposes, as described in section 6. Polar acts as an independent controller for the processing it carries out as merchant of record, and processes licence keys and activations for our licensing service.

When a provider processes data on our behalf, referring to its privacy notice does not replace our responsibilities for that processing. For its independent processing, consult its own notice and contact it about applicable rights.

Coding agents, model providers, package registries and remote server operators that you choose are separate from the providers we engage for these services. Their processing is described in section 2.

8. How long we keep data

The rules below concern data under our control. Local project content is retained in your chosen environment, subject to your or your server operator's settings and backups.

We keep personal data only as long as needed for the purposes for which we collected it, and then delete it or make it anonymous. Where a fixed period cannot be given, the table states the criteria that determine it.

Category Retention rule
Optional analytics reports For a limited period under the retention settings of our analytics project, and no longer than needed for the purposes in section 3.
Local analytics ID and state Cleared when analytics are disabled. Unsent reports are dropped from the queue after a short period, as described in section 3. Local data can remain on disk while the app is not running and in device backups.
Standalone server installation records Deleted after a prolonged period without update checks from that installation, or earlier on request.
Order and licence registry records As long as needed to evidence the licence rights they support, including perpetual rights, and for any period that the tax and accounting law of the Republic of Armenia requires.
Checkout admission, activation, rate-limit and other operational licensing records As long as needed to maintain licence rights, prevent duplicate processing and abuse, and recover the service. Some of these records, such as checkout admission records with keyed IP hashes, have no fixed deletion date.
Support and refund correspondence As long as needed to handle the request and any follow-up, and for any longer period that tax or accounting law requires for refund records.
Connection and security data Our services keep no request logs of their own. Connection and security data processed by Cloudflare and our other providers is kept for the periods those providers set.
Backups Recovery history and operator exports of our databases are kept only as long as needed to restore the service and are replaced or expire over time. Deleted records can remain in them until then.

We may retain specific records longer where necessary for an applicable legal obligation or an actual dispute or legal claim. This exception applies to the relevant records, not automatically to an entire dataset.

We may retain statistics longer only if they are effectively anonymized so individuals are no longer identifiable, such as aggregate figures without installation IDs. Removing an installation ID alone does not necessarily achieve this.

Providers acting as independent controllers, including Polar, may have separate retention periods for their own processing. Contact us if you need help distinguishing those records from data held on our behalf.

9. International processing and transfers

Ajica is operated from Armenia. There is no EU or UK adequacy decision for Armenia. When you contact us, buy a licence or send us a request, the data reaches a business in Armenia, and we access the data held by our providers from Armenia. Our providers also process data in the countries in which they and their subprocessors operate. EU-region hosting alone does not ensure that all access and processing remain within the EEA.

Data flow Where it is processed
Optional analytics PostHog Cloud EU region (Frankfurt, Germany). PostHog's staff and subprocessors may access it from outside the EEA.
Update and download records Cloudflare D1 with EU jurisdiction. Requests pass through Cloudflare's global network.
Website, downloads and the licensing service Cloudflare's global network. The licensing registry is not restricted to a particular region.
Purchases and licence keys Polar Software Inc. in the United States and its payment and service providers.
Email and support attachments Google Workspace, which processes data in the countries where Google operates.

Where the GDPR or UK GDPR requires a safeguard for a transfer, we rely on the transfer mechanisms in the relevant provider's data processing terms. Polar's own transfers are described in its privacy policy. You can ask at [email protected] which mechanism applies to a particular flow and for a copy of it. A provider's EU storage location is not itself a transfer safeguard.

10. Your privacy rights

Depending on applicable law, you may have rights to access, correct or erase personal data, restrict its processing, and receive portable data where the legal conditions are met. You may withdraw consent without affecting earlier lawful processing.

You may object to processing based on legitimate interests on grounds relating to your particular situation. You may object to direct marketing at any time.

Send requests to [email protected]. Explain the data or service concerned and provide information that helps locate the record, such as your purchase email, order number, analytics ID or server installation ID. Do not send licence keys, payment credentials or identity documents unless we specifically explain why additional information is necessary. We may request proportionate information to verify identity and protect other people's data.

Where the GDPR applies, we respond without undue delay and normally within one month. Where legally permitted because of the complexity or number of requests, we may extend this by up to two additional months; we will explain the extension within the first month. If we cannot fulfil a request, we will explain the reason and available complaint options.

You may complain to the competent data protection authority. Under the GDPR, this includes an authority in the Member State of your habitual residence, place of work or the alleged infringement. The EDPB publishes a directory of EEA supervisory authorities.

We do not make decisions based solely on automated processing that produce legal or similarly significant effects on individuals. Some licence and checkout rules are applied automatically, without profiling. Examples are the installation limit, refund-based revocation of rights, verification expiry, rate limits and bot checks. These rules apply the terms of your licence or protect the service. If you believe one has been applied to you in error, contact us and a person will review it.

11. Children and security

Ajica is a professional development tool and is not intended for children under 16. We do not knowingly collect their personal data. Contact us if you believe a child has provided personal data to us so we can investigate and take appropriate action.

We use technical and organizational measures intended to protect personal data, including access controls, encrypted connections and limiting the data processed by relevant services. No system can guarantee absolute security. Protect the credentials, agents and remote infrastructure you connect to Ajica.

12. Changes to this policy

We may update this policy when our processing, services or legal obligations change. We will publish the revised policy with its effective date and provide additional notice where required. If Ajica starts sending a new field in an analytics report or making a new kind of outgoing request, we update this policy in the same release. If a change requires new consent, we will obtain it before carrying out the processing concerned.

For questions about this policy, contact [email protected].