Status Trio
Status Trio는 macOS 메뉴바 앱으로 Wi‑Fi·배터리·볼륨을 하나의 아이콘에 통합합니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Browser-local WASM tools + the gizza CLI/MCP server. 540+ free, private, offline-capable utilities. MIT.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A library of small, single-purpose compute tools — calculators, converters,
text/data utilities, crypto, image and video (ffmpeg-backed), and more — each
implemented once as a WAFER WASM
block and exposed through a headless CLI, an MCP server for agents, and, where
applicable, a static SEO-friendly web page. The block's info()/schema drives
the CLI and MCP surfaces; the page generator consumes its synchronized
manifest plus page-specific presentation metadata.
The hosted, browser-based version of these tools — chat UI, model picker, and
more — lives at gizza.ai. This repository is the
public, MIT-licensed toolkit that powers it: the tool implementations
(blocks/), the gizza CLI (cli/), and the static tool-page generator
(tools/generator).
blocks/<slug>/ — one WASM block per tool (core/ pure logic, web/ browser
bindings, page/ SEO copy + form metadata, manifest.json schema).block-utils/ — shared Rust helpers used across blocks.cli/ — the gizza binary: runs any block headlessly via the wasmi runtime.tools/generator/ — renders each block's page/ into a static, standalone
HTML page (pkg/tools/<slug>/).js/ — small runtime JS/CSS shared by the generated tool pages.tests/ — Playwright end-to-end specs for generated tool pages, plus a few
node --test unit suites (js/*.test.js).scripts/ — toolchain bootstrap, the tool-hygiene gate, and the
scaffold-a-new-tool script.Bootstrap the toolchain (Rust + wasm targets, wasm-pack, Node, ffmpeg):
scripts/bootstrap-toolchain.sh
Build the canonical CLI/MCP WASM for a block:
scripts/build-block-wasm.sh <slug>
# New/changed blocks commit both ignored canonical artifacts:
git add -f blocks/<slug>/Cargo.lock blocks/<slug>/target/block.wasm
The script uses the pinned Rust toolchain, the committed dependency resolution,
and wafer-run-pin.txt. CI rebuilds and byte-compares the artifact. Browser
web/pkg/ output is deliberately not committed.
Build the CLI:
cargo build --manifest-path cli/Cargo.toml --release # → cli/target/release/gizza
Build one tool's browser WASM, then render generic (unbranded) static pages:
wasm-pack build blocks/<slug>/web --target web --release --out-dir pkg
cargo run --manifest-path tools/generator/Cargo.toml -- . # → pkg/tools/<slug>/
scripts/bootstrap-toolchain.sh builds browser WASM for every page-backed tool
before rendering the full catalog. Both blocks/*/web/pkg/ and /pkg are
ignored build output.
Serve them locally:
python3 -m http.server --directory pkg 8001
Pages with runtime = "model" run Transformers.js in a Web Worker. The pinned
browser runtime comes from npm install, and the page generator copies one
shared Transformers.js/ONNX bundle to pkg/tools/_model-runtime/. Model weights
are not committed or bundled into every page: the browser downloads the pinned
model revision on first use and caches it for later runs. The page declares that
download before processing; user images stay in the browser and are not sent to
an inference API.
Production hosting must serve the generated .wasm file (preferably with
application/wasm), allow the browser to fetch the configured model host, and
use HTTPS for WebGPU. Every model page should include a wasm device fallback
with a dtype supported by its pinned model for browsers without a usable GPU.
The background remover therefore needs no server GPU or API key. Its
configuration lives in blocks/image-background-remove-ai/page/meta.toml and
pins both the model revision and per-device dtype.
Run its normal browser test, or opt into the real network-backed model smoke test:
cd tests
npx playwright test --config=playwright.tool-pages.config.ts tool-page-image-background-remove-ai.spec.ts
RUN_MODEL_E2E=1 PW_WORKERS=1 npx playwright test --config=playwright.tool-pages.config.ts tool-page-image-background-remove-ai.spec.ts --grep "runs the pinned model"
The gizza CLI boots the wasmi runtime, loads a block's blocks/<slug>/target/block.wasm
artifact, and dispatches one tool call — so each tool has a single source of
truth (no separate CLI re-implementation). Tool schemas come from each block's
info().
# run a tool — positional, key=value, or full JSON
gizza tool calculator "2*2" # → 4
gizza tool web-fetch url=https://example.com
gizza tool image-resize url=https://…/cat.png width=640 --out thumb.png
gizza tool calculator --json '{"expr":"sqrt(16)"}'
# discover tools
gizza list # name + description for every tool
gizza describe calculator # the tool's JSON-Schema parameters
# machine-readable output for scripts / agents
gizza tool calculator "2*2" --json-out # full {_for_llm,_for_ui} envelope
Exit codes: 0 ok · 1 tool error · 2 usage/bad args · 3 unsupported in the
CLI. Image/video tools shell out to the system ffmpeg (install it to use them);
Browser-model tools (e.g. imagine and the image background remover) return
an unsupported_in_cli error here. gizza list/gizza tool only cover blocks
with a committed Cargo.lock + target/block.wasm. The existing corpus is
being migrated incrementally, so legacy blocks without those artifacts can
still ship pages but are not available in a clean-checkout CLI. Every new or
changed block is required to commit and verify both files.
gizza mcp serves the same tool set over the Model Context Protocol (stdio,
newline-delimited JSON-RPC) — register it with an MCP client instead of
shelling out, e.g. claude mcp add gizza -- /path/to/gizza mcp.
SKILL.mdSKILL.md (repo root) is a small static doc of the gizza tool … contract that
points agents at gizza list (the live tool set) and gizza describe <name>
(a tool's schema). It deliberately does NOT enumerate tools, so it stays tiny
and never drifts as tools are added.
The gizza-cli crate also exposes a small library API — run_tool(name, json),
list_tools(), describe_tool(name) — for Rust programs that want the tools
without shelling out. Full reference: cli/README.md.
npm install --no-audit --no-fund && npm test # js/*.test.js unit suites
cargo test --manifest-path cli/Cargo.toml
cargo test --manifest-path block-utils/Cargo.toml
cargo test --manifest-path tools/generator/Cargo.toml
# generated tool-page Playwright specs (after building the pages and a block's web/pkg)
cd tests && npm install && npx playwright test
See CONTRIBUTING.md for how to add or improve a tool. All contributions are made under the MIT license (see LICENSE).