Data storage location
Timo stores all your thoughts in a local SQLite database file. The location depends on your operating system:- macOS
- Linux
- Windows
Timo uses Rust’s
dirs::data_local_dir() function to determine the appropriate data directory for your platform. This follows platform conventions for storing application data.Database structure
The SQLite database contains atasks table with the following schema:
| Column | Type | Description |
|---|---|---|
id | INTEGER PRIMARY KEY | Auto-incrementing unique identifier |
content | TEXT | The thought content |
label | TEXT (nullable) | Optional label for categorization |
View database schema details
View database schema details
The database initialization happens in When you first run Timo, it:
src/sqlite/sqlite_storage.rs:14-20:- Determines the appropriate data directory
- Creates
.timo.dbif it doesn’t exist - Runs database migrations
- Opens a connection for operations
Environment variables
Timo supports one environment variable for development purposes:DB_NAME
Override the default database filename during development.- Testing Timo without affecting your production thoughts
- Development and debugging
- Running multiple isolated instances
src/sqlite/sqlite_storage.rs:8-12:
Data persistence
Timo provides persistent storage with immediate durability:Automatic saving
Every operation (add, remove, clear) is immediately committed to the SQLite database. There’s no need to manually save or sync.
Data integrity
SQLite provides ACID (Atomicity, Consistency, Isolation, Durability) guarantees. Your data is safe even if the application crashes.
Backing up your thoughts
Since Timo stores everything in a single SQLite file, backing up is straightforward:Manual backup
- macOS/Linux
- Windows
Automated backup
Add a cron job (macOS/Linux) or scheduled task (Windows) to back up regularly:Cloud backup
Include the Timo database in your cloud storage sync:- Dropbox
- iCloud
- Google Drive
Restoring from backup
To restore your thoughts from a backup:Exporting data
While Timo doesn’t have a built-in export feature, you can extract data directly from the SQLite database:Export to CSV
Export to JSON
Export to plain text
Data migration
If you’re moving to a new machine:Install Timo on new machine
Follow the installation instructions to install Timo.
Storage optimization
For most users, the database will remain small (under 1 MB even with thousands of thoughts). If needed, you can compact the database:No configuration file
Timo intentionally doesn’t use a configuration file. The philosophy is to keep things simple:- No
.timorcor config files to manage - No YAML or TOML configuration
- Sensible defaults that work for everyone
- All functionality accessible via command-line flags
- Nothing to configure before first use
- No configuration drift between machines
- Clear and explicit command behavior
- Easy to understand and troubleshoot
If you want to customize Timo’s behavior, use shell aliases and functions instead of configuration files.