02 / टर्मिनल · Apache-2.0
io-cli
एक टर्मिनल एजेंट जो काम करते-करते दिखाता रहता है कि उसे किस बात की इजाज़त है, कितना ख़र्च हो रहा है, और उसने क्या मना किया। एजेंट लूप, providers, tools, sandbox और session store — सब io-harness के हैं, यहाँ दोबारा नहीं लिखे गए।
git clone https://github.com/initorigin/io-cli
cargo build --releaseटर्मिनल आपसे नहीं छीनता
कोई alternate screen नहीं, कोई mouse capture नहीं — किसी भी mode में, किसी भी flag के पीछे। सर्च, सेलेक्शन और tmux copy-mode चलते रहते हैं, और यह बदले तो एक टेस्ट बिल्ड फ़ेल कर देता है।
मंज़ूरी वहीं, जहाँ पूछी गई
लिखने से पहले run रुकता है और प्रस्तावित diff दिखाता है। y, a या n चुनिए और Enter से पक्का कीजिए — इसलिए वाक्य के बीच का कोई अक्षर लिखने का फ़ैसला नहीं कर सकता। 'इस session के लिए' उसी act को उसी target पर याद रखता है।
आपकी key, स्क्रीन पर कभी नहीं
wizard key को लाइव endpoint पर जाँचता है, फ़ाइल 0600 पर लिखता है, और provider का env var पहले से सेट हो तो key कहीं लिखता ही नहीं।
ख़र्च, और नतीजा
/cost पैसा और टोकन — run, session, मॉडल और दिन के हिसाब से; /stats नतीजे, पहली कोशिश, gate फ़ेल और latency। कुछ भी अंदाज़े से नहीं।
छत्तीस कमांड, चार समूहों में
ioबिना subcommand, इसी रिपॉज़िटरी में एक session खुल जाता है/modelअगली बारी किस मॉडल को जाए, यह बदलिए — सिर्फ़ इस session के लिए/resumeपुराना session खोलिए और उसका run जिस पर रुका था, उसका जवाब दीजिए/statusपूरी session स्थिति scrollback में: policy परतें, sandbox backend, caps, बजट, कनेक्शनयह आपका टर्मिनल नहीं छीनता
io न alternate screen में जाता है, न माउस capture करता है — किसी भी mode में, किसी भी flag के पीछे। हर पूरा हुआ मैसेज, tool call और सिस्टम लाइन टर्मिनल के अपने scrollback में जाती है; नीचे की कुछ पंक्तियाँ ही दोबारा बनती हैं।
इसलिए session ख़त्म होने पर पूरी बातचीत वहीं रहती है: टर्मिनल की सर्च उसे ढूँढ लेती है, tmux copy-mode स्क्रॉल कर लेता है, माउस से सेलेक्ट हो जाता है — और इनमें से कुछ भी यहाँ लिखा नहीं गया है। tests/structure.rs हर बाइट पकड़ता है और alternate-screen या mouse-capture sequence दिखे तो बिल्ड फ़ेल कर देता है।
इंस्टॉल
curl -fsSL https://raw.githubusercontent.com/initorigin/io-cli/main/install.sh | shirm https://raw.githubusercontent.com/initorigin/io-cli/main/install.ps1 | iexbrew tap initorigin/io-cli https://github.com/initorigin/io-cli
brew install initorigin/io-cli/ioscoop bucket add io-cli https://github.com/initorigin/io-cli
scoop install iogit clone https://github.com/initorigin/io-cli
cargo build --release · binary at target/release/io · Rust 1.95+दोनों स्क्रिप्ट आपकी मशीन के लिए सही बिल्ड चुनती हैं, unpack करने से पहले SHA256SUMS से जाँचती हैं, और आपकी ही डायरेक्टरी में इंस्टॉल करती हैं — न administrator अधिकार, न shell profile या PATH में कोई बदलाव। tap और bucket इसी रिपॉज़िटरी में रहते हैं, इसीलिए brew tap और scoop bucket add में URL देना पड़ता है। crates.io पर publish नहीं है: सोर्स से बनाने के लिए Rust 1.95 या ऊपर।
छत्तीस कमांड, चार समूह
the session
/clear · /resume · /fork · /profile · /contain · /setup · /exit
this turn
/model · /effort · /undo · /plan · /steer · /compact · /image · /copy · /copy diff · /commit
inspect
/help · /status · /context · /expand · /fleet · /skills · /cost · /stats · /store · /export
configure
/config · /theme · /remember · /memory · /mcp · /provider · /plugin · /gates · /import
समूह इस बात से बने हैं कि आप क्या कर रहे हैं, न कि harness का कौन हिस्सा जवाब देता है — और कोई समूह दस से ऊपर नहीं जाता। इनमें ग्यारह चलती turn के बीच चल जाती हैं, बाकी मना कर दी जाती हैं: नियम यह है कि कमांड करती क्या है, दिखती कितनी मासूम है यह नहीं।
कीज़
argv सतह
-C, -m, --profile, --plain, on either side of a subcommand.--json, --sandbox, --policy, --provider.--list shows what is waiting.Exit codes
io resume, except an approval.प्लैटफ़ॉर्म सपोर्ट
aarch64-apple-darwinmacOS, Apple silicon · io-harness’s own sandbox-execx86_64-apple-darwinmacOS, Intel · as abovex86_64-unknown-linux-muslLinux, statically linked · Landlock, bwrap, namespaces, floorx86_64-pc-windows-msvcWindows · Job Object, with AppContainer opt-inचारों artifacts और उनके SHA256SUMS हर GitHub Release के साथ हैं, और पूरा टेस्ट सूट CI में Ubuntu, macOS और Windows पर चलता है। कमांड को सीमित io-harness करता है, यह प्रोडक्ट नहीं — io footer पर दिखाता है कि इस होस्ट पर असल में कौन backend चला, क्योंकि जो mode माँगा गया और जो लागू हुआ, दोनों एक बात नहीं हैं।
स्किल्स, पाँच शामिल
- io-mcp
- io-permissions
- io-provider
- io-remember
- io-update
हर एक एक markdown फ़ाइल है, जिसे एजेंट ज़रूरत पर पढ़ता है। अपनी स्किल /skills या io skill से जोड़िए-हटाइए; नाम frontmatter से आता है, और दो एक जैसे नामों में बाद वाला हार जाता है।
गाइड
- the-session
- keys
- commands
- import
- resume
- accounting
- skills
- plugins
- hooks
- fleet
- verification
- providers
- git
- media
- accessibility
- headless
- editors
- configuration
- store
- limits