v0.2.0#
Stage 2 & 3 complete — agent module system, P2P networking, CLI/Web UI hardening, and dev agent built-in commands.
Agent Module System#
- Capability declarations: Agent packages declare supported module formats, built-in commands, and capabilities (
supports_daemonize,supports_relay) - Agent module registry: Server-side module inventory with YAML manifests, compatibility filtering by format/platform/architecture
- Managed mode: Agent-controlled module lifecycle with results flowing back through the loading agent’s channel; supports streaming results over multiple check-in cycles
- Daemonized mode: Payload runs independently; if the payload is an agent, it registers as a new child agent with parent-child relationship tracking
P2P Chaining & Relay#
- Agent-to-agent relay: Agents forward traffic for interior agents without direct teamserver contact
- P2P topology: Parent-child agent relationships tracked and visualized via
agents topologycommand and Web UI Topology page - Relay chain tracking: Full relay path queryable via
agents chain <id>andGET /agents/<id>/chain - Auto-topology discovery: Pipeline automatically discovers relay relationships from forwarded messages
- End-to-end encryption: Relay agents handle only opaque ciphertext
Dev Agent Enhancements#
- Built-in commands:
ls,ps,netstat,pwd,cat,cd,whoami,env,upload,download,load_module,unload_module - Loadable modules:
exec(command execution) andsysinfo(system reconnaissance) - TCP session mode: Interactive command shell over persistent TCP connections
- Smart result display: Formatted tables for directory listings and process info; colored error output
- Relay support: Dev agent can act as a P2P relay for interior agents
Web UI Refresh#
- P2P Topology page: Tree visualization of agent hierarchy with relay relationships
- Agent Modules page: Searchable module catalog with compatibility filtering and load-into-agent workflow
- Tools page: Renamed from “Agentless” — unified SSH/SMB/custom service interaction
- Enhanced Agent Detail: Capabilities tab, loaded modules tab with unload controls, relay tab
- Enhanced Agents table: Mode column, callback IP, relay status, real-time P2P updates via WebSocket
- Enhanced Listeners page: TCP and external listener types with
callback_protocolfield - Enhanced Builds page: Listener-based workflow (no manual callback entry)
- Improved Dashboard: Sessions card, P2P links card, relay agents card
- Auth improvements: Token validation on startup, refresh failure handling
CLI Refinement#
- Interactive TUI: Textual-based terminal UI with panels and split views
- Agent shell:
agents use <hostname>enters per-agent interactive shell with built-in commands, module loading, file transfers - Group shell:
agents group use <name>for multi-agent batching - Tools shell:
tools use <name>for interactive agentless sessions - Theme system: 5 themes (default, monokai, hotdog_stand, light, matrix) with Ctrl+P picker
- Path completion: Local filesystem (upload) and remote (via agent
ls) - Background tasks:
&suffix for async execution with results polling
Plugin System#
- Plugin inbox: Drop
.pyor.whlfiles into the inbox directory for auto-routing and installation - Plugin watcher: Background service monitors plugin directories for changes (configurable interval)
- Dependency auto-install: Modules declaring
dependenciesin metadata get pip packages installed at discovery time - Unavailable tracking: Modules with missing dependencies are tracked with reasons via
unavailable_modulesproperty
API Additions#
GET /agents/<id>/capabilities— agent package capabilitiesGET /agents/<id>/modules/loaded— list loaded modulesPOST /agents/<id>/modules/load— load agent modulePOST /agents/<id>/modules/unload— unload managed moduleGET /agents/topology— P2P topology graphPOST /agents/<id>/relay— set relayDELETE /agents/<id>/relay— remove relayGET /agents/<id>/chain— relay chainPOST /agentless/sessions— interactive agentless sessionGET /agentless/sessions— list sessionsDELETE /agentless/sessions/<id>— close sessionGET /agentless/sessions/<id>/output— poll session outputPOST /agentless/sessions/<id>/input— send session inputGET /api/v1/plugins/— list all pluginsPOST /agent-modules/refresh— refresh agent module registryGET /agent-modules/compatible/<agent_id>— compatible modules for agent
Collection Requests & File Explorer#
- Collection request workflow: Collectors can request file downloads from agents; operators approve or deny with full API/CLI/web UI support
- CollectionRequest model: Tracks request lifecycle (pending, approved, denied) with links to resulting file transfers
- File explorer: Web UI page showing agent filesystem trees built from cached
lsresults - Agent filesystem API:
GET /agents/<id>/filesystemreturns cached directory structure - Nav badge: Pending collection request count shown in web UI navigation
- Admin password reset: Web UI inline password reset for operators
Operational Polish#
- Comprehensive audit logging across all 39 mutating API routes
- Agent display names:
hostname:shortidformat for unambiguous agent resolution - Remote path completion: Cache-only from
lsresults (no implicit C2 traffic) - Local shell:
local_shellcommand and!prefix in all shells and TUI - File transfer display: Upload/download result formatters hide base64 blobs
- Dev agent: 10MB file transfer size guard
- Session agent polling: Mode-aware display with wake-event polling (~50ms for sessions vs beacon interval for beacons)
Bug Fixes#
- Fixed
builtin_commandskey mismatch causing commands to not appear - Fixed listener panel focus skip on Ctrl+L
- Fixed results command TUI hang with background tasks
- Fixed path completion double-slash issues
- Fixed SSH interactive session output formatting
- Fixed upload/download using FileTransfer ID instead of Task ID
v0.1.0#
Stage 1 complete — all core functionality validated with the Python dev agent.
Features#
- Teamserver: Single-process Python server with Flask REST API and WebSocket events
- CLI: Interactive operator shell with tab completion, multi-tab sessions, and JSON mode
- Web UI: React-based interface with real-time dashboards and xterm.js agent terminals
- Client Library: Typed Python client for all API endpoints
- Plugin System: Hot-reloadable server modules, transport plugins, agentless modules, and agent packages
- Engagement Isolation: Per-engagement SQLite databases with encrypted at-rest storage
- RBAC: Four-tier role model (Admin, Operator, Spectator, Collector) with dynamic collector grants
- Security: ECDH key exchange, AES-256-GCM wire encryption, PBKDF2 master keys, log redaction
- Agent Build Pipeline: Config stamping with encrypted configuration blobs
- Agentless Operations: Direct service interaction (SSH, SMB) with proxy and credential integration
- Credential Store: Auto-extraction from module results, search, and multi-format export
- File Transfers: Upload/download with SHA-256 hash verification
- Background Services: Dead agent detection, stale task cleanup, key rotation, task archival
- Audit Logging: Full action attribution with security event flagging