The detection workbench for people who live in the terminal · KQL · SPL
brew install 0xMishee/tap/killyFive steps, one terminal. Write the query and watch it get flagged, run it, hunt in a notebook, ship it as a pull request.
Killy at your desk and cibo in CI run one engine. What flagged it at your desk is exactly what blocks the pull request.
Write and fix in the terminal. Findings as you type.
mod+s opens the pull request with diff, backtest and gate.
CI runs the same policies, pinned by .killy.lock.
Only rules that pass the gate reach production.
detections/ ├─ .killy.yaml ├─ .killy.lock ├─ endpoint/ │ ├─ lsass-access.yaml │ ├─ rundll32-network.yaml │ └─ wmi-persistence.yaml └─ splunk/ └─ lolbin-download.spl
on: pull_request jobs: analyze: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: brew install 0xMishee/tap/cibo - run: cibo analyze detections/
179 policies never touch a model. The other 29 ask yes/no questions, and only once you switch them on. Every call is logged before it leaves. Every answer is advisory.
The exact line is written to the local audit log before every call; if it can't be written, nothing is sent. Works with Jev, Laya on your own machine, Claude, OpenAI, Gemini or your company's gateway.
Each policy asks one question. Pick a class to see what fails and what fixes it.
Every finding has a stable ID. Look it up, silence it with // killy:ignore and a reason, or add your own policies in a team pack. Covers KQL for Sentinel and Defender XDR; SPL for Splunk is on the way.
Goblin mode rips the chrome off: keys only. which-key menus, window chords, Telescope-style search, a floating shell. If your fingers know Neovim, they already know Killy.
which-keyPause after a chord to see what follows.
<C-w> _ |The query, the results or one cell, full screen.
gt, tabpagesSearch, Notebooks, Library, Docs, Settings.
Telescopefn: wl: det: doc: narrow it down.
toggletermYour own shell, floating over any screen.
:setEvery setting, with completion.
Editor keys are VS Code style in v1; a vim preset is planned.
Save any result as a local dataset and query it offline. Scrubbing runs before anything is written, so you share the evidence, not the people in it.
Datasets live in your data folder, with a 20 GB soft quota per store.
Open a Search tab on it: same KQL, same policies, run by a local engine.
Nothing is downloaded, saved or exported on its own. Results stay in memory until you save or pin them.
API keys come from the keyring, the environment or a command, never a config file.
Coming soon · Killy and cibo ship with Homebrew
brew install 0xMishee/tap/killybrew install 0xMishee/tap/ciboEP · End of Transmission