AI-assisted packet analysis in your terminal 🚀🤖📦💻
Project description
pktai
AI-assisted packet analysis in your terminal 🚀🤖📦💻
Meet pktai — a modern, Textual-powered TUI that blends Wireshark-like workflows with an AI copilot. Open a pcap, browse packets, and chat with an on-device LLM (via Ollama) to explain what’s going on. Apply Wireshark-style display filters or just ask in natural language — pktai routes the request to the right tool, instantly.
Project URL: https://github.com/kspviswa/pktai
Demo : https://www.youtube.com/watch?v=GnPRs-cBtQM
Highlights
- Packet-first UI: Left pane shows packets and expandable per-layer details.
- Built-in Chat Copilot: Right pane is a chat that understands your capture context.
- Wireshark-like Filters: Apply display filters inline or via slash commands.
- NL → Filter: Ask “get me all NGAP packets” — pktai applies
ngapautomatically. - Instant Stop: Cancel in-flight LLM responses with a Stop button.
- Zero mouse, pure keyboard: Fast and ergonomic terminal UX powered by Textual.
Installation
Requires Python 3.10+.
- Using pip:
pip install pktai
- Using uv:
uv add pktai
This installs the pktai command.
Quickstart
- Optional: run a local LLM with Ollama (default model
qwen3:latest):
ollama run qwen3:latest
- Launch pktai:
pktai
- Open a capture file: press
oand pick a.pcap/.pcapng.
Using pktai
- Browse packets: Navigate the left pane; expand layers to inspect fields.
- Chat analysis: Ask questions in the right chat pane (e.g., “summarize traffic patterns”).
- Stop generation: While the model is responding, click
Stopto cancel. - Display filter (slash command): Type:
/df ngap && sctp.dstport == 38412/df ip.src == 10.0.0.1 && tcpThis applies the filter immediately without calling the LLM.
- Natural language filter: Ask “show only NGAP packets with dst port 38412” — pktai converts NL → display filter and applies it.
- Settings: Press
sto open a compact Settings modal; choose model and tune generation parameters.
Feature Deep Dive
- Agentic Orchestrator: Routes your input between Filter, Packet, and Chat agents.
- Filtering Engine: Tokenizer + parser + evaluator for a practical Wireshark-like subset:
- Protocol tokens (e.g.,
tcp,ngap), field presence (e.g.,ip.src), equality/inequality on common fields (e.g.,ip.src == 1.2.3.4,sctp.dstport != 38412), boolean&&/||with parentheses. - Unsupported operators like
contains/matchesraise a clear error.
- Protocol tokens (e.g.,
- LLM Abstraction:
LLMService(OpenAI-compatible) talks to Ollama; switch models easily. - Markdown Chat: Renders assistant replies nicely; optional expandable “Thought process”.
- Responsive UX: Soft-wrapping chat log, tight spacing, and a cancelable generation flow.
Tips & Troubleshooting
- If the chat doesn’t work, ensure Ollama is running and the model is available:
ollama run qwen3:latest. - To start without chat, simply use filtering and packet browsing; chat can be configured later.
Project
- Repository: https://github.com/kspviswa/pktai
License
MIT — see 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 pktai-0.2.0.tar.gz.
File metadata
- Download URL: pktai-0.2.0.tar.gz
- Upload date:
- Size: 2.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
93b85dcb8c680603ca6798452b2778e2b460edeab2fb794bf0ac7920cd1b2aa5
|
|
| MD5 |
ea85b082dca404f8d47c648f7c27544d
|
|
| BLAKE2b-256 |
c564be102bf33f24f67d13773826479a20d4b1beda0b2cca9f875fe519e03db6
|
File details
Details for the file pktai-0.2.0-py3-none-any.whl.
File metadata
- Download URL: pktai-0.2.0-py3-none-any.whl
- Upload date:
- Size: 37.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
add2dec5956876d6d83b78b0d92d6fd74bd7abc4a509ce8f0caf356c6e9187ed
|
|
| MD5 |
d8aa4ef130fa600be5a1dfa225b5069a
|
|
| BLAKE2b-256 |
bc3283540907f7e4843d116ef90646e55ddc1b97719544997b0bea6a75bd3b62
|