| Crates.io | glues |
| lib.rs | glues |
| version | 0.8.1 |
| created_at | 2024-08-13 03:35:54.164344+00 |
| updated_at | 2025-09-30 10:27:21.724506+00 |
| description | Unified CLI entry point for the Glues toolkit |
| homepage | |
| repository | https://github.com/gluesql/glues |
| max_upload_size | |
| id | 1335438 |
| size | 128,190 |
Glues is a Vim-inspired, terminal-based (TUI) note-taking application that offers flexible and secure storage options. You can keep notes purely in memory, store them as individual files, write them into a portable redb database, choose Git for distributed version control, or opt for MongoDB for centralized data management.
Glues is designed with a core architecture that operates independently of the TUI, providing robust state management and action handling. Although the current frontend is TUI-based, the architecture allows for easy integration with other frontends such as GUI, iOS, Android, or even running headlessly without a UI. The TUI interface clearly displays the current state and available actions, making it intuitive and easy to use.
With no reliance on third-party services, Glues ensures that your data remains private and fully under your control. Currently, it ships with Instant (in-memory), Local (file-per-note), redb (single-file), Git, and MongoDB storage options, and we plan to integrate additional backends through GlueSQL for even more flexibility. The core concept behind Glues is to empower users to choose how their data is handled—whether through local files, a redb database file, Git, MongoDB, or future storage options—without any dependence on a central authority. This makes Glues a sync-enabled application that prioritizes user autonomy and privacy.
First, ensure Rust is installed. Then, install Glues by running:
cargo install glues
For Arch Linux users, Glues is available in the AUR:
paru -S glues # user your favorite AUR helper
We're working on making Glues available through more package managers soon.
Glues offers various storage options to suit your needs:
Instant: Data is stored in memory and only persists while the app is running. This option is useful for testing or temporary notes as it is entirely volatile.
Local: Notes are stored locally as separate files. This is the default option for users who prefer a simple, file-based approach without any remote synchronization.
redb: Persist everything inside a single redb database file. Provide a path and Glues will create or reuse the file, giving you a portable, self-contained notebook that is easy to back up or sync with other tools.
Git:
path, remote, and branch.path should point to an existing local Git repository. For example, you can clone a GitHub repository and use that path.remote and branch specify the target remote repository and branch for synchronization.To see how notes and directories are stored using Git, you can refer to the Glues sample repository.
MongoDB:
Proxy:
glues server memory (replace memory with file, redb, git, or mongo as needed). The server listens on 127.0.0.1:4000 by default; use --listen to change the address.GLUES_SERVER_TOKEN or pass --auth-token <value> when launching the server. The TUI's Proxy flow will prompt for the token and send it as a Bearer header. Leave the field empty to connect to a token-free server on your local machine.Proxy (shortcut [p]), enter the proxy URL (e.g. http://127.0.0.1:4000), provide the token if required, and Glues will talk to the remote backend just like it does locally.Web build: The browser version of Glues persists configuration through GlueSQL WebStorage (LocalStorage) and currently exposes the Instant, IndexedDB, and Proxy backends. Use IndexedDB to keep notes in-browser across sessions, or point the Proxy option at a running Glues proxy server to keep data outside the browser sandbox.
Try the hosted demo at https://gluesql.org/glues (Instant, IndexedDB, or Proxy storage).
Glues ships with a Ratzilla-powered web frontend that reuses the TUI logic.
rustup target add wasm32-unknown-unknown
cargo install trunk
cd tui/web
trunk serve --release
To produce a static bundle instead, run trunk build --release from the same directory; the optimized artifacts will be emitted under dist/.
Glues includes several built-in color schemes. The application starts with the
dark palette by default, and you can switch presets at runtime through the
Theme menu in the entry dialog.
The built-in themes are:
dark – 256-color palettelight – 256-color palettepastel – a light theme defined using RGB valuessunrise – a warm light theme defined using RGB valuesmidnight – a blue-toned dark theme defined using RGB valuesforest – a nature-inspired dark theme defined using RGB valuesHere is our plan for Glues and the features we aim to implement. Below is a list of upcoming improvements to make Glues more useful and versatile. If you have suggestions for new features, please feel free to open a GitHub issue.
Install cargo-llvm-cov once with:
cargo install cargo-llvm-cov
Key commands exposed via project aliases:
cargo coverage - run the workspace under coverage and emit an HTML report at target/llvm-cov/html/index.htmlcargo coverage-report - print a text summary (run after cargo coverage --no-report; append --fail-under-lines <N> to guard CI)cargo coverage-lcov - export target/llvm-cov/lcov.info for external servicescargo coverage-clean - remove coverage artifactsThis project is licensed under the Apache License, Version 2.0 - see the LICENSE file for details.