Skip to main content

pktai

AI-assisted packet analysis in your terminal 🚀🤖📦💻

pktai_logo

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 ngap automatically.
  • 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

  1. Optional: run a local LLM with Ollama (default model qwen3:latest):
ollama run qwen3:latest
  1. Launch pktai:
pktai
  1. Open a capture file: press o and 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 Stop to cancel.
  • Display filter (slash command): Type:
    • /df ngap && sctp.dstport == 38412
    • /df ip.src == 10.0.0.1 && tcp This 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 s to 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/matches raise a clear error.
  • 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

License

MIT — see LICENSE.

Download files

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

Source Distribution

pktai-0.2.0.tar.gz (2.0 MB view details)

Uploaded Source

Built Distribution

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

pktai-0.2.0-py3-none-any.whl (37.8 kB view details)

Uploaded Python 3

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

Hashes for pktai-0.2.0.tar.gz
Algorithm Hash digest
SHA256 93b85dcb8c680603ca6798452b2778e2b460edeab2fb794bf0ac7920cd1b2aa5
MD5 ea85b082dca404f8d47c648f7c27544d
BLAKE2b-256 c564be102bf33f24f67d13773826479a20d4b1beda0b2cca9f875fe519e03db6

See more details on using hashes here.

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

Hashes for pktai-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 add2dec5956876d6d83b78b0d92d6fd74bd7abc4a509ce8f0caf356c6e9187ed
MD5 d8aa4ef130fa600be5a1dfa225b5069a
BLAKE2b-256 bc3283540907f7e4843d116ef90646e55ddc1b97719544997b0bea6a75bd3b62

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 files

0.1.0

2 files

Supported by

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