> ## Documentation Index
> Fetch the complete documentation index at: https://docs.turso.tech/llms.txt
> Use this file to discover all available pages before exploring further.

# Command-Line Options

> CLI flags, arguments, and server modes for the tursodb command

# Command-Line Options

```bash theme={null}
tursodb [OPTIONS] [DATABASE] [SQL]
```

## Arguments

| Argument | Default | Description |
| - | - | - |
| `DATABASE` | `:memory:` | Path to a SQLite database file. If omitted, an in-memory database is created |
| `SQL` | — | SQL statement to execute. If provided, the shell runs the query and exits |

### Examples

```bash theme={null}
# In-memory database
tursodb

# Open an existing file
tursodb customers.db

# Run a query and exit
tursodb customers.db "SELECT count(*) FROM orders;"

# Pipe SQL from stdin
echo "SELECT 1 + 1;" | tursodb -q
```

## Options

### `-m, --output-mode <MODE>`

Set the output display format.

| Mode | Description |
| - | - |
| `pretty` | Table with borders (default) |
| `list` | Pipe-delimited values |
| `line` | One column per line with column names |

```bash theme={null}
tursodb -m list mydata.db "SELECT * FROM users;"
```

### `-o, --output <PATH>`

Redirect query output to a file instead of stdout.

```bash theme={null}
tursodb -o results.txt mydata.db "SELECT * FROM users;"
```

### `-q, --quiet`

Suppress the startup banner and version information.

```bash theme={null}
tursodb -q mydata.db
```

### `-e, --echo`

Print each SQL statement before executing it. Useful for debugging scripts.

```bash theme={null}
echo "SELECT 42;" | tursodb -q -e
```

```
SELECT 42;
42
```

### `-v, --vfs <VFS>`

Select the Virtual File System backend.

| VFS | Description |
| - | - |
| `syscall` | Standard OS file I/O (default) |
| `memory` | In-memory storage |
| `io_uring` | Linux io\_uring (requires feature flag) |

```bash theme={null}
tursodb -v memory
```

### `-t, --tracing-output <PATH>`

Write internal log traces to a file. Useful for debugging and performance analysis.

```bash theme={null}
tursodb -t trace.log mydata.db
```

### `--readonly`

Open the database in read-only mode. Write operations will return an error.

```bash theme={null}
tursodb --readonly production.db "SELECT count(*) FROM users;"
```

Attempting to write in read-only mode:

```bash theme={null}
tursodb --readonly production.db "INSERT INTO users VALUES (1, 'test');"
# Error: Resource is read-only
```

### `--mcp`

Start a Model Context Protocol server instead of the interactive shell. This allows AI assistants and other MCP clients to interact with the database via JSON-RPC.

```bash theme={null}
tursodb --mcp mydata.db
```

### `--sync-server <ADDRESS>`

Start a sync server for database replication, listening at the given address.

```bash theme={null}
tursodb --sync-server 0.0.0.0:8080 mydata.db
```

## Experimental Feature Flags

These flags enable features that are still under development. They may change or be removed in future releases.

<Warning>
  Experimental features may have incomplete implementations or known limitations. Use them for testing and development only.
</Warning>

| Flag | Description |
| - | - |
| `--experimental-views` | Enable views (`CREATE VIEW` / `CREATE MATERIALIZED VIEW`) |
| `--experimental-custom-types` | Enable custom types (`CREATE TYPE` / `DROP TYPE` / `CREATE DOMAIN` / `DROP DOMAIN`) |
| `--experimental-encryption` | Enable at-rest database encryption |
| `--experimental-index-method` | Enable custom index methods. Necessary for FTS and sparse vector indexes |
| `--experimental-autovacuum` | Enable automatic database vacuuming |
| `--experimental-vacuum` | Enable in-place `VACUUM` |
| `--experimental-attach` | Enable `ATTACH DATABASE` / `DETACH DATABASE` |
| `--experimental-generated-columns` | Enable virtual `GENERATED ALWAYS AS` columns |
| `--experimental-without-rowid` | Enable `WITHOUT ROWID` tables |
| `--experimental-multiprocess-wal` | Enable sharing a database between processes via a shared WAL coordinator |
| `--experimental-mvcc-passive-checkpoint` | Enable passive checkpointing under MVCC (`journal_mode=mvcc`) |

<Info>
  Triggers (`CREATE TRIGGER` / `DROP TRIGGER`) are stable as of Turso 0.7 and no longer require a flag.
</Info>

```bash theme={null}
# Enable views, custom types, and in-place VACUUM
tursodb --experimental-views --experimental-custom-types --experimental-vacuum mydata.db
```

## Other Flags

| Flag | Description |
| - | - |
| `--mvcc` | Start the MVCC concurrent-transaction harness instead of the normal shell |
| `--unsafe-testing` | Enable unsafe testing features (e.g., `sqlite_dbpage` writes) |
| `-h, --help` | Print usage help |
| `-V, --version` | Print version information |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.