Send requests from files. Keyboard-first. Multi-protocol.
poste.nvim ships the poste Rust CLI: a fast, standalone executor for
requests described in plain text — SQL files with streaming progress,
persistent SQL/Redis/AMQP sessions, database introspection and SQL text
analysis. Inspired by the JetBrains HTTP Client, with NDJSON streaming output
that thin Neovim frontends render as spreadsheet-like datasets.
The Neovim UIs are separate, self-contained repositories — install the ones you need; they evolve and release independently:
| Plugin | Protocol |
|---|---|
| poste-http.nvim | HTTP / REST (.http / .rest files) |
| poste-db.nvim | SQL — PostgreSQL, MySQL/MariaDB, SQLite, MSSQL, ClickHouse; dataset browser, editing, schema introspection |
| poste-redis.nvim | Redis — key browser, command runner |
| poste-mq.nvim | AMQP — queue inspection, tail |
| poste-es.nvim | Elasticsearch |
| poste-mail.nvim | |
| poste-ai.nvim | Optional AI chat with per-connection context injection |
The plugins shell out to the poste binary (installed automatically from
this repo's releases, or point vim.g.poste_binary at your
own build). The binary's CLI surface and wire formats are the family's one
cross-repo contract — documented in docs/schema.md.
Build from source, or install a prebuilt binary:
cargo install --path crates/poste-cli # installs `poste` onto your PATHv* tags cut a release; release.yml builds
binaries for x86_64-linux, aarch64-linux, aarch64-macos, x86_64-macos and
x86_64-windows with SHA256 checksums. The sibling plugins' vendored
installers download these same assets on first setup. Those asset names, the
flat archive layout and the sha256sum digest format are a contract the five
installers depend on; release.yml spells it
out where the packaging happens.
poste Execute requests from files
connection Manage SQL connections
introspect Introspect database structure (databases, schemas, tables, columns, indexes)
context SQL context detection (for completion / indicator placement)
exec-file Execute a SQL file with streaming progress
session Persistent SQL session (connection alive across requests)
redis-exec Execute redis commands (stdin JSON: {"connection", "commands"})
redis-session Persistent redis session
mq-exec Execute AMQP operations (stdin JSON: {"connection", "operations"})
mq-session Persistent AMQP session with push consumers
Examples (the plugins drive these automatically; flags via --help):
poste exec-file queries.sql --connection postgres://user@host:5432/app --env dev
poste introspect --connection-url postgres://user@host:5432/app --type tables --schema public
poste connection list --env devRequests reference environments and connections through {{var}}
substitution, resolved from JetBrains-style env.json, .env files and the
OS environment. Connections are defined per project in connections.toml
(dialect, host, port, user, password, database — secrets via the same env
vars). Each sibling plugin's README documents its exact format and options;
the resolution rules and every wire format are specified in
docs/schema.md.
cargo build --release # Rust CLI
cargo test --workspace # Rust tests
cargo clippy --workspace --all-targets -- -D warnings # zero-warning gate
cargo fmt --all --check # formatting gateLayout: crates/poste-core (request/SQL parsing, env management),
crates/poste-exec (protocol executors), crates/poste-cli (the binary).
The Lua plugin family lives in the sibling repos and is tested there — this
repo is Rust-only.