[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80902":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":12,"openIssues":13,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":14,"stars7d":15,"stars30d":16,"stars90d":14,"forks30d":14,"starsTrendScore":14,"compositeScore":17,"rankGlobal":8,"rankLanguage":8,"license":18,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":21,"hasPages":19,"topics":22,"createdAt":8,"pushedAt":8,"updatedAt":23,"readmeContent":24,"aiSummary":25,"trendingCount":14,"starSnapshotCount":14,"syncStatus":13,"lastSyncTime":26,"discoverSource":27},80902,"sigil","rlouf\u002Fsigil","rlouf",null,"Python",46,4,33,2,0,6,13,2.1,"Apache License 2.0",false,"main",true,[],"2026-06-12 02:04:08","# Sigil\n\n[![CI](https:\u002F\u002Fgithub.com\u002Frlouf\u002Fsigil\u002Factions\u002Fworkflows\u002Fci.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Frlouf\u002Fsigil\u002Factions\u002Fworkflows\u002Fci.yml)\n[![PyPI](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fsigil-sh.svg)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fsigil-sh\u002F)\n[![Python](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fpyversions\u002Fsigil-sh.svg)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fsigil-sh\u002F)\n[![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-Apache--2.0-blue.svg)](LICENSE)\n\nNatural-language shell assistant.\n\nSigil turns short terminal intents into explicit, inspectable shell actions.\nAsk from local context, authorize web search, propose one command, delegate one\nagent step, or pursue a bounded goal without leaving your prompt.\n\n![15-second Sigil terminal demo](docs\u002Fdemo.gif)\n\n```sh\n, find files over 10 MB in this repo excluding .git\n,, run the relevant tests\n? what changed in this repo?\n?? what changed upstream in the latest release?\n@ fix the failing parser test\n```\n\nSigil is alpha software. It is ready for early shell users who are comfortable\nwith local LLM tooling, explicit confirmations, and occasional interface\nchanges.\n\n## Why Sigil?\n\nMost shell assistants blur together three very different operations:\nsuggesting, executing, and explaining. Sigil keeps those routes separate.\n\n| Need | Glyph | What happens |\n| --- | --- | --- |\n| \"Give me the command.\" | `,` | Proposes one command. Nothing runs. |\n| \"Do one agent turn.\" | `,,` | Runs one Pi invocation after confirmation. |\n| \"Do one routine turn.\" | `,,,` | Runs one Pi invocation without routine confirmation, within policy. |\n| \"Answer from local context.\" | `?` | Read-only answer with the read and search tools. No shell is exposed. |\n| \"Answer with web.\" | `??` | Read-only answer with the read, search, and web search tools. |\n| \"Work toward a goal.\" | `@` | Runs a bounded goal loop with checkpoints. |\n| \"Continue routinely.\" | `@@` | Runs a bounded goal loop with routine steps auto-approved within policy. |\n\nThe result is a shell workflow with small blast radius, durable state, and a\nplain CLI underneath the punctuation.\n\n## Install\n\nInstall the Python command, then install the shell binding:\n\n```sh\nuv tool install sigil-sh\nsigil install zsh\nsigil doctor\n```\n\nFor Bash:\n\n```sh\nuv tool install sigil-sh\nsigil install bash\nsigil doctor --shell bash\n```\n\nYou can also install with `pipx`:\n\n```sh\npipx install sigil-sh\n```\n\nTo try the current main branch before a tagged release:\n\n```sh\nuv tool install git+https:\u002F\u002Fgithub.com\u002Frlouf\u002Fsigil\n```\n\nThe Python package is named `sigil-sh` because `sigil` was not available as a\ndistribution name. The installed command is still `sigil`.\n\n`sigil install` copies the bundled binding to `~\u002F.sigil\u002Fshell\u002F\u003Cshell>\u002F` and\nadds an idempotent source block to `.zshrc` or `.bashrc`. Running it again\nupdates the binding without duplicating the rc block.\n\n## Requirements\n\n- Python 3.11+\n- zsh or Bash for shell bindings\n- A local OpenAI-compatible chat completions endpoint for command generation\n  and Pi-backed routes (default `http:\u002F\u002F127.0.0.1:8080\u002Fv1\u002Fchat\u002Fcompletions`)\n- `pi`, the [pi-mono](https:\u002F\u002Fgithub.com\u002Fearendil-works\u002Fpi) coding-agent CLI,\n  for `?`, `??`, `,,`, `,,,`, `@`, and `@@`. Only `,` works without it. Install\n  it with:\n\n  ```sh\n  curl -fsSL https:\u002F\u002Fpi.dev\u002Finstall.sh | sh\n  # or: npm install -g --ignore-scripts @earendil-works\u002Fpi-coding-agent\n  ```\n\n  Then point Pi at your model and confirm Sigil can see it with `sigil doctor`.\n- `glow` for Markdown rendering, optional but recommended\n\nUseful environment variables:\n\n```sh\nSIGIL_MODEL_URL=http:\u002F\u002F127.0.0.1:8080\u002Fv1\u002Fchat\u002Fcompletions\nSIGIL_MODEL_NAME=local-model\nSIGIL_MODEL_PATH=\u002Fpath\u002Fto\u002Fmodel.gguf\nSIGIL_STATE_DIR=$HOME\u002F.sigil\nSIGIL_ENABLE_PROMPT_MARKER=0\nSIGIL_ENABLE_TURN_CAPTURE=0\nSIGIL_GLOW_STYLE=notty\nSIGIL_GLOW_WIDTH=88\n```\n\n## Quick Start\n\nOnce the shell binding is installed, use the glyphs directly:\n\n```sh\n# Propose one command. In zsh, the command is inserted into the prompt buffer.\n, find wav files larger than 50 MB\n\n# Run one confirmed agent step.\n,, run the relevant tests\n\n# Ask from local read-only context.\n? why did the last command fail?\n\n# Ask with web search authorized.\n?? what changed in the latest release?\n\n# Pursue a goal with checkpoints.\n@ fix the failing parser test\n```\n\nUse stdin as context:\n\n```sh\ngit diff | ? review risky changes\ngit diff --name-only | , run the relevant tests\n```\n\nWhen stdin is piped into comma routes, Sigil previews the input and asks\nbefore using it. Question routes use piped input directly because they have\nno execute path.\n\n## A Typical Flow\n\n```sh\n# 1. Ask what changed.\n? summarize this repo state\n\n# 2. Ask for the smallest useful command.\n, run the focused tests for this change\n\n# 3. Let Sigil run exactly one action.\n,, run the focused tests\n\n# 4. Audit what happened.\nsigil events\nsigil events lineage\n```\n\nSigil stores command suggestions, question answers, and act steps with alpha\ntrust fields so you can inspect the route, mode, risk labels, and event inputs.\n\n## Glyph Reference\n\nInstalled zsh and Bash bindings expose these shortcuts:\n\n| Glyph | Name | Behavior |\n| --- | --- | --- |\n| `,` | recommend | Recommend one command. |\n| `,,` | step | Run one agent turn, confirming effects. |\n| `,,,` | auto step | Run one agent turn, auto-approving routine effects within policy. |\n| `?` | answer | Answer from local read-only context. |\n| `??` | web answer | Answer from local context plus web search. |\n| `@` | goal | Run a bounded goal loop with checkpoints. |\n| `@@` | auto goal | Run a bounded goal loop with routine auto-approval. |\n\nExamples:\n\n```sh\n, find wav files\n,, run the relevant tests\n,,, fix the failing parser test\n? why does git say this branch diverged?\n?? what does the remote branch contain?\n@ fix the failing parser test\n@@ update docs and run checks\n```\n\n`,` prints a command proposal. The zsh binding puts it in the editable prompt\nbuffer with `print -z` and records it in shell history. Bash records it in\nhistory. Proposals include terse risk labels such as `network · publish`.\n\n`,,` asks before handing the objective to Pi, gives Pi read\u002Fsearch\u002Fedit\u002Fwrite\ntools, and returns control to the shell after one bounded Pi invocation. That\ninvocation may include zero or more tool calls. `,,,` runs the same one-turn\nroute without routine confirmation. Bash calls inside those turns are blocked\nand handed off. `@` and `@@` repeat bounded Pi turns toward a\ndurable goal until completion, blockage, budget exhaustion, or interruption.\nAgent steps always stream Pi's raw tool calls and prose through `glow` or\n`cat`; they do not replace the final answer with a compact summary.\n\nQuestion routes do not expose Bash. If an answer recommends a command, it is\nplain answer text, not a tool call or terminal handoff.\n\nTo install the CLI without punctuation shortcuts:\n\n```sh\nsigil install zsh --no-glyphs\n```\n\n## Trust Model\n\nSigil's important user rules are:\n\n| Route | Mode | Rule |\n| --- | --- | --- |\n| `,` | propose | Model-authored proposal only. |\n| `,,` | execute-write | One confirmed Pi agent step. |\n| `,,,` | execute-write | One auto-approved Pi agent step within policy. |\n| `@` | execute-write | Bounded goal loop with checkpoints. |\n| `@@` | execute-write | Bounded goal loop with routine auto-approval. |\n| `?` | read-only | Local answer route with no Bash tool. |\n| `??` | read-only | Read, search, plus web answer route with no Bash tool. |\n\nTrust records include route, mode, risk labels, and simple input event ids.\nInspect them with:\n\n```sh\nsigil events\nsigil events lineage\n```\n\nFor details, see [docs\u002Ftrust-model.md](docs\u002Ftrust-model.md).\n\n## CLI\n\nThe glyphs are thin shell functions over a regular CLI:\n\n```text\nsigil command [--json] [PROMPT]\nsigil events [--limit N] [--json] [--raw]\nsigil events lineage [EVENT_ID] [--json]\nsigil session [show|list|clear] [--json]\nsigil status [--json]\nsigil install {zsh|bash} [--install-dir DIR] [--rc FILE] [--glyphs|--no-glyphs]\nsigil doctor [--shell auto|zsh|bash] [--json]\n```\n\nCopy-pasteable examples:\n\n```sh\nsigil command \"find files over 10 MB in this repo excluding .git\"\nsigil command \"show the largest directories\"\ngit diff --name-only | sigil command \"run the relevant tests\"\nsigil status\nsigil events\n```\n\nSee [docs\u002Fcli.md](docs\u002Fcli.md) for the user-facing CLI contract and JSON\nexamples.\n\n## State\n\nSigil writes event-sourced state under `~\u002F.sigil\u002F` by default. Set\n`SIGIL_STATE_DIR` to move it.\n\nInstalled Bash and zsh bindings set `SIGIL_SESSION_ID` once when the shell\nstarts, so separate terminal windows keep separate continuity. Override the\nboundary with `SIGIL_SESSION_ID` or `SIGIL_SESSION_DIR`.\n\nInspect state without calling a model:\n\n```sh\nsigil session show\nsigil session list\nsigil session clear\nsigil events\nsigil events lineage\n```\n\n## Project Scope\n\nSigil is:\n\n- A command-line tool and optional shell binding.\n- A local-model command proposal route.\n- A Pi-backed question and one-step edit route.\n- An evented state layer for shell continuity and audit history.\n\nSigil is not:\n\n- A public Python library. The Python package does not expose a supported API.\n- A background autonomous agent.\n- A replacement for reviewing commands and model output.\n\n## Development\n\nSet up the repo:\n\n```sh\nuv sync --group dev\n```\n\nRun the checks used by CI:\n\n```sh\nuv run pre-commit run --all-files\nuv run pytest\n```\n\nRender deterministic demo GIFs:\n\n```sh\nscripts\u002Frender-demo-gifs.sh\n```\n\nDemo tapes live in [docs\u002Fdemos](docs\u002Fdemos\u002F). They run the real Sigil CLI\nfrom this checkout while shimming only external dependencies such as the\nmodel server, `pi`, and `uv`.\n\n## License\n\nApache-2.0. See [LICENSE](LICENSE).\n","Sigil 是一个自然语言 shell 助手，它能够将简短的终端意图转化为明确可检查的 shell 操作。其核心功能包括通过特定符号（如 `,`、`??`、`@` 等）区分建议、执行和解释命令的不同操作路径，并支持从本地上下文查询信息、授权网络搜索以及追求有界目标等功能。该项目使用 Python 编写，适合那些熟悉本地 LLM 工具、愿意进行显式确认并能接受偶尔界面变化的早期 shell 用户，在日常开发和系统管理中提高效率。","2026-06-06 04:03:55","CREATED_QUERY"]