This policy describes data handling on Lucidity.sh and its services, including Composite, Stella, and ChromaLab. A third-party site or service linked from Lucidity has its own privacy practices.
1. Information We Collect
- Account data: email address, username, a bcrypt-hashed password, a hashed session token, account status, wallet balance, subscription state, daily Synth usage, spending limits, and referral information.
- API keys and settings: a SHA-256 hash of each key secret (the secret itself is shown once and never stored), a public key identifier, label, creation and expiration dates, model allow/block settings, attached Prompt Lab assets, memory layer, and cumulative request and token counts.
- Provider credentials: if you connect your own provider (BYOK), we store its URL, model settings, and your API key encrypted at rest with AES-256-GCM.
- Usage records: account and key identifiers, requested model, token counts, cost, funding source, latency, success status, the client the request came from (for example JanitorAI or SillyTavern, derived from the Referer header, never the full URL), and timestamp. API error records can include the request path, status, error code, a shortened error message, model, account email, key identifier, and timestamp.
- Prompts and generated content: inference input is processed to answer a request and is sent to OpenRouter or the provider you configured. Composite collects prompt and response content for training by default unless the account opts out (see Section 6). The separate API-key data-logging setting creates diagnostic logs tied to the key. Automated safety refusals do not create a staff-readable chat record.
- Memory: the
statetool keeps its values inside your own chat messages, so nothing about it is stored on our servers. Premium memory layers cache summaries of conversation segments in a separate cache keyed by a hash of the text, not by account. That cache holds at most 50,000 entries and evicts the oldest first. - Prompt Lab and community content: prompts, lorebooks, presets, plugins and profiles you save, their version history, images and avatars you upload, your creator bio and platform, comments, votes, follows, and reports you file. Asset view and use counts are stored against keyed hashes of the account and IP address, not the address itself.
- Optional features: side-by-side preference pairs (only if you turn them on), private artifact pages a model publishes for you, and survey answers you choose to give.
- Payments and subscriptions: PayPal handles payment credentials. Composite stores order or subscription identifiers, account email, plan, amounts, credited amount, status, and timestamps. PayPal may return a subscriber email for matching a subscription to an account.
- Discord: if you link Discord (optional, used for referrals and creator notifications), we store your Discord user ID, username, link time, and a short-lived OAuth state.
- Abuse and ban signals: at signup and on every login, Composite stores SHA-256 hashes of the apparent IP address and browser user-agent on the account. If an account is banned, these hashes, the normalized email, and any linked Discord ID are kept in a ban list so the ban survives account deletion.
- Feedback: category, subject, message, account email, source, and submission time.
- Browser storage and network data: the Composite website stores the authentication token and basic account information in local storage, and temporarily stores checkout choices in session storage. Signup funnels use a random anonymous visitor ID and the host of the referring page. Hosting, proxy, and rate-limit infrastructure may process IP addresses and request metadata in normal server logs.
2. How We Use Information
We use this information to authenticate accounts, provide model inference, meter usage, deduct credits or subscription allowance, process payments, operate referrals and the community catalogue, provide saved prompts, respond to feedback, diagnose errors, measure service performance, prevent fraud and abuse, moderate content, enforce our Terms, and meet legal obligations.
Authorized administrators can view account records, usage summaries, payment and subscription status, referral signals, API errors, and public community content to operate and protect the service. They cannot view chats rejected by automated safety checks. Aggregated metrics such as paid-user counts, balances, model usage, request volume, and error rates are used for business and reliability analysis.
We do not sell personal information. We do not use account data to build third-party advertising profiles.
3. When Information Is Shared
- AI providers: prompts, attachments represented in requests, and necessary request settings are sent to OpenRouter or the custom model provider selected for the requested model. Provider handling may vary by model and endpoint.
- PayPal: payment, order, and subscription information is exchanged to create, verify, capture, and manage purchases.
- Discord: Discord OAuth is used only when you choose to link an account. Feedback alerts may also be sent to a configured private Discord webhook; notification text may include a feedback excerpt.
- Google Fonts: some Composite pages request fonts and icons from Google, which exposes ordinary network request data such as IP address and browser headers to Google.
- Legal and safety disclosures: information may be disclosed when reasonably necessary to comply with law, protect users or the service, investigate abuse, or enforce agreements.
4. Stella Platform
Stella is an AI character chat platform. This section describes how Stella handles your data in addition to the general practices described above.
4.1 Stella-Specific Data
- Characters: when you create or import a character, we store its name, description, personality, system prompt, avatar image, tags, greeting, example conversations, visibility setting (public or private), NSFW flag, and remix permissions. Public characters are browsable by other users.
- Chat conversations: we store message content, conversation metadata (character, name, timestamps), and any images you upload during chats (processed to WebP).
- Personalization: personas you create, durable memories about characters or yourself, lorebooks, and custom prompt or preset configurations are stored for your use across conversations.
- AI provider configuration: if you connect a custom AI provider, we store the provider URL, model name, and your API key (encrypted at rest with AES-256-GCM).
- Usage preferences: behavior settings (mature-theme handling, narration style), generation parameters (temperature, top-p, token limits, reasoning effort), accent color, and background image.
4.2 How Stella Uses Your Data
Chat history, character definitions, personas, memories, lorebooks, and prompts are sent to your configured AI provider (StellaAI or your custom provider) to generate responses. We also process your data to operate the service, provide character discovery, and compile aggregated, anonymized usage statistics. We do not sell your data to advertisers, data brokers, or any other third parties beyond what is necessary to operate the service.
4.3 Stella Imports
When you import a character from JanitorAI or JannyAI, Stella fetches the character's public page and avatar from those third-party services.
4.4 Stella Data Retention
- Account and profile: until account deletion.
- Characters: until deleted by the creator; deletion also removes associated conversations.
- Chat messages: until the conversation or account is deleted.
- Soft-deleted items (lorebooks, prompts): recoverable for 7 days, then permanently removed.
- Session records: retained for aggregate analytics; deleted on account deletion.
- Idempotency keys: automatically purged after 24 hours.
- Account tokens (email verify, password reset): Verify email tokens expire after 24 hours; password reset tokens expire after 1 hour.
4.5 Your Stella Rights
You can access, export, correct, and delete your characters, conversations, personas, memories, lorebooks, and prompts through the application. Changing your password invalidates all existing login sessions. Deleting your account permanently removes all your Stella data.
4.6 Stella Security
In addition to the measures described in Section 8, Stella validates provider URLs through a safe resolver that blocks private and reserved IP addresses to prevent SSRF attacks. Uploaded images are validated for format (JPEG, PNG, WebP, AVIF), dimensions, and file size before being re-encoded to WebP. Authentication and import endpoints are rate-limited, and character import/export endpoints are restricted to specific allowed origins.
5. ChromaLab
ChromaLab is a separate, self-hosted OpenAI-compatible gateway aimed at coding-agent traffic (Claude Code-style harnesses, Cursor, aider, and similar). It runs on its own server and its own database, distinct from Composite and Stella, and this section describes how it handles data in addition to the general practices described above.
5.1 ChromaLab-Specific Data
- Account data: email address, a bcrypt-hashed password, a signed session token, account balance, plan level, and daily request/token counters used to enforce rate limits.
- API keys: a label, description, creation and expiration dates, per-key model allow/block settings, and cumulative request and token counts. Unlike Composite, ChromaLab stores the API key secret itself in plain text rather than as a hash, because the key is looked up directly on each request; treat any ChromaLab API key as a bearer credential and do not share it.
- Conversation content: by default, ChromaLab does not retain the content of your requests or responses beyond what is needed to serve them. If a key owner opts a key into the data-logging setting (in exchange for a small usage discount), full request and response content is written to a per-model log file, tied to the requesting model rather than to an account or key identifier.
- Web search: if a key or request enables tool-mode search, your query terms are sent to DuckDuckGo's lite search endpoint and the fetched result pages are relayed back into the model's context. No separate search provider account or API key is involved.
- Payments: handled through PayPal the same way as described in Section 3, with order, subscription, and transaction records stored to credit the correct account and support refund or dispute handling.
- Feedback: the category, subject, and message you submit through the feedback form are relayed to a private Discord channel to be reviewed.
5.2 ChromaLab Moderation
ChromaLab does not run automated content moderation on requests or responses. This differs from Composite. If you believe ChromaLab is being used to violate our Terms of Service, contact us using the details in Section 12.
5.3 ChromaLab Retention
The ChromaLab database is backed up on a recurring schedule; backups are retained without a fixed automatic expiration and may contain historical account and API-key records even after you change or delete them going forward. Data-logging conversation files, when created, are retained until manually removed. Contact us if you want us to locate and delete residual ChromaLab records associated with your account, subject to the same limits described in Section 7.
6. Conversation Logging and Your Choice
Composite collects request messages and generated responses by default to improve and train models. Collection files are separated by model and include the model, provider, token usage, and timestamp, but omit account email and API-key identifiers. You can opt out at any time under Account Settings; doing so stops future training collection. Because collected records carry no account or key identifier, they cannot be traced back to you afterwards, which also means they cannot be found and deleted per account.
The separate API-key data-logging setting creates diagnostic logs that contain request messages, the generated response, model, API key identifier, provider, token usage, and timestamp. These are deleted after 30 days.
Moderation is separate from both choices. A conversation detected as potentially violating policy can be stored with the account identifier, API key identifier, reason, model codename, timestamp, and messages even when ordinary data logging is off.
7. Retention and Account Deletion
These periods are enforced by an automatic job that runs every hour. The Composite account settings link here.
- Usage records: after 180 days the account email and key identifier are replaced with an ID that cannot be linked back to the account. Token counts, model and cost stay for aggregate statistics. Older requests therefore drop out of your own usage history.
- API error records: deleted after 30 days.
- Diagnostic data-logging files: deleted after 30 days.
- Feedback: deleted after 365 days.
- Side-by-side preference pairs: deleted after 90 days, and immediately when you turn the setting off.
- Artifact pages: deleted 60 minutes after they are created.
- Database backups: deleted after 7 days. Data you delete can survive in a backup until then.
- Training collection: kept for model development. It holds no account or key identifier (see Section 6).
- Payment records and transaction logs: kept as long as accounting, tax, and dispute rules require.
- Ban list: kept while the ban stands.
Deleting your account removes the account row and everything that depends on it: API keys, provider credentials, Prompt Lab assets, votes, follows, comments you wrote, notifications, uploaded images, preference pairs, artifacts and survey answers. Usage and error records are de-identified at the same time instead of waiting for the periods above, community reports you filed keep only an unlinkable ID, and comments on your creator page are removed. Records that are not tied to the account row, such as feedback, follow their normal schedule. Short-lived Discord OAuth states expire after about 10 minutes.
Contact us if you want residual records associated with your account found and deleted sooner, subject to records we must retain for security, payment, dispute, or legal reasons.
8. Security
Passwords are hashed with bcrypt, session tokens and Composite API keys are stored only as SHA-256 hashes, BYOK provider keys are encrypted with AES-256-GCM, administrative routes require an administrator account, and IP and user-agent signals are stored as hashes. Data is also backed up for recovery. Authentication tokens and API keys are credentials; anyone who obtains one may be able to access the associated account or API allowance. No transmission or storage system is completely secure.
9. Your Choices and Requests
- Change your password, revoke API keys, opt out of future training collection, turn side-by-side preference data on or off, change an API key's separate data-logging setting, disconnect optional features, or delete your account through available Composite controls.
- Request access to, correction of, export of, or deletion of personal information by contacting us below.
- Depending on where you live, applicable law may provide additional rights to object, restrict processing, or appeal a response.
We may need to verify that you control the relevant account before fulfilling a request.
10. Children's Privacy
Our services are not directed to individuals under the age of 13. We do not knowingly collect personal information from children. If we become aware that a child has provided us with personal information, we will take steps to delete such information promptly.
11. Changes to This Privacy Policy
We may update this Privacy Policy from time to time to reflect changes in our practices, legal requirements, or service offerings. Material changes will be posted on this page, and we will indicate the "Last updated" date at the top. Your continued use of any Lucidity.sh service after changes take effect constitutes your acceptance of the updated policy.
12. Contact
If you have any questions, concerns, or requests regarding this Privacy Policy or our data practices, you can reach us through any of the following:
- Email: [email protected]
- Discord: discord.gg/NJWVpKWA9V
- Feedback form: composite.lucidity.sh/feedback.html