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.
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: Phase 2. The agent can use tools (bash/read/write/edit/grep/glob/ webfetch) with permission prompts and an audit log. Scope enforcement and the engagement engine are next — see
todo.md.
Requirements
- Python 3.11+
- uv
- A model — set one of
ANTHROPIC_API_KEY,OPENAI_API_KEY,OPENROUTER_API_KEY(or run a local Ollama server)
Run
export ANTHROPIC_API_KEY=sk-ant-... # or OPENAI_API_KEY, etc.
uv sync
uv run riftor
On first launch riftor writes a config file and picks a default model from your environment keys (a cloud provider). If no key is set but an Ollama server is running, it falls back to that.
uv run riftor --config # show the config file path
uv run riftor --version
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"
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 |
/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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file riftor-0.0.1.tar.gz.
File metadata
- Download URL: riftor-0.0.1.tar.gz
- Upload date:
- Size: 45.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Linux Mint","version":"22.3","id":"zena","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ad2f24bc850f3b32705c70b86fad41af0780f3bf39a3465d391e7884a694a450
|
|
| MD5 |
e270ed929b7ed240e8d4b9429efabf04
|
|
| BLAKE2b-256 |
cc5a797f4aceac53591c2a205aeddb0c62d8937d1ba90ea6336f6a7753dba4a3
|
File details
Details for the file riftor-0.0.1-py3-none-any.whl.
File metadata
- Download URL: riftor-0.0.1-py3-none-any.whl
- Upload date:
- Size: 48.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Linux Mint","version":"22.3","id":"zena","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
be49e6c4d3e69252cee1ef18329181bd4c15791263f1e58a280ee5cbeeeec5d4
|
|
| MD5 |
ac9e924f8dd08036dfc269c58fede48f
|
|
| BLAKE2b-256 |
2160b3ed213491d89ba3957040009dcdc5c1b483b44d2b4026051c5e9528b444
|