Concepts

Your data and keys

What stays on your machine with Duscode, what is sent to your AI provider, where keys are kept, and what Duscode Cloud stores for paid plans.

Duscode is bring your own key (BYOK). You use your own AI provider account and pay the provider directly, at their prices. Duscode runs on your machine and calls the provider straight from there.

What leaves your machine

Data Goes to When
The parts of your code a task needs, your messages, attachments, command output, screenshots from browser checks The AI provider you chose, with your key Each model call
Web pages Dus reads with web_fetch Requested from that website, with the user agent Duscode/<version> (+https://duscode.com) When Dus fetches a page
Web search queries Your provider's own search tool (Anthropic or OpenAI) When Dus searches
Your email and plan, if you sign in Duscode Cloud Sign-in and licence refresh

Your code, prompts and keys are never sent to Duscode, and nothing passes through Duscode's servers on the way to your provider. To limit which providers get anything at all (for example local models only), use privacy mode. The full list of every call: Data and privacy.

What stays on your machine

  • Keys in Duscode's encrypted vault (added in Settings) or ~/.duscode/.env (mode 600), readable only by you
  • Sessions (chats) in <project>/.duscode/sessions/, excluded from git
  • Coordination between sessions (claims, messages between sessions, reservations) in <project>/.duscode/coord/, never committed; secrets are masked in messages
  • The journal in <project>/.duscode/journal/
  • Memory in ~/.duscode/memory/ and <project>/.duscode/memory/
  • Usage history in ~/.duscode/usage.jsonl
  • The list of recent projects in ~/.duscode/projects.json

See Files and environment variables for the full list.

How keys are protected

  • A key is sent only to the provider it belongs to.
  • Commands Dus runs never see your keys. Duscode removes provider key variables from their environment and redacts key values from their output.
  • A project can't redirect your keys. Where a provider's requests go (baseURL, apiKeyEnv) can only be set in your own user config, ~/.duscode/config.json. A project's .duscode/config.json travels with its code, so Duscode ignores those settings there.
  • Memory refuses secrets. Dus can't save anything that looks like an API key, token, password or private key to memory.

The local server

Duscode's server listens on 127.0.0.1 only. It refuses requests from other websites (checked by Origin) and from any host name but localhost, which also blocks DNS-rebinding attacks. That matters because it can edit files and run commands.

Your provider's data policy

When you call a provider's API with your key, that provider's terms and data policy apply. Duscode calls OpenAI with store: false. Check each provider's current policy before you send it sensitive code. In particular, free tiers of some providers may use your content for training.

The security page summarises the main providers' policies as of our last review.

Duscode Cloud

Duscode Cloud handles accounts, billing and licences for paid plans. It never proxies model calls and never sees your prompts, code or keys. It stores your email, an optional name, your plan and your Stripe identifiers; you sign in with an email link, or an optional password stored only as a scrypt hash. Stripe handles card details. Your plan is checked with a signed licence that works offline.

Coming soon

Accounts, billing and sign-up at cloud.duscode.com. During early access, every feature is on and no account is needed. See Pricing and plans.

Something missing or wrong? Email support@duscode.com.