Real-time behavioral observability platform for Linux
See what's happening inside your Linux system as a living security graph
linscope transforms Linux kernel activity into a live visual behavioral system.
Instead of drowning in logs, you see:
- π΄ Live process graphs β who spawned what, when, and why
- π Network flow maps β real-time connection visualization
- β‘ Behavioral anomaly detection β not signature-based
- π¬ Attack replay β reconstruct incidents step by step
- π€ AI-powered analysis β local LLM for incident explanation
Built for SOC analysts, pentesters, and security researchers.
eBPF Collector β FastAPI Backend β WebSocket β React Frontend
β β β β
Kernel Event Real-time Live Graph Visualization
Stream Processing Updates
β
Detection Engine β Replay Engine β AI Assistant
If you have the packaged installer linscope_v1_amd64.deb, install it with:
sudo dpkg -i linscope_v1_amd64.deb
sudo apt-get install -fAfter the package installs, run the application using the installed binary or service. For example:
linscopeIf the command is not available, follow the regular source-based startup instructions in the Quick Start section below.
- Linux (Ubuntu 22.04+, Mint 21+)
- Python 3.10+
- Node.js 18+
- Root access for the collector
- eBPF dependencies:
bpfcc-tools,python3-bpfcc,linux-headers-$(uname -r),bpftrace - Optional: local Ollama for AI analysis
cd linscope
sudo apt update
sudo apt install -y bpfcc-tools python3-bpfcc linux-headers-$(uname -r) bpftrace
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
npm installis independent of the Python virtual environment.
cd linscope/frontend
npm installIf you want the AI Analyst and incident analysis features to work locally, install Ollama and start its local server.
# Follow Ollama install instructions from https://ollama.com/docs/installation
curl -fsSL https://ollama.com/install.sh | sudo bashThen start the Ollama API server:
ollama serve --port 11434By default, linscope will use http://localhost:11434 for Ollama.
You can override this with OLLAMA_URL=http://localhost:11434 in your environment.
If you want VirusTotal IOC lookups, run:
bash setup-virustotal.shThen set your VIRUSTOTAL_API_KEY in .env.example or a local .env file.
Terminal 1 β Backend
cd linscope/backend
python3 -m uvicorn main:app --reload --port 8000Terminal 2 β Collector
cd linscope/collector
sudo PYTHONPATH=/usr/lib/python3/dist-packages python3 main.pyTerminal 3 β Frontend
cd linscope/frontend
npm run devOpen http://localhost:3000 π
| Feature | Status | Description |
|---|---|---|
| Process Monitoring | β | eBPF process exec/fork/exit events |
| Network Monitoring | β | NetworkMonitorV2 with /proc/net/tcp fallback |
| File Syscall Monitoring | β | Experimental open/unlink tracking |
| Live Graph | β | Real-time behavioral graph rendering |
| Timeline View | β | Zoom, search, PID filter |
| Replay Engine | β | Speed control and seek |
| Detection Engine | β | Rule-based MITRE-style detection |
| Alerts Panel | β | Real-time alert streaming |
| AI Analyst | β | Local Ollama + Groq support |
| Virtual Scrolling | β | O(1) DOM rendering |
| Metric | Before | After | Improvement |
|---|---|---|---|
| Max Events/sec | 500 | 2000+ | 4x |
| FPS | 15-20 | 45-100 | 3x |
| Memory usage | 250-300MB | 45-100MB | 3x |
| DOM nodes | 1000+ | 50-150 | 10x |
| Method | Endpoint | Description |
|---|---|---|
| GET | / | Health check |
| POST | /api/events/batch | Ingest event batches from collector |
| GET | /api/events | Fetch stored events |
| GET | /api/alerts | Fetch alert history |
| POST | /api/alerts/feedback | Submit alert feedback |
| POST | /api/ai/chat | AI chat streaming |
| POST | /api/ai/analyze-incident | Incident analysis |
| WebSocket | /ws | Real-time event stream |
| WebSocket | /ws/alerts | Alert stream |
linscope/
|
βββ README.md # Project overview, installation, usage, and features
βββ LICENSE # Apache 2.0 license file
βββ .gitignore # Files/folders ignored by Git
βββ .env.example # Example environment variables for local config
βββ setup-virustotal.sh # Helper script to configure VirusTotal integration
βββ requirements.txt
|
βββ backend/ # FastAPI backend and AI integration
| |
β βββ main.py # Backend application entrypoint
β βββ detection_engine.py # Detection rules and alert generation
β βββ ai_service.py # Ollama/Groq AI service integration
β βββ virustotal.py # VirusTotal IOC lookup router
β βββ backend.log # Backend runtime log file
β βββ linscope.db # Local SQLite event store
β βββ api/ # Backend API package
β β βββ __init__.py # API package initializer
| |
| |
β βββ src/ # Backend utilities and shared helpers
β βββ __init__.py
|
|
|
βββ collector/ # eBPF collector and event emitter
| |
β βββ main.py # Collector entrypoint, starts process/network monitors
β βββ mock_collector.py # Synthetic event generator for testing
β βββ __pycache__/ # Compiled Python bytecode cache
| |
| |
β βββ src/
β βββ event_emitter.py # Sends event batches to backend
β βββ network_monitor_v2.py # Network monitor with fallback logic
β βββ process_monitor.py # Process tracking via eBPF
β βββ file_monitor.py # Experimental file syscall tracking
|
|
βββ frontend/ # React frontend app
| |
β βββ package.json # Frontend npm package manifest
β βββ package-lock.json # Locked frontend dependency versions
β βββ tsconfig.json # TypeScript compiler config
β βββ vite.config.ts # Frontend build and dev server config
β βββ index.html # Browser app shell
β βββ metadata.json # App metadata and settings
β βββ README.md # Frontend-specific README
β βββ .gitignore # Frontend ignored files
β βββ dist/ # Built frontend assets
β βββ frontend.log # Frontend runtime log file
β βββ icons/ # UI icon assets
β βββ node_modules/ # Installed npm packages
| |
β βββ src/
β βββ App.tsx # Main React app component
β βββ main.tsx # React entrypoint rendering App
β βββ index.css # Global frontend styles
β βββ types.ts # Shared TypeScript types
β βββ vite-env.d.ts # Vite environment type defs
β βββ lib/ # Utility modules and helpers
β β βββ utils.ts
| |
| |
β βββ workers/ # Web Workers for performance offload
β β βββ anomalyDetection.ts
| |
| |
β βββ components/ # UI components and panels
β β βββ AIChat.tsx
β β βββ AlertsPanel.tsx
β β βββ AppLayout.tsx
β β βββ LiveGraph.tsx
β β βββ ReplayView.tsx
β β βββ RightPanel.tsx
β β βββ SettingsPanel.tsx
β β βββ Sidebar.tsx
β β βββ TimelineView.tsx
β β βββ VirtualEventFeed.tsx
| |
β βββ hooks/ # React hooks for state and data
β βββ useAlerts.ts
β βββ usePanelState.ts
β βββ useVirusTotal.ts
β βββ useWebSocketAdaptive.ts
|
βββ docs/ # Documentation and contribution guides
βββ venv/ # Python virtual environment
collector/main.pyrequires root and usesPYTHONPATH=/usr/lib/python3/dist-packagesfor compatibility.- The AI features work best with a running local Ollama server.
- Use
.env.exampleto configure optional API keys for Ollama, Groq, Gemini, and VirusTotal.
Contributions welcome! See docs/CONTRIBUTING.md.
Apache 2.0 β see LICENSE.
- eBPF & BCC communities
- FastAPI & React ecosystems



