# SELECT > An SQL client shaped like an IDE. Schema-aware completion, real-time linting, and a workspace that is a folder in your repo. PostgreSQL, MySQL, SQLite. - Platforms: macOS, Windows, Linux - Status: public beta - Solo edition: 0 USD. Free forever, not a trial. The full client, git collaboration through your own remote. - Teams edition: 12 USD. Per seat per month, beta price, normally 17. Proxified connections, centralised roles, audit log, MCP and API keys. - Features: Schema-aware completion; Lint rules committed with your queries; Variables resolved from .env; Git-native file workspaces; Column-level access control; Audit logs for proxified connections; MCP server and API keys; Hosted SQLite databases you and your agents can create, fork and download ## Product - [SELECT: the SQL client that lives in your repo](/): An SQL client shaped like an IDE. Schema-aware completion, real-time linting, and a workspace that is a folder in your repo. PostgreSQL, MySQL, SQLite. - [Download SELECT](/download/): Download SELECT for macOS, Windows or Linux. Free for solo use, open source, one native binary. ## Docs - [Getting Started](/docs/getting-started.md): SELECT is an SQL client shaped like an IDE. Schema-aware completion, real-time linting, git-based team workspaces with granular DB permissions, local and... - [Workspace Folder](/docs/workspace/workspace-folder.md): A workspace is a folder on your machine. Any folder: a repository you cloned, a - [Git](/docs/workspace/git.md): A SELECT workspace is a folder on disk, and it is a folder you chose: see - [Users](/docs/workspace/users.md): Each workspace has its own set of users. Users are identified by their account (name, email, avatar) and can be members of multiple workspaces. - [Roles](/docs/workspace/roles.md): Roles group permissions together and are assigned to users, either directly or through groups. Each workspace defines its own roles. - [Permissions](/docs/workspace/permissions.md): Permissions control what users can do in a workspace. They are assigned to roles at varying levels of granularity. - [Groups](/docs/workspace/groups.md): Groups collect users together and grant them roles. Add someone to a group once, and they inherit every role attached to it, instead of assigning roles to... - [API Keys](/docs/workspace/api-keys.md): API keys let automated clients authenticate to a workspace without a user signing in. A key is a workspace principal that carries roles, just like a user... - [Audit Logs](/docs/workspace/audit-logs.md): The audit log is an append-only record of activity in a workspace: who did what, - [MCP Server](/docs/workspace/mcp-server.md): The MCP server lets external LLM clients (Claude Code in VS Code, Cursor, Claude Desktop, …) chat with your proxified databases. The client connects with... - [AI Chat](/docs/workspace/ai-chat.md): The AI chat is an in-app agent that can explore your database schemas, run queries, edit SQL files, and explain query plans. - [Connecting](/docs/databases/connecting.md): SELECT supports PostgreSQL, MySQL, and SQLite. - [SSH Tunnels](/docs/databases/ssh-tunnels.md): When your database is behind a bastion or jump host, SELECT can open an SSH tunnel to reach it. - [Proxified Connections](/docs/databases/proxified-connections.md): By default, database credentials live in datasource.config.json on your machine. Proxified connections store them encrypted on the server instead. - [Schema Introspection](/docs/databases/schema-introspection.md): When you connect to a database, SELECT fetches its full schema. This metadata is the foundation for several features: - [SQL Files](/docs/sql/sql-files.md): SQL files are the main workspace artifact in SELECT. They are persisted on disk as regular .sql files and can be version-controlled with git. - [Variables](/docs/sql/variables.md): SELECT supports $VARIABLE references in SQL files. Variables are resolved from .env files, other SQL files, or prompted from the user at runtime. - [Query Execution](/docs/sql/query-execution.md): Run a query with Cmd+Enter. SELECT executes the SQL against one or more associated databases and displays results in a table below the editor. - [Query Planner](/docs/sql/query-planner.md): SELECT can show the execution plan for a query without running it. This reveals how the database intends to execute the SQL: which indexes it will use, how... - [Query Analyze](/docs/sql/query-analyze.md): Query analyze executes the query and measures actual performance. Unlike the planner which only shows estimates, analyze reports real execution times, row... - [Graph View](/docs/sql/graph-view.md): SELECT can visualize query results as charts. After running a query, switch to the graph view to plot your data. - [Inline Editing](/docs/sql/inline-editing.md): Click any cell in the results table to edit its value directly. SELECT builds UPDATE statements from your changes so you can review them before they hit the... - [Export](/docs/sql/export.md): SELECT can export query results to a file. The query runs in full (ignoring pagination), the output is formatted, and a save dialog lets you pick the... - [Lint Rules](/docs/sql/lint-rules.md): SELECT lints your SQL as you type. Not with a list of regexes. The statement is - [.lint File](/docs/sql/lint-rules/lint-file.md): The .lint file is where a workspace tunes its linting: it adds custom rules of - [.env](/docs/workspace-files/env.md): Each folder in your workspace can contain a .env file. SELECT loads these files and makes their variables available for variable substitution in database... - [.gitignore](/docs/workspace-files/gitignore.md): The .gitignore file tells git which files to exclude from version control. Place it at the root of your workspace or in any subfolder. - [.theme](/docs/personal-files/theme.md): The .theme file controls the visual appearance of SELECT and uses standard CSS - [.config](/docs/personal-files/config.md): .config is a personal file: it holds your keybindings and editor snippets. ## Optional - [Full documentation, one file](/llms-full.txt): every page above, concatenated. - [API reference](/api/): the HTTP API, rendered from /openapi.json.