Security & Permissions

Data Storage and Permissions

Local configuration storage, file permissions, and user guidance

Data Storage and Permissions

Local CLI and Desktop state use plaintext SQLite/JSON files:

  1. Workspace indexes, platform settings, and local tokens: ~/.downcity/downcity.db
  2. Agent definitions and identity instructions: ~/.downcity/agents/<agent_id>/agent.json and SOUL.md
  3. Plugin definitions and profiles: ~/.downcity/plugins/<plugin_id>/plugin.json and config.toml

File Permissions and Boundaries

Database files, Agent configuration directories, and Plugin configuration files are restricted to the current user by default (0600 for files and 0700 for directories). This is not encrypted storage: a process that can read the local user's files can also read these configurations.

city env is an explicit file-based configuration feature. Global Env is stored in plaintext at ~/.downcity/.env, and Workspace Env is stored in plaintext in the project .env. The Global file is restricted to the current user, and project .env is added to .gitignore by default. Use the launch environment or a secret manager when stronger secret protection is required.

Best practices

  1. Never commit ~/.downcity or local configuration files.
  2. Never commit Workspace .env, and keep ~/.downcity/.env accessible only to your user account.
  3. Use process environment variables or an operating-system secret manager when stronger protection is required.