Skip to main content
The Wizard's Pick

The Wizard's Pick

A terminal assistant for authorized security testing, with local inference by default.

Status: Working, public. Version 0.2.0 is the current release.

CI Python License

[!WARNING] Pick proposes and can execute shell commands. Use it only on systems you own or have explicit written permission to test. You are responsible for the authorized targets, techniques, testing window, credentials, data handling, and operating environment.

What The Wizard's Pick does

Pick keeps assessment context, model conversation, command results, findings, and reports in a local SQLite-backed workflow. It uses an OpenAI-compatible model endpoint, configured by default for a project-local Ollama server at 127.0.0.1:11435.

flowchart LR
    U[Operator] --> P[Pick terminal]
    P -->|127.0.0.1:11435| O[Project-local Ollama]
    O --> M[DeepHat-V1-7B]
    P --> C[Shell command]
    C --> D[(SQLite session)]
    D --> R[Markdown report]

The model can return structured command proposals and findings. Pick records commands executed through the application and exports all recorded command and audit entries for a session, with bounded output excerpts.

Execution model

Pick is intentionally lean. It does not include a scope matcher, command denylist, sandbox, approval service, or output redaction. Commands are passed to the host shell as written. Operators who need those controls should provide them through the account, container, virtual machine, network, and engagement process used to run Pick.

Mode Behavior
manual Default. The model proposes commands; the operator runs them elsewhere and can paste the output back.
assisted Pick asks once before executing a proposal.
automated Pick executes parsed model proposals without confirmation, including proposals influenced by captured target output.

/exec always executes the supplied command, independent of the current mode. The default wall-clock timeout is 300 seconds, and combined captured output is limited to 1,000,000 bytes. Pick terminates the POSIX process group when either bound is reached. These resource bounds do not inspect or rewrite the command.

Requirements

  • Python 3.11 or newer
  • Linux or WSL2 for the bundled model setup script
  • x86-64 for the pinned Ollama archive
  • curl, tar, and sha256sum
  • approximately 20 GB of free storage for the runtime, downloaded GGUF, and imported model

The Python client may work on other platforms when you manage a compatible endpoint yourself. The repository's end-to-end setup and CI target Linux.

Install

Install the CLI from PyPI:

python -m pip install wizards-pick

A source checkout includes the project-local Ollama and model setup scripts:

git clone https://github.com/wizards-ecosystem/wizards-pick.git
cd wizards-pick
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -e .

See the release checklist for maintainer steps.

Set up the model

In the first terminal:

scripts/ollama-local.sh install
scripts/ollama-local.sh serve

In a second terminal:

scripts/ollama-local.sh build

build downloads DeepHat-V1-7B Q8_0 from a pinned Hugging Face revision, verifies its SHA-256 digest, and creates the deephat Ollama model in .wizards-pick/. To use another GGUF, set both DEEPHAT_GGUF_URL and DEEPHAT_GGUF_SHA256.

The application code is MIT-licensed. The default model repository identifies the model license as Apache-2.0. Review the model card and license before redistribution: mradermacher/DeepHat-V1-7B-GGUF.

scripts/bake_rope.py can write experimental YaRN metadata for larger context windows. Install the optional dependency with python -m pip install -e ".[rope]" and evaluate the resulting model for your workload.

Run The Wizard's Pick

wizards-pick

The first session wizard records targets and context, focus areas, exclusions, testing window, authorization reference, intensity, emergency contact, and notes. This information guides the model. Pick does not enforce it against generated commands.

Interactive commands

Command Behavior
/context, /scope Show the session context
/sessions List saved sessions
/plan [phase|all] Show an offline assessment plan
/tools Check common assessment tools on PATH
/mode manual|assisted|automated Change execution mode
/timeout [seconds] Show or set the positive command timeout
/exec <command> Execute a shell command and record the result
/paste Paste external output, ending with a line containing only EOF
/findings List recorded findings
/report [path] Export a Markdown report
/help, /exit Show help or quit

Data and network behavior

By default, CLI state is written to .wizards-pick/ under the directory where Pick starts. Set WIZARDS_PICK_DATA_DIR to choose another location. The setup script keeps its Ollama runtime, model, cache, home, and logs in the repository's .wizards-pick/ directory.

State directories are created with owner-only permissions on POSIX systems. SQLite files and reports are written with mode 0600. Reports and command history are unredacted and may contain sensitive assessment data.

Inference uses loopback by default. The setup commands download Ollama and the model, and executed assessment commands can use the network. WIZARDS_PICK_URL can point the client at another OpenAI-compatible endpoint, but Pick does not add authentication headers. A remote endpoint receives session context and conversation content.

Related settings:

Variable Default
WIZARDS_PICK_DATA_DIR <current directory>/.wizards-pick
WIZARDS_PICK_MODEL deephat
WIZARDS_PICK_OLLAMA_HOST 127.0.0.1:11435
WIZARDS_PICK_URL http://127.0.0.1:11435/v1/chat/completions
WIZARDS_PICK_CONTEXT_TOKENS 32768
WIZARDS_PICK_RESPONSE_TOKENS 2048

Development

python -m pip install -e ".[dev]"
make check
make release-check

make check runs Ruff, mypy, and pytest. The test suite does not require a model server or network access. See the contribution guide and security policy.

Maintained by Isaac Limb. Read the project writeup.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wizards_pick-0.2.0.tar.gz (130.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wizards_pick-0.2.0-py3-none-any.whl (30.9 kB view details)

Uploaded Python 3

File details

Details for the file wizards_pick-0.2.0.tar.gz.

File metadata

  • Download URL: wizards_pick-0.2.0.tar.gz
  • Upload date:
  • Size: 130.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for wizards_pick-0.2.0.tar.gz
Algorithm Hash digest
SHA256 a15ed8ebe7e21c8a10790955e7801ab996716f1ead1859507dfbf92d9f3c736f
MD5 c118bed939d2fcfa0b0cd17ca36fa417
BLAKE2b-256 05f364e932caa1a27ff2916aca15a453a8b2f652233aa8e966e6c932150385bb

See more details on using hashes here.

Provenance

The following attestation bundles were made for wizards_pick-0.2.0.tar.gz:

Publisher: publish.yml on wizards-ecosystem/wizards-pick

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wizards_pick-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: wizards_pick-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 30.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for wizards_pick-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2ab77b2418e1297f0d29350da517539e885b46d2d8145ec5c692773f0ab18010
MD5 7507ee60c3bdb88244e7504b92cc0f94
BLAKE2b-256 5dc07cafc913a3345b607885026abafb62694027fad4d0e1f1bd01ac7bb6aaf3

See more details on using hashes here.

Provenance

The following attestation bundles were made for wizards_pick-0.2.0-py3-none-any.whl:

Publisher: publish.yml on wizards-ecosystem/wizards-pick

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page