me-sh
command-line tools for me.sh.
mesh lets you inspect contacts, groups, activity, routes, and local snapshots from the terminal. reads are easy to run. writes need --yes, and most write paths can print a --dry-run plan first.
status: alpha. the tool works locally and has unit coverage, but the release path is still being built.
limits
- requires a me.sh account and api access.
- tested locally on macos. linux and windows are not claimed until ci/release builds cover them.
mesh loginbinds a local oauth callback on127.0.0.1:6374.mesh login --openuses the macosopencommand. without it, copy the printed url into a browser and paste the callback url or code.- tokens are stored in
~/.config/mesh.jsonwith0600permissions on unix. oldermesh-cli.jsonandclay-cli.jsonconfigs are migrated when read. - the observed me.sh route set does not expose hard delete for contacts or groups.
- notes are create/read through the observed routes. events, emails, and reminders are read-only.
- search has an observed server-side
limit <= 1000cap.offset,page, andskipdid not paginate in live checks; the tool usesexclude_contact_idsfor full exports.
install
published releases install from crates.io:
until the first crates.io release, install from this checkout:
the package is me-sh; the installed command is mesh.
quick start
use --help anywhere:
common work
writes
write commands require --yes unless --dry-run is used.
write paths include contact create/update/archive/restore, group create/update/sync, note creation, bulk apply commands, merge, and snapshot restore.
output
global output controls:
formats:
json
compact-json
jsonl
csv
tsv
table
long snapshot and archive commands draw progress on stderr only when stderr is a terminal. set MESH_NO_PROGRESS=1 to silence it. MESHX_NO_PROGRESS=1 still works for older setups.
config
the default config path is:
~/.config/mesh.json
environment variables:
MESH_CONFIG config file path
MESH_ACCESS_TOKEN use this access token instead of stored auth
MESH_API_BASE api base url, default https://api.me.sh
MESH_MCP_BASE mcp tool base url, default https://mcp.me.sh
MESH_NO_PROGRESS disable terminal progress lines
mesh config:show redacts access and refresh tokens. diagnostics do not print tokens.
generated files
safe to delete after you are done with a local run:
target/
work/
*.log
snapshot packaging may create .meshx-index/ sidecars and .meshx-package.json metadata inside archives. export resume writes *.meshx-state.json. those names are part of the current local file format.
development
focused commands:
make check runs format check, clippy, tests, release build, and binary smoke checks.
ci runs the same command on pull requests and pushes to main.
release
release is verification, not just a tag.
then tag, publish, and test the published install:
see RELEASE.md for the checklist.
license
copyright (c) 2026 sigkillme0.
licensed under gpl-3.0-or-later. see LICENSE.