Skip to main content

An open-source offensive-security AI agent that lives in your terminal.

Project description

riftor

An open-source offensive-security AI agent that lives in your terminal. Find the rift. Open it. Cross through.

PyPI CI License: GPL-3.0

riftor demo

riftor is a Python TUI pentest assistant: a full-screen Textual interface backed by litellm, organised around the RIFT methodology — Recon → Intrusion → Foothold → Takeover.

It's cloud-first (Anthropic, OpenAI, OpenRouter, …) for the strongest agent behaviour, with local Ollama supported as an option.

Status: early (Phase 4a). Working agent: streaming chat, tool use with permission prompts + audit log, scope enforcement, RIFT stage tracking, a per-engagement findings store, and reports (markdown + HTML with CVSS). See todo.md for the roadmap.

Install

pip install riftor          # or: uv tool install riftor / pipx install riftor

Requires Python 3.11+ and a model — set one of ANTHROPIC_API_KEY, OPENAI_API_KEY, OPENROUTER_API_KEY (or run a local Ollama server).

export ANTHROPIC_API_KEY=sk-ant-...   # or OPENAI_API_KEY, etc.
riftor                                 # launch the TUI
riftor --config                        # show the config file path
riftor --version

On first launch riftor writes a config file and picks a default model from your environment keys (cloud-first); if no key is set but an Ollama server is running, it falls back to that.

From source

git clone https://github.com/Estudely/riftor && cd riftor
uv sync && uv run riftor

Docker

docker build -t riftor .
docker run -it --rm -e ANTHROPIC_API_KEY -v "$PWD:/work" riftor

The image is minimal (no nmap/httpx/etc.). For full recon tooling, run riftor on a host that has the tools installed, or extend the image.

Configure

~/.config/riftor/config.toml:

[riftor]
model = "anthropic/claude-sonnet-4-6"  # any litellm model id
# api_key = "sk-..."                   # prefer the provider's env var
temperature = 0.3
max_tokens = 2048
theme = "rift"
lore = true

# Local option (Ollama):
# model = "ollama_chat/llama3.1"
# api_base = "http://localhost:11434"

Workflow

1. Set scope        /scope add 10.0.0.0/24 example.com
2. Task the agent   "enumerate the web host and look for low-hanging fruit"
                    → it runs recon tools via bash (you approve), records
                      services/findings, and advances the R·I·F·T stage
3. Review           /findings
4. Report           /report            → .riftor/reports/report-*.md and .html

Out-of-scope targets are blocked (with an explicit per-call override). State lives in .riftor/ per working directory; sessions auto-save and resume.

Commands

Command Action
/help show commands
/clear clear the conversation (Ctrl+L)
/model [name] show or switch the model
/stage [R|I|F|T] show or set the RIFT stage
/scope [add|out|rm <t>|clear|on|off] manage in/out-of-scope targets
/findings list recorded findings
/report [md|html|both] write a pentest report to .riftor/reports/
/sessions · /resume <id> · /new manage saved sessions
/tools list available tools
/lore toggle the rift persona
/exit quit (Ctrl+C)

Esc cancels a running response. Dangerous tools (bash/write/edit) prompt for approval; every tool call is written to an audit log.

Use responsibly

riftor is for authorized security testing only. You are responsible for having explicit, written permission for any system you assess.

License

GPL-3.0.

Project details


Download files

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

Source Distribution

riftor-0.0.4.tar.gz (489.1 kB view details)

Uploaded Source

Built Distribution

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

riftor-0.0.4-py3-none-any.whl (55.9 kB view details)

Uploaded Python 3

File details

Details for the file riftor-0.0.4.tar.gz.

File metadata

  • Download URL: riftor-0.0.4.tar.gz
  • Upload date:
  • Size: 489.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for riftor-0.0.4.tar.gz
Algorithm Hash digest
SHA256 390a5aa1a07a9036d925a663057c1fa1373cad12d56a184c510b480a390bd4c4
MD5 5184ba1f4d4295abdc9a63c0d5fcdcce
BLAKE2b-256 54d07b9bec61f3866c855a63c815b4bb88d998baefd2c7bb65fc6d05ebf5f6a6

See more details on using hashes here.

Provenance

The following attestation bundles were made for riftor-0.0.4.tar.gz:

Publisher: release.yml on Estudely/riftor

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

File details

Details for the file riftor-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: riftor-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 55.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for riftor-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 34421f2a5eaf5b919089ef4bbb10db62d6cd31564bbb4fc25f5b7f523c024a58
MD5 2f3a50c9772dfacbf559a063b69275c1
BLAKE2b-256 e09b98679b3cecf0123511242b1c819bea5e9fc519a0e66f308ceddbe4783119

See more details on using hashes here.

Provenance

The following attestation bundles were made for riftor-0.0.4-py3-none-any.whl:

Publisher: release.yml on Estudely/riftor

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

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page