_____ __ _____ ____ ____
/ ___// / / / | / __ \/ __ \
\__ \/ /_/ / /| | / /_/ / /_/ /
___/ / __ / ___ |/ _, _/ ____/
/____/_/ /_/_/ |_/_/ |_/_/
local dev toolkit
sharp is a local, terminal-first developer toolkit. It combines a keyboard-driven TUI inspired by lazygit with scriptable CLI commands for JSON, encoding, crypto, time, text, network, conversion, JWT inspection, and generators.
The project is designed for everyday developer workflows: paste data, transform it, inspect the output, chain the result into another action, or call the same tool from shell scripts.
Install the latest version from source:
go install github.com/gkmz/sharp/cmd/sharp@latestInstall from a local checkout:
git clone https://github.com/gkmz/sharp.git
cd sharp
go install ./cmd/sharpRun directly during development:
go run ./cmd/sharpStart the interactive app:
sharpThe TUI is organized into four numbered regions:
| Region | Purpose |
|---|---|
1 Search |
Search categories, subcategories, and concrete tools. |
2 Categories |
Select a category or subcategory. Parent categories with subcategories are headers only. |
3 Tools |
Select tools in the current subcategory. JSON uses one Workspace page. |
4 Workspace |
Work with input, options/path, actions, and output. |
Common shortcuts:
| Key | Action |
|---|---|
1, 2, 3, 4 |
Focus a region. |
/ |
Open search. |
j / k |
Move in the category list. |
h / l |
Move between tools in region 3. |
i or Enter |
Edit input when the current tool accepts input. |
o |
Edit options, or JSON path in the JSON workbench. |
r |
Run the current tool or default action. |
v |
Paste clipboard data into input. |
x / X |
Clear input / clear output. |
y |
Copy trimmed output. |
s |
Save trimmed output to sharp-output.txt. |
p |
Pipe output back into input for chaining. |
ctrl+u / ctrl+d |
Scroll output by half a page. |
alt+u / alt+d |
Scroll input by half a page. |
? |
Open searchable command help. |
q |
Quit from normal mode. |
List tools:
sharp listPrint version information:
sharp versionExamples:
echo '{"data":{"id":1}}' | sharp json pretty
echo '{"data":{"id":1}}' | sharp json get --path data.id
sharp b64 encode hello
sharp b64 decode aGVsbG8=
sharp url encode "a=b&c=d"
sharp hash sha256 hello
sharp hmac sha256 --key secret hello
sharp time now
sharp time from 1714723200
sharp uuid v4
sharp password --length 32
sharp jwt decode "$JWT"CLI input can come from an argument, a file path, or stdin.
Requirements:
- Go 1.25.1 or newer matching
go.mod.
Useful commands:
make test
make run
make build
make fmt
make tidyBuild with a release version:
go build -ldflags "-X github.com/gkmz/sharp/internal/cli.Version=0.1.0" ./cmd/sharpIn sandboxed environments where the default Go build cache is not writable, use:
GOCACHE=/private/tmp/sharp-gocache go test ./...
GOCACHE=/private/tmp/sharp-gocache go vet ./...Project layout:
cmd/sharp CLI entrypoint
internal/cli Cobra command tree
internal/tui Bubble Tea TUI
internal/tools Built-in tools and default registry
pkg/tool Public tool contract and registry
docs Product and development notes
Apache License 2.0. See LICENSE.