W
wankdanker/clyops
A cross-language option parser that turns your programs/scripts into typed tools for humans, HTTP clients,…
View on GitHub ↗Link checked 2026-11-12 · HTTP 200 · opens the vendor's own site
- Star count
- 3 ★ · wankdanker/clyops · read from the GitHub search API · (checked 2026-11-13 20:00:50)
- Source
- read directly from its GitHub page · type: open-source project
- Harvest history
- first seen 2026-10-26 · last seen 2026-11-14 · seen 23× · listed by 2 sources
- Score
- score 203 · 3 ★ · 2 sources · repo
FAQ (answers come from our records)
Who is it for?
We filed it under these tags: 开源项目. The tags come from the entry itself, not a taxonomy we imposed.
Who maintains it?
repository
wankdanker/clyops;first catalogued 2026-10-26;last seen 2026-11-14。There is no official certification or quality rating here — we record sources and dates only.# clyops
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
Define your CLI once. Use it from terminals, desktop forms, HTTP and AI agents.
clyops turns the options beside your code into a consistent, machine-readable
contract. Keep the execution logic in your language; use the same tool through
the terminal, the desktop runner, the HTTP API or an MCP client.
Register your options and arguments once at the top of a program, and clyops
handles parsing, validation, help text, config files, environment variables,
a JSON schema of the interface, logging helpers and shell completion for
bash, zsh and fish.
See the animated project homepage or
run the walkthrough: one small deployment-plan tool, from
generated help to an agent call and an HTTP endpoint.
Try the mixed Bash/Python scripts immediately after cloning:
sh
./examples/scripts/plan.py --env production --replicas 3
./examples/scripts/report.py --format table
./examples/scripts/transcode.sh examples/data/tone.wav /tmp/clyops-demo.m4a
No library compilation or pip dependencies are needed. FFmpeg and curl wrappers
preview commands before explicit execution. The browser playground
executes the Python examples in your tab.
The same behavior ships for Bash, JavaScript, TypeScript, Python, Rust, C,
Go, Ruby and Java. Every implementation is checked against one shared specification
and conformance suite, so a tool keeps the same help
output, error messages and completion when you port it from Bash to Rust.
sh
clyopsopt PORT port p 8080 "Server port" Network port # Bash
js
cli.opt('PORT', 'port', 'p', '8080', 'Server port', 'Network', 'port'); // JavaScript / TypeScript
python
cli.opt("PORT", "port", "p", "8080", "Server port", "Network", "port") # Python
rust
cli.opt("PORT", "port", "p", "8080", "Server port").group("Network").rule("port"); // Rust
clyopsopt(cli, "PORT", "port", "8080", .shortname = 'p', .description = "Server port", .group = "Network", .rule = "port"); // C
go
cli.Opt("PORT", "port", "p", "8080", "Server port", "Network", "port") // Go
ruby
cli.opt "PORT", "port", "p", "8080", "Server port", "Network", "port" # Ruby
java
cli.opt("PORT", "port", "p", "8080", "Server port", "Network", "port"); // Java
## A complete program
Bash Python
bash
#!/usr/bin/env bash
source clyops.sh
clyopsdescription "Copy files to a server."
clyopsarg SRC "File to send" "" "file:exists"
clyopsargvariadic EXTRA "More files" "file:exists"
clyopsopt HOST host H localhost "Server" Network hostname
clyopsopt PORT port p 22 "Port" Network port
clyopsopt VERBOSE verbose v flag "Chatty"
clyopsopt CONFIG config c optional "Config file" Config path
clyopsconfig config "send:"
clyopsrun "$@"
info "sending $SRC to $HOST:$PORT"
python
#!/usr/bin/env python3
from clyops import Cli, info
cli = Cli()
cli.setdescription("Copy files to a server.")
cli.arg("SRC", "File to send", "", "file:exists")
cli.argvariadic("EXTRA", "More files", "file:exists")
cli.opt("HOST", "host", "H", "localhost", "Server", "Network", "hostname")
cli.opt("PORT", "port", "p", "22", "Port", "Network", "port")
cli.opt("VERBOSE", "verbose", "v", "flag", "Chatty")
cli.opt("CONFIG", "config", "c", "optional", "Config file", "Config", "path")
cli.setconfig("config", "send:")
args = cli.run()
info(f"sending {args.SRC} to {args.HOST}:{args.PORT}")
clyops turns the options beside your code into a consistent, machine-readable
contract. Keep the execution logic in your language; use the same tool through
the terminal, the desktop runner, the HTTP API or an MCP client.
Register your options and arguments once at the top of a program, and clyops
handles parsing, validation, help text, config files, environment variables,
a JSON schema of the interface, logging helpers and shell completion for
bash, zsh and fish.
See the animated project homepage or
run the walkthrough: one small deployment-plan tool, from
generated help to an agent call and an HTTP endpoint.
Try the mixed Bash/Python scripts immediately after cloning:
sh
./examples/scripts/plan.py --env production --replicas 3
./examples/scripts/report.py --format table
./examples/scripts/transcode.sh examples/data/tone.wav /tmp/clyops-demo.m4a
No library compilation or pip dependencies are needed. FFmpeg and curl wrappers
preview commands before explicit execution. The browser playground
executes the Python examples in your tab.
The same behavior ships for Bash, JavaScript, TypeScript, Python, Rust, C,
Go, Ruby and Java. Every implementation is checked against one shared specification
and conformance suite, so a tool keeps the same help
output, error messages and completion when you port it from Bash to Rust.
sh
clyopsopt PORT port p 8080 "Server port" Network port # Bash
js
cli.opt('PORT', 'port', 'p', '8080', 'Server port', 'Network', 'port'); // JavaScript / TypeScript
python
cli.opt("PORT", "port", "p", "8080", "Server port", "Network", "port") # Python
rust
cli.opt("PORT", "port", "p", "8080", "Server port").group("Network").rule("port"); // Rust
clyopsopt(cli, "PORT", "port", "8080", .shortname = 'p', .description = "Server port", .group = "Network", .rule = "port"); // C
go
cli.Opt("PORT", "port", "p", "8080", "Server port", "Network", "port") // Go
ruby
cli.opt "PORT", "port", "p", "8080", "Server port", "Network", "port" # Ruby
java
cli.opt("PORT", "port", "p", "8080", "Server port", "Network", "port"); // Java
## A complete program
Bash Python
bash
#!/usr/bin/env bash
source clyops.sh
clyopsdescription "Copy files to a server."
clyopsarg SRC "File to send" "" "file:exists"
clyopsargvariadic EXTRA "More files" "file:exists"
clyopsopt HOST host H localhost "Server" Network hostname
clyopsopt PORT port p 22 "Port" Network port
clyopsopt VERBOSE verbose v flag "Chatty"
clyopsopt CONFIG config c optional "Config file" Config path
clyopsconfig config "send:"
clyopsrun "$@"
info "sending $SRC to $HOST:$PORT"
python
#!/usr/bin/env python3
from clyops import Cli, info
cli = Cli()
cli.setdescription("Copy files to a server.")
cli.arg("SRC", "File to send", "", "file:exists")
cli.argvariadic("EXTRA", "More files", "file:exists")
cli.opt("HOST", "host", "H", "localhost", "Server", "Network", "hostname")
cli.opt("PORT", "port", "p", "22", "Port", "Network", "port")
cli.opt("VERBOSE", "verbose", "v", "flag", "Chatty")
cli.opt("CONFIG", "config", "c", "optional", "Config file", "Config", "path")
cli.setconfig("config", "send:")
args = cli.run()
info(f"sending {args.SRC} to {args.HOST}:{args.PORT}")
Listed badge (optional)
Copy this line into the README if you want the listing mark. Optional, and it does not affect being listed.
[](https://anclum.com/en/s/wankdanker-clyops/)
- Source
- github · https://github.com/wankdanker/clyops
- Browse by field
- Open source
- Traction
- 3 ★
- Listed by
- 2 independent sources
- added
- today
More like this
Filed under
Every tag opens the full list for that filter. Counts are the live catalogue figures.