{"version":1,"site":"https://harlequin.sh","routes":{"page":"https://harlequin.sh/api/docs/v1/{slug}.json","markdown":"https://harlequin.sh/docs/{slug}.md"},"topics":[{"topic":"Getting Started","slug":"getting-started","url":"https://harlequin.sh/docs/getting-started","parent":null,"repo":null},{"topic":"The hsql CLI","slug":"hsql","url":"https://harlequin.sh/docs/hsql","parent":null,"repo":null},{"topic":"Database Adapters","slug":"adapters","url":"https://harlequin.sh/docs/adapters","parent":null,"repo":null},{"topic":"Adapter: DuckDB","slug":"duckdb","url":"https://harlequin.sh/docs/duckdb","parent":"Database Adapters","repo":null},{"topic":"Adapter: SQLite","slug":"sqlite","url":"https://harlequin.sh/docs/sqlite","parent":"Database Adapters","repo":null},{"topic":"Adapter: Postgres","slug":"postgres","url":"https://harlequin.sh/docs/postgres","parent":"Database Adapters","repo":"tconbeer/harlequin-postgres"},{"topic":"Adapter: Redshift","slug":"redshift","url":"https://harlequin.sh/docs/redshift","parent":"Database Adapters","repo":"tconbeer/harlequin-redshift"},{"topic":"Adapter: Snowflake","slug":"snowflake","url":"https://harlequin.sh/docs/snowflake","parent":"Database Adapters","repo":"tconbeer/harlequin-snowflake"},{"topic":"Adapter: BigQuery","slug":"bigquery","url":"https://harlequin.sh/docs/bigquery","parent":"Database Adapters","repo":"joshtemple/harlequin-bigquery"},{"topic":"Adapter: Databricks","slug":"databricks","url":"https://harlequin.sh/docs/databricks","parent":"Database Adapters","repo":"alexmalins/harlequin-databricks"},{"topic":"Configuring Harlequin","slug":"config-file","url":"https://harlequin.sh/docs/config-file","parent":null,"repo":null},{"topic":"Viewing Files","slug":"files","url":"https://harlequin.sh/docs/files","parent":null,"repo":null},{"topic":"Customizing Key Bindings","slug":"keymaps","url":"https://harlequin.sh/docs/keymaps","parent":null,"repo":null},{"topic":"Troubleshooting","slug":"troubleshooting","url":"https://harlequin.sh/docs/troubleshooting","parent":null,"repo":null},{"topic":"Contributing to Harlequin","slug":"contributing","url":"https://harlequin.sh/docs/contributing","parent":null,"repo":null}],"pages":[{"title":"Installing Harlequin","slug":"getting-started","topic":"Getting Started","url":"https://harlequin.sh/docs/getting-started","description":"Harlequin is a Python program, and there are many ways to install and run it.","repo":null},{"title":"Running Harlequin","slug":"getting-started/running","topic":"Getting Started","url":"https://harlequin.sh/docs/getting-started/running","description":"Once Harlequin is installed, you run it from the command line.","repo":null},{"title":"Using Harlequin","slug":"getting-started/usage","topic":"Getting Started","url":"https://harlequin.sh/docs/getting-started/usage","description":"A tour of Harlequin's Query Editor, Data Catalog and Results Viewer, and how to run your first query.","repo":null},{"title":"Using hsql","slug":"getting-started/hsql","topic":"Getting Started","url":"https://harlequin.sh/docs/getting-started/hsql","description":"hsql is your agent's favorite SQL client.","repo":null},{"title":"Getting Help","slug":"getting-started/help","topic":"Getting Started","url":"https://harlequin.sh/docs/getting-started/help","description":"Where to find help: harlequin --help, the in-app help screen, GitHub Discussions and Issues.","repo":null},{"title":"The hsql CLI","slug":"hsql","topic":"The hsql CLI","url":"https://harlequin.sh/docs/hsql","description":"Reference for hsql, Harlequin's headless SQL client — the catalog, formats, exit codes, config files, safety options, the CLI reference and the agent skill.","repo":null},{"title":"Exit Codes and Streams","slug":"hsql/exit-codes","topic":"The hsql CLI","url":"https://harlequin.sh/docs/hsql/exit-codes","description":"hsql's six exit codes, what it writes to stdout and stderr, the --stats summary, and what --on-error does after a statement fails.","repo":null},{"title":"Exploring the Catalog","slug":"hsql/catalog","topic":"The hsql CLI","url":"https://harlequin.sh/docs/hsql/catalog","description":"How --catalog, --path and --catalog-search list a database's databases, schemas, relations and columns without running any SQL.","repo":null},{"title":"Formats and Layouts","slug":"hsql/formats","topic":"The hsql CLI","url":"https://harlequin.sh/docs/hsql/formats","description":"Every hsql output format, the shorthand flags, the layout switches that shape a text layout, and how -o writes results to files.","repo":null},{"title":"Config Modes","slug":"hsql/config","topic":"The hsql CLI","url":"https://harlequin.sh/docs/hsql/config","description":"hsql's five --config modes — list-profiles, show, validate, schema and init — which read and write config files instead of running SQL.","repo":null},{"title":"Running Safely","slug":"hsql/safety","topic":"The hsql CLI","url":"https://harlequin.sh/docs/hsql/safety","description":"The row limit, --read-only and --timeout, the adapter capabilities that back them, and how hsql refuses rather than pretending.","repo":null},{"title":"Differences from psql","slug":"hsql/psql","topic":"The hsql CLI","url":"https://harlequin.sh/docs/hsql/psql","description":"What carries over from psql to hsql — -c, -f, -t, -A, -x — and the places where the same job has a different flag.","repo":null},{"title":"Reference: hsql CLI","slug":"hsql/reference","topic":"The hsql CLI","url":"https://harlequin.sh/docs/hsql/reference","description":"Every hsql option, argument, format and exit code, generated from hsql itself and published with the release it came from.","repo":null},{"title":"The hsql Agent Skill","slug":"hsql/skill","topic":"The hsql CLI","url":"https://harlequin.sh/docs/hsql/skill","description":"What hsql's Agent Skill teaches an agent, and three ways to install it — hsql --skill, the plugin marketplace, or the copy published here.","repo":null},{"title":"Agent Docs","slug":"agent-docs","topic":null,"url":"https://harlequin.sh/docs/agent-docs","description":"Every page of these docs is also published as markdown and as JSON — .md twins, llms.txt, llms-full.txt, and a docs API.","repo":null},{"title":"Database Adapters","slug":"adapters","topic":"Database Adapters","url":"https://harlequin.sh/docs/adapters","description":"Harlequin uses adapter plug-ins as a generic interface to any database.","repo":null},{"title":"DuckDB Basic Usage","slug":"duckdb","topic":"Adapter: DuckDB","url":"https://harlequin.sh/docs/duckdb","description":"The DuckDB adapter ships with Harlequin; you do not need to do anything else to install it.","repo":null},{"title":"Initialization Scripts","slug":"duckdb/initialization","topic":"Adapter: DuckDB","url":"https://harlequin.sh/docs/duckdb/initialization","description":"Each time you start Harlequin, it will execute commands from a DuckDB initialization script.","repo":null},{"title":"Loading Extensions","slug":"duckdb/extensions","topic":"Adapter: DuckDB","url":"https://harlequin.sh/docs/duckdb/extensions","description":"Install and load DuckDB extensions at startup with the -e/--extension flag, signed or unsigned.","repo":null},{"title":"Transaction Handling","slug":"duckdb/transactions","topic":"Adapter: DuckDB","url":"https://harlequin.sh/docs/duckdb/transactions","description":"In DuckDB, statements are auto-committed by default.","repo":null},{"title":"MotherDuck","slug":"duckdb/motherduck","topic":"Adapter: DuckDB","url":"https://harlequin.sh/docs/duckdb/motherduck","description":"You can use Harlequin with MotherDuck, just as you would use the DuckDB CLI","repo":null},{"title":"SQLite Basic Usage","slug":"sqlite","topic":"Adapter: SQLite","url":"https://harlequin.sh/docs/sqlite","description":"The SQLite adapter ships with Harlequin; you do not need to do anything else to install it.","repo":null},{"title":"Initialization Scripts","slug":"sqlite/initialization","topic":"Adapter: SQLite","url":"https://harlequin.sh/docs/sqlite/initialization","description":"Each time you start Harlequin, it will execute commands from a SQLite initialization script.","repo":null},{"title":"Loading Extensions","slug":"sqlite/extensions","topic":"Adapter: SQLite","url":"https://harlequin.sh/docs/sqlite/extensions","description":"Harlequin uses Python's distribution of SQLite, via its built-in sqlite3 library.","repo":null},{"title":"Transaction Handling","slug":"sqlite/transactions","topic":"Adapter: SQLite","url":"https://harlequin.sh/docs/sqlite/transactions","description":"In SQLite, statements are auto-committed by default.","repo":null},{"title":"Postgres Basic Usage","slug":"postgres","topic":"Adapter: Postgres","url":"https://harlequin.sh/docs/postgres","description":"You must install the harlequin-postgres package into the same environment as harlequin.","repo":"tconbeer/harlequin-postgres"},{"title":"Multiple Databases","slug":"postgres/multiple","topic":"Adapter: Postgres","url":"https://harlequin.sh/docs/postgres/multiple","description":"Currently, the Postgres adapter only supports connections to a single database at a time.","repo":"tconbeer/harlequin-postgres"},{"title":"Transaction Handling","slug":"postgres/transactions","topic":"Adapter: Postgres","url":"https://harlequin.sh/docs/postgres/transactions","description":"harlequin-postgres v0.3 and higher defines two transaction modes: Auto and Manual.","repo":"tconbeer/harlequin-postgres"},{"title":"Redshift Basic Usage","slug":"redshift","topic":"Adapter: Redshift","url":"https://harlequin.sh/docs/redshift","description":"Install the Redshift adapter and connect Harlequin to an Amazon Redshift cluster or Serverless workgroup.","repo":"tconbeer/harlequin-redshift"},{"title":"Redshift Authentication","slug":"redshift/auth","topic":"Adapter: Redshift","url":"https://harlequin.sh/docs/redshift/auth","description":"Connect Harlequin to Redshift with IAM credentials, Redshift Serverless, or a federated identity provider.","repo":"tconbeer/harlequin-redshift"},{"title":"Redshift Data Catalog","slug":"redshift/catalog","topic":"Adapter: Redshift","url":"https://harlequin.sh/docs/redshift/catalog","description":"Browse, search, and act on Redshift databases, schemas, relations, and columns in the Data Catalog.","repo":"tconbeer/harlequin-redshift"},{"title":"Snowflake Basic Usage","slug":"snowflake","topic":"Adapter: Snowflake","url":"https://harlequin.sh/docs/snowflake","description":"Install the Snowflake adapter and connect Harlequin to a Snowflake account.","repo":"tconbeer/harlequin-snowflake"},{"title":"Snowflake Authentication","slug":"snowflake/auth","topic":"Adapter: Snowflake","url":"https://harlequin.sh/docs/snowflake/auth","description":"Choose a Snowflake authenticator, from password and SSO to key pair, OAuth, and workload identity.","repo":"tconbeer/harlequin-snowflake"},{"title":"Adapter: MySQL/MariaDB","slug":"mysql","topic":"Database Adapters","url":"https://harlequin.sh/docs/mysql","description":"Install the MySQL adapter and connect Harlequin to a MySQL or MariaDB database.","repo":"tconbeer/harlequin-mysql"},{"title":"Adapter: ODBC","slug":"odbc","topic":"Database Adapters","url":"https://harlequin.sh/docs/odbc","description":"Connect Harlequin to SQL Server, Oracle, Teradata and other databases that ship an ODBC driver.","repo":"tconbeer/harlequin-odbc"},{"title":"BQ Installation and Configuration","slug":"bigquery","topic":"Adapter: BigQuery","url":"https://harlequin.sh/docs/bigquery","description":"Install the BigQuery adapter and connect Harlequin to a GCP project and location.","repo":"joshtemple/harlequin-bigquery"},{"title":"Auth and Permissions","slug":"bigquery/auth","topic":"Adapter: BigQuery","url":"https://harlequin.sh/docs/bigquery/auth","description":"How the BigQuery adapter authenticates with Application Default Credentials, and the IAM permissions it needs.","repo":"joshtemple/harlequin-bigquery"},{"title":"Adapter: Trino","slug":"trino","topic":"Database Adapters","url":"https://harlequin.sh/docs/trino","description":"Install the Trino adapter and connect Harlequin to a Trino cluster.","repo":"rogerioguicampos/harlequin-trino"},{"title":"Installation and Basic Usage","slug":"databricks","topic":"Adapter: Databricks","url":"https://harlequin.sh/docs/databricks","description":"Install the Databricks adapter and connect Harlequin to a Databricks warehouse or cluster.","repo":"alexmalins/harlequin-databricks"},{"title":"Initialization Scripts","slug":"databricks/initialization","topic":"Adapter: Databricks","url":"https://harlequin.sh/docs/databricks/initialization","description":"Each time you start Harlequin, it will execute SQL commands from a Databricks initialization script.","repo":"alexmalins/harlequin-databricks"},{"title":"Adapter: ADBC","slug":"adbc","topic":"Database Adapters","url":"https://harlequin.sh/docs/adbc","description":"Install the ADBC adapter and connect Harlequin to any database with an ADBC driver.","repo":"TylerHillery/harlequin-adbc"},{"title":"Adapter: RisingWave","slug":"risingwave","topic":"Database Adapters","url":"https://harlequin.sh/docs/risingwave","description":"Install the RisingWave adapter and connect Harlequin to a RisingWave instance.","repo":"zen-xu/harlequin-risingwave"},{"title":"Adapter: Wherobots","slug":"wherobots","topic":"Database Adapters","url":"https://harlequin.sh/docs/wherobots","description":"Install the Wherobots adapter and query WherobotsDB with the Wherobots Spatial SQL API.","repo":"wherobots/harlequin-wherobots"},{"title":"Adapter: Cassandra","slug":"cassandra","topic":"Database Adapters","url":"https://harlequin.sh/docs/cassandra","description":"Install the Cassandra adapter and connect Harlequin to a Cassandra cluster.","repo":"vkhitrin/harlequin-cassandra"},{"title":"Adapter: NebulaGraph","slug":"nebulagraph","topic":"Database Adapters","url":"https://harlequin.sh/docs/nebulagraph","description":"Install the NebulaGraph adapter and connect Harlequin to a NebulaGraph instance.","repo":"wey-gu/harlequin-nebulagraph"},{"title":"Adapter: Exasol","slug":"exasol","topic":"Database Adapters","url":"https://harlequin.sh/docs/exasol","description":"Install the experimental Exasol adapter and connect Harlequin to an Exasol database.","repo":"Nicoretti/harlequin-exasol"},{"title":"Adapter: H2","slug":"h2","topic":"Database Adapters","url":"https://harlequin.sh/docs/h2","description":"Install the H2 adapter and connect Harlequin to embedded or server-based H2 databases over JDBC.","repo":"clang-engineer/harlequin-h2"},{"title":"Config Overview","slug":"config-file","topic":"Configuring Harlequin","url":"https://harlequin.sh/docs/config-file","description":"Typing in command-line options with every invocation of Harlequin can get tiring.","repo":null},{"title":"Creating Config Files","slug":"config-file/creating-config","topic":"Configuring Harlequin","url":"https://harlequin.sh/docs/config-file/creating-config","description":"You can create config files manually, using any text editor.","repo":null},{"title":"Discovering Config Files","slug":"config-file/discovery","topic":"Configuring Harlequin","url":"https://harlequin.sh/docs/config-file/discovery","description":"Harlequin loads config files from the following locations.","repo":null},{"title":"Selecting a Profile","slug":"config-file/profiles","topic":"Configuring Harlequin","url":"https://harlequin.sh/docs/config-file/profiles","description":"All configs are nested within profiles.","repo":null},{"title":"Files Overview","slug":"files","topic":"Viewing Files","url":"https://harlequin.sh/docs/files","description":"Show a file tree of local files or S3 objects in the Data Catalog, and insert paths into the editor.","repo":null},{"title":"Local Files","slug":"files/local","topic":"Viewing Files","url":"https://harlequin.sh/docs/files/local","description":"Use --show-files (-f) to browse a local directory in the Data Catalog's Files tab.","repo":null},{"title":"Remote Objects (S3)","slug":"files/remote","topic":"Viewing Files","url":"https://harlequin.sh/docs/files/remote","description":"Before viewing remote objects, you must install the boto3 package in the same environment as Harlequin.","repo":null},{"title":"Choosing a Theme","slug":"themes","topic":null,"url":"https://harlequin.sh/docs/themes","description":"You can set a theme for Harlequin, passing the name of any Textual Theme to the --theme or -t option.","repo":null},{"title":"About Key Bindings","slug":"keymaps","topic":"Customizing Key Bindings","url":"https://harlequin.sh/docs/keymaps","description":"A key binding associates a key press, within a context, to an action.","repo":null},{"title":"Creating a Keymap","slug":"keymaps/config","topic":"Customizing Key Bindings","url":"https://harlequin.sh/docs/keymaps/config","description":"Keymaps can be defined in Harlequin config files, under the keymaps key.","repo":null},{"title":"Selecting Keymaps","slug":"keymaps/usage","topic":"Customizing Key Bindings","url":"https://harlequin.sh/docs/keymaps/usage","description":"After you have created a keymap or installed a keymap plug-in, you need to configure Harlequin to use that keymap.","repo":null},{"title":"Exporting Data","slug":"export","topic":null,"url":"https://harlequin.sh/docs/export","description":"Copy results to the clipboard, or export them as CSV, Parquet, JSON, ORC or Feather.","repo":null},{"title":"Managing Transactions","slug":"transactions","topic":null,"url":"https://harlequin.sh/docs/transactions","description":"Different adapters handle transactions differently; many choose to auto-commit each executed query.","repo":null},{"title":"Reference: Default Bindings","slug":"bindings","topic":null,"url":"https://harlequin.sh/docs/bindings","description":"Harlequin uses keymaps to define sets of key bindings in the app.","repo":null},{"title":"Common Problems","slug":"troubleshooting","topic":"Troubleshooting","url":"https://harlequin.sh/docs/troubleshooting","description":"An index of the things terminals get wrong: key bindings, copy-paste, colors, locale, timezones.","repo":null},{"title":"Key Bindings","slug":"troubleshooting/key-bindings","topic":"Troubleshooting","url":"https://harlequin.sh/docs/troubleshooting/key-bindings","description":"Harlequin can only react to key presses that are sent to it from the Terminal it is running in.","repo":null},{"title":"Copying and Pasting","slug":"troubleshooting/copying-and-pasting","topic":"Troubleshooting","url":"https://harlequin.sh/docs/troubleshooting/copying-and-pasting","description":"Harlequin's Query Editor, Data Catalog, and Results Viewer support cut and copy, and its Query Editor supports paste.","repo":null},{"title":"Appearance","slug":"troubleshooting/appearance","topic":"Troubleshooting","url":"https://harlequin.sh/docs/troubleshooting/appearance","description":"Fix colors, fonts and rendering by configuring your terminal for truecolor and a Nerd Font.","repo":null},{"title":"Locale","slug":"troubleshooting/locale","topic":"Troubleshooting","url":"https://harlequin.sh/docs/troubleshooting/locale","description":"Why numbers look unformatted in the C locale, and how to set --locale.","repo":null},{"title":"Windows Timezone Database","slug":"troubleshooting/timezone-windows","topic":"Troubleshooting","url":"https://harlequin.sh/docs/troubleshooting/timezone-windows","description":"Unlike other operating systems, Windows does not ship with an IANA-format timezone database.","repo":null},{"title":"DuckDB Version Mismatch","slug":"troubleshooting/duckdb-version-mismatch","topic":"Troubleshooting","url":"https://harlequin.sh/docs/troubleshooting/duckdb-version-mismatch","description":"Pin the DuckDB version Harlequin installs when it cannot open a database file another DuckDB wrote.","repo":null},{"title":"Terminal Recommendations","slug":"troubleshooting/terminal-recommendations","topic":"Troubleshooting","url":"https://harlequin.sh/docs/troubleshooting/terminal-recommendations","description":"If you are using the default Mac Terminal or Windows Command Prompt, you may want to switch to a more modern terminal.","repo":null},{"title":"Ways to Contribute","slug":"contributing","topic":"Contributing to Harlequin","url":"https://harlequin.sh/docs/contributing","description":"Ways to help: sponsoring, feedback, issues, pull requests, and writing an adapter.","repo":null},{"title":"Creating an Adapter","slug":"contributing/adapter-guide","topic":"Contributing to Harlequin","url":"https://harlequin.sh/docs/contributing/adapter-guide","description":"The HarlequinAdapter interface, entry points, and how to package an adapter for any relational database.","repo":null}]}