PAGES
← all tools
◆ Malware Analysis

CAPEv2

open-source

CAPEv2 is a malware sandbox that executes malicious files in an isolated environment whilst instrumenting their dynamic behaviour and collecting forensic artefacts.

Summary

CAPEv2 is an open-source malware sandbox, free to use, that runs suspicious files in an isolated Windows or Linux environment while instrumenting their behavior and capturing forensic artefacts like process activity, network traffic (PCAPPCAPA packet capture, recorded network packets that can be inspected later. Analysts use it to reconstruct communication and investigate protocol behavior or suspicious traffic.), screenshots, and full memory dumps. It is deployed as a self-hosted service, typically distributed across dedicated analysis machines, and a free hosted demo instance exists for anyone to try before standing up their own. It targets malware analysts and SOCSOCA security operations center, the team or function that monitors threats, investigates alerts and coordinates incident response. Its work can be internal, outsourced or shared. teams doing incident response rather than developers or compliance staff, and its README traces its lineage from Cuckoo Sandbox, positioning itself as a successor that adds automated unpacking, YARA-driven config extraction, and threat-intelligence enrichment via ThreatFox and Malpedia. First committed in 2019, it remains under active development with over 200 contributors and roughly 900 commits in the past year.

CAPEv2 is a malware sandbox that executes malicious files in an isolated environment whilst instrumenting their dynamic behaviour and collecting forensic artefacts.

How CAPEv2 helps

What is this file actually doing once it runs, not just what it looks like statically?

executes the sample in an isolated Windows or Linux environment while hooking its API calls, then reports the processes, files created or deleted, and registry changes it produced

Is this binary talking to anything on the network, and to whom?

captures full network traffic as a PCAP alongside the run, so contacted hosts and protocols can be inspected directly

Which malware family is this, and does it match something already catalogued?

classifies the sample against behavioral and network signatures and against YARA rules on the unpacked payload, then cross-references contacted IPs and domains with ThreatFox and pulls family cards from Malpedia

Can this sample's configuration be pulled out without reverse-engineering it by hand?

runs static and dynamic configuration extraction plus an automated unpacking stage driven by YARA-programmable debugger signatures, so the decrypted config surfaces without manual unpacking

What did the malware do to memory and the desktop that a log wouldn't show?

takes screenshots of the desktop during execution and produces full memory dumps of the target system for later forensic review

Did a dropped file get misclassified because it has no recognizable header?

runs the file through a deep-learning content-type model that labels script types and headerless payloads that traditional signature-based typing would only mark as unidentified data

all 25 features, with the evidence for each →

Languages

Not documented

Features

25 capabilities across 2 capability groups

Built from CAPEv2's releases, docs, README and our own runs. “Seen” marks the month we first spotted a release the vendor didn't date. Group names and tags are our labels.

Compare with peers →

  • CAPEv2 covers 2 of the 8 investigation and response capabilities we track.

What CAPEv2 offers you

  • Plugin API support2
  • Plugin system2
  • JSON data export1
  • Multi-tenant management1
  • Role-based access control1
  • Scripting language support1
Malware sandbox analysis 2 features Investigation and response since 2026
Browser extension package monitoring shipped Monitors browser extension activity during analysis by supporting `firefox_ext`, `chromium_ext`, and `tor_browser` packages in `browsermonitor`, collecting and uploading a structured requests log when analysis ends. 9 releases · first seen Oct 2026

Shared capability: Malware sandbox analysis

Also counts toward: JSON data export

release 9 total

  • Captures requestBody (formData and decoded raw bytes up to 4 KB) via webRequest.onBeforeRequest and records HTTP statusCode in onCompleted in the extra/browser_extension, with O(1) requestId-keyed lifecycle correlation and debounced event flushing. commits-2026-10-08 · Oct 2026 · source · release history
  • Debounces storeNetworkData and sendEvents with a 500 ms debounce and 2000 ms max wait to reduce redundant writes on bursty pages. commits-2026-10-07 · Oct 2026 · source · release history
  • Correlates request lifecycle events (onBeforeRequest, onBeforeSendHeaders, onCompleted, onErrorOccurred) by requestId, with O(1) deduplication via entriesByDedupKey keyed on method + URL + requestBody. commits-2026-10-07 · Oct 2026 · source · release history
  • Adds data_collection_permissions to manifest.json as required by Mozilla AMO. commits-2026-10-07 · Oct 2026 · source · release history
  • Records HTTP statusCode in browser.webRequest.onCompleted for each observed request. commits-2026-10-07 · Oct 2026 · source · release history
  • Registers a single top-level browser.downloads.onChanged listener using browser.downloads.search instead of nesting a new listener per onCreated event. commits-2026-10-07 · Oct 2026 · source · release history
MSI installer sample submission shipped Accepts MSI installer files as submissions by excluding them from the office-file check that would otherwise reject them. 2 releases · 1 other source · first seen Aug 2026

Shared capability: Malware sandbox analysis

release

  • Improves analyzer/windows: honors enforce_timeout so analysis runs for the full timeout even when package.start() fails, instead of aborting immediately; expands environment variables in executiondir and curdir inside Process.execute(); and falls back to CreateProcessW without… commits-2026-10-08 · Oct 2026 · source · release history
  • MSI Installer files are now excluded from the office file check, broadening submission handling for installer-based samples. commits-2026-07-20 · Aug 2026 · source · release history

example

  • Keep an analysis alive for the full configured timeout even if the package fails to start — useful for installers that trigger UAC elevation and raise CuckooPackageError on launch. enforce_timeout = yes commits-2026-10-08 · Oct 2026 · source
Static malware analysis 1 feature Investigation and response since 2026
Junk-file filter bypass for on-demand analysis shipped Provides an `ignore_junk_filter` submission option that skips the junk-extension and junk-name filters, allowing files such as `.txt` polyshells and files unpacked from archives to be submitted and analyzed on demand. 3 releases · first seen Sep 2026

Shared capability: Static malware analysis

release

  • Adds PDB/MSVC symbol file entries (b".pdb", "Microsoft Roslyn C# debugging symbols", "MSVC program database", "Microsoft C/C++ MSF", "Microsoft C/C++ program database") to JUNK_EXTENSIONS and JUNK_MAGICS in demux.py so symbol files are skipped by junk_filter unless ignore_junk_filter is enabled,… commits-2026-10-08 · Oct 2026 · source · release history
  • Extends ignore_junk_filter support into archive extraction inside demux.py, so files unpacked from archives are also analyzed when the option is set. commits-2026-09-29 · Sep 2026 · source · release history
  • Adds ignore_junk_filter=1 submission option to bypass the junk-extension/junk-name filter (JUNK_EXTENSIONS, JUNK_NAMES) so files like .txt polyshells can be analyzed on demand.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ commits-2026-09-29 · Sep 2026 · source · release history
Other / not yet classified 22 features Features we have not matched to a capability yet. A suggested match is marked.
Plugin hook registry for query and report extension shipped Provides a lightweight hook registry in `hooks.py` with named slots for MongoDB, SQL, and Elasticsearch query filters and report hooks, allowing plugins to intercept and modify queries without patching CAPEv2 core; hooks are wired into `mongo_find`/`mongo_find_one`, `list_tasks`/`count_matching_tasks`, and Elasticsearch search bodies, and pass through unchanged when no plugin is registered. 5 releases · first seen Oct 2026

Also counts toward: Plugin API support, Plugin system

release

  • CAPEv2 adds a generic plugin hook system and startup extension loader in lib/cuckoo/common/hooks.py, letting single-tenant installs opt in to extensions without incurring runtime or schema overhead. commits-2026-10-27 · Nov 2026 · source · release history
  • Wires apply_mongo_filter into dev_utils/mongodb.py so registered MongoDB query filters are automatically applied in mongo_find and mongo_find_one (bypass with no_hooks=True). commits-2026-10-26 · Oct 2026 · source · release history
  • Wires apply_es_filter in lib/cuckoo/common/cape_utils.py and lib/cuckoo/common/web_utils.py to wrap Elasticsearch search bodies via the hook registry. commits-2026-10-26 · Oct 2026 · source · release history
  • Wires apply_sql_task_filter into lib/cuckoo/core/data/tasking.py so registered SQL task filters are applied in list_tasks() and count_matching_tasks(). commits-2026-10-26 · Oct 2026 · source · release history
  • Adds lib/cuckoo/common/hooks.py: a lightweight plugin hook registry exposing register_mongo_filter, register_sql_task_filter, register_es_filter, and register_report_hook, replacing inline tenancy logic with zero-overhead hooks that pass queries through unchanged when no plugin is… commits-2026-10-26 · Oct 2026 · source · release history
Tenancy plugin extraction and multi-cloud object storage shipped Extracts multi-tenancy and multi-cloud object storage logic from CAPEv2 core into the standalone `CAPESandbox/CAPE-tenancy` plugin repository, removing inline config stanzas and web modules from the main codebase and requiring deployments to migrate to the plugin. 5 releases · first seen Oct 2026

release

  • CAPEv2 now supports vendor-neutral object storage backends — s3, gcs, azure, and local — configured under the [object_storage] section via the opt-in lib.tenancy package. commits-2026-10-27 · Nov 2026 · source · release history
  • Task.tenant_id and Task.visibility columns are removed from lib/cuckoo/core/data/task.py; code or queries referencing these fields will break (the Alembic migration 3a1b_tenant_visibility is preserved as a no-op for continuity). commits-2026-10-26 · Oct 2026 · source · release history
  • Integrates lib/tenancy/ as a self-contained library for multi-tenancy and multi-cloud object storage, extracted from CAPEv2 core into the standalone CAPESandbox/CAPE-tenancy plugin repository. commits-2026-10-26 · Oct 2026 · source · release history
  • The [multitenancy], [central_mode], [centralstore], and machine_info_token stanzas are removed from conf/default/cuckoo.conf.default, conf/default/api.conf.default, and conf/default/reporting.conf.default; deployments relying on these config stanzas must migrate to the CAPESandbox/CAPE-tenancy plugin. commits-2026-10-26 · Oct 2026 · source · release history
  • The standalone web modules web/web/tenancy_optional.py and web/users/tenancy.py are deleted; imports of these modules will fail. commits-2026-10-26 · Oct 2026 · source · release history
Tenant-scoped query isolation via plugin hooks shipped Allows plugins to register MongoDB query filters and SQL task filters that restrict result sets to a specific tenant, replacing removed inline `tenant_id` filtering in the core codebase. 1 release · 4 other sources · first seen Oct 2026

Also counts toward: Plugin API support, Plugin system

release

  • Run utils/tenancy_reconcile.py with --dry-run, --adopt-public-from-reports, --demote-public, or --task <id> to restamp MongoDB/Elasticsearch reports, preserve public task visibility in task_acl, and drop legacy inline-tenancy SQL columns. commits-2026-10-27 · Nov 2026 · source · release history

example

  • Reconcile a single task's ACL and visibility after migrating from inline tenancy SQL columns to the new task_acl side-table. python utils/tenancy_reconcile.py --task 14 commits-2026-10-27 · Nov 2026 · source
  • Dry-run the tenancy reconcile tool to preview which MongoDB/Elasticsearch reports would be restamped before committing changes on an upgraded install. python utils/tenancy_reconcile.py --dry-run --adopt-public-from-reports commits-2026-10-27 · Nov 2026 · source
  • Register a custom MongoDB query filter plugin to enforce tenant-scoped result isolation without patching CAPEv2 core. from lib.cuckoo.common.hooks import register_mongo_filter def my_tenant_filter(query: dict) -> dict: query['info.tenant_id'] = MY_TENANT_ID return query register_mongo_filter(my_tenant_filter) commits-2026-10-26 · Oct 2026 · source
  • Register a SQL task filter to restrict list_tasks() results to a specific tenant, replacing the removed inline tenant_id filtering. from lib.cuckoo.common.hooks import register_sql_task_filter def my_sql_filter(query): from lib.cuckoo.core.data.task import Task return query.filter(Task.owner == MY_USER_ID)… commits-2026-10-26 · Oct 2026 · source
Structured JSON log output shipped Emits side-by-side single-line JSON log files compatible with Google Cloud Logging and Fluentd, enabled via a config setting or environment variable, with a bundled Fluentd configuration for ingestion. 2 releases · 2 other sources · first seen Oct 2026

release

  • Updates extra/cape-fluentd.conf to tail *.json.log files with format json for Fluentd ingestion. commits-2026-10-17 · Oct 2026 · source · release history
  • Adds StructuredJsonFormatter and init_json_file_handler in lib/cuckoo/core/log.py to emit side-by-side single-line JSON log files (*.json.log) compatible with Google Cloud Logging / Fluentd, enabled via json_logs = on in logging.conf or the CAPE_JSON_LOGS=1 environment variable.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ commits-2026-10-17 · Oct 2026 · source · release history

example

  • Enable structured JSON logging so CAPE emits machine-readable *.json.log files ingestible by Fluentd or Google Cloud Logging alongside human-readable logs. json_logs = on color_logs = off commits-2026-10-17 · Oct 2026 · source
  • Enable JSON logging without editing config files — useful in containerised or CI environments where the config is baked in. CAPE_JSON_LOGS=1 python3 cuckoo.py commits-2026-10-17 · Oct 2026 · source
Task and machine extensible attributes shipped Adds a generic JSON attributes column to the Machine and Task models, used to persist distributed-analysis metadata such as the originating main task ID and parent sample. 3 releases · first seen Oct 2026

release

  • Propagates main_task_id and task_label through ResultServer.add_task and ResultServer.del_task into HandlerContext, ProtocolHandler, FileUpload, LogHandler, and BsonStore log messages in both single-process and multiworker modes. commits-2026-10-17 · Oct 2026 · source · release history
  • Propagates main_task_id (from Task.get_attribute('main_task_id')) into AnalysisLogger, AnalysisManager.run, GuestManager, and Scheduler logs, formatting log lines as Task #<id> (<main_task_id>) to match distributed task formatting. commits-2026-10-17 · Oct 2026 · source · release history
  • Adds a generic attributes JSON column to Machine and Task models, and uses Task.attributes to store distributed main_task_id and parent_sample. commits-2026-10-08 · Oct 2026 · source · release history
Batch task deletion with partial-failure reporting shipped Processes batch task deletions individually so that one failure does not abort the entire batch, returning a structured partial-error field instead of a generic 500 response. 3 releases · first seen Aug 2026

release

  • Adds ON DELETE CASCADE to errors.task_id foreign key so task deletion automatically removes associated error rows. commits-2026-10-08 · Oct 2026 · source · release history
  • Adds per-task try/except in APIv2 batch delete loops so partial-apply failures are reported with a partial_error field rather than returning a bodiless 500. commits-2026-07-20 · Aug 2026 · source · release history
  • The API v2 batch-delete endpoint now reports partial failures per task (individual try/except per task in batch loops) and returns a partial_error field instead of a bodiless 500, with SQL delete committed before irreversible folder/Mongo deletes for rollback safety. commits-2026-07-20 · Aug 2026 · source · release history
Group-based sandbox resource entitlement shipped Controls which VMs, routes, tags, interactive sessions, and timeouts a user may discover and request at submission time, enforced via a Django Group-based policy in `lib/tenancy/resources.py`. 2 releases · first seen Oct 2026

Also counts toward: Multi-tenant management

release

  • Manage multi-tenancy entitlements with GroupSandboxPolicy to assign per-group VM allocations, network routes, and machine tags, backed by a side-table TaskAcl with monotonic visibility_seq compare-and-swap synchronization, under the [multitenancy] and [object_storage] config sections in… commits-2026-10-27 · Nov 2026 · source · release history
  • Adds Django Group-based sandbox resource entitlement policy in lib/tenancy/resources.py, controlling which VMs, routes, tags, interactive sessions, and timeouts a user may discover in the UI/API and request at task submission time. commits-2026-10-26 · Oct 2026 · source · release history
Distributed CAPE API authentication shipped Adds an optional token-based authentication layer to the Distributed CAPE API, requiring callers to supply a valid `X-API-Token` header when `auth_token` is configured. 1 release · 1 other source · first seen Oct 2026

release

  • Adds optional auth_token setting under [distributed] in conf/default/distributed.conf.default; when set, the Distributed CAPE FastAPI app enforces X-API-Token header validation on all requests.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ commits-2026-10-07 · Oct 2026 · source · release history

example

  • Protect your Distributed CAPE node API so only authorised callers can register nodes or query task status. auth_token = mysecrettoken123 commits-2026-10-07 · Oct 2026 · source
Custom configuration parser override shipped Allows local configuration parsers placed in `custom/parsers/` to take precedence over same-named parsers in the installed CAPE-parsers package, without modifying that package. 1 release · 1 other source · first seen Oct 2026

release

  • Documents custom/parsers/ under the CAPE root as the supported location for local configuration parsers, where a custom parser takes precedence over an installed one with the same name.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ commits-2026-09-30 · Oct 2026 · source · release history

example

  • Override or add a configuration parser locally without modifying the installed CAPE-parsers package — place your parser in custom/parsers/ and it will take precedence over any same-named installed parser. custom/parsers/ commits-2026-09-30 · Oct 2026 · source
Anti-VM evasion bypass (PCI vendor ID spoofing) shipped Spoofs PCI vendor IDs to defeat Al-Khaser QEMU fingerprint checks, reducing the chance a sample detects it is running in a virtual environment. 2 releases · first seen Aug 2026

release

  • New PCI vendor ID spoofing capability to bypass Al-Khaser QEMU detection checks (Qemu.cpp vendor ID fingerprint). commits-2026-07-20 · Aug 2026 · source · release history
  • Adds PCI vendor ID spoofing to bypass Al-Khaser QEMU detection checks. commits-2026-07-20 · Aug 2026 · source · release history
Multi-tenant task deletion access control shipped Restricts task deletion to the original submitter or a box-admin, enforced through authorization guards in the multi-tenant API layer. 2 releases · first seen Aug 2026

Also counts toward: Role-based access control

release

  • New require_task_delete and can_delete_task authorization guards added to the multitenancy access-control layer, gating task deletion to submitter or box-admin roles. commits-2026-07-20 · Aug 2026 · source · release history
  • New require_task_delete / can_delete_task authorization guards in the multi-tenant API enforce that only the submitter or a box-admin can delete a task (public policy). commits-2026-07-20 · Aug 2026 · source · release history
Remus malware detection and config extraction shipped Detects the Remus malware family and extracts its configuration dynamically during analysis. 2 releases · first seen Aug 2026

release

  • New Remus malware family detection and dynamic config extraction added to CAPE's detection pipeline. commits-2026-07-20 · Aug 2026 · source · release history
  • Adds Remus malware detection and dynamic config extraction. commits-2026-07-20 · Aug 2026 · source · release history
Threat intelligence enrichment shipped Enriches analysis reports by querying ThreatFox for contacted IPs/domains and Malpedia for malware family cards, annotating network indicators with threat tags and family metadata. 2 releases · first seen Aug 2026

release

  • New modules/processing/threatintelligence.py processing module (runs at order=22) queries ThreatFox for contacted IPs/domains and Malpedia for malware family cards, annotating network hosts with threat tags and writing results to results['threatintelligence'] with providers, indicators, families, and… commits-2026-07-20 · Aug 2026 · source · release history
  • New modules/processing/threatintelligence.py processing module (runs at order=22) enriches analysis reports with two phases: an indicator phase that queries ThreatFox to annotate contacted IPs/domains with threat tags, and a family phase that fetches descriptive cards (name, aliases, description, references,… commits-2026-07-20 · Aug 2026 · source · release history
Pebble worker pool lifecycle management shipped suggested Provides bounded teardown and a shared health check for the PebbleEngine and extractor pool, preventing permanent hangs on unresponsive D-state workers. 1 release · first seen Nov 2026

Suggested capability: Malware sandbox analysis. This is our guess, not confirmed.

release

  • CAPEv2 adds lib/cuckoo/common/pebble_utils.py with teardown_pool() and is_pool_healthy() to give the PebbleEngine and extractor pool bounded teardown and a single shared health check, preventing permanent hangs on D-state workers. commits-2026-10-27 · Nov 2026 · source · release history
HTML scraping during analysis shipped Provides an optional auxiliary module that scrapes HTML content during analysis, configurable via the `html_scraper` option in `auxiliary.conf`. 1 release · first seen Oct 2026

release

  • Adds the disabled-by-default html_scraper auxiliary option to auxiliary.conf.default with setup instructions for enabling HTML scraping during analysis.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ commits-2026-10-18 · Oct 2026 · source · release history
Console log color control shipped Gates ANSI color sequences in console log output based on TTY detection, a config setting, or the NO_COLOR environment variable, preventing raw escape sequences from appearing in systemd or syslog logs. 1 release · first seen Oct 2026

release

  • Adds color_logs = auto/on/off setting and NO_COLOR environment variable support to gate ANSI color sequences in ConsoleHandler and ColoredFormatter based on TTY detection, preventing raw escape sequences in systemd/syslog logs. commits-2026-10-17 · Oct 2026 · source · release history
Task context propagation in logs shipped Propagates task, machine, and correlation context through log handlers across the analysis pipeline using contextvars, so log lines carry consistent task identifiers throughout analysis and distributed execution. 1 release · first seen Oct 2026

release

  • Adds contextvars-based task/machine/correlation context propagation via set_log_task_context, log_task_context, and TaskContextFilter across AnalysisManager, utils/process.py, and utils/gcp_pubsub_service.py. commits-2026-10-17 · Oct 2026 · source · release history
Autoprocess engine selection shipped Allows the autoprocess engine to be selected at runtime via the CAPE_ENGINE environment variable. 1 release · first seen Oct 2026

release

  • Wires the CAPE_ENGINE environment variable to control the autoprocess engine selection.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ commits-2026-10-08 · Oct 2026 · source · release history
Linux agent dependency provisioning shipped suggested Installs additional system packages — PowerShell, 7zip, unrar, Node.js, and a default JRE — in the Linux agent setup script to support a broader range of analysis packages and detonation scenarios. 1 release · first seen Oct 2026

Suggested capability: Malware sandbox analysis. This is our guess, not confirmed.

Also counts toward: Scripting language support

release

  • Installs powershell, 7zip, unrar, nodejs, and default-jre in extra/linux_agent.sh to support additional analysis packages and detonation scenarios. commits-2026-10-07 · Oct 2026 · source · release history
HTMX and AJAX request detection shipped Provides a helper in the web layer that identifies requests made via AJAX or HTMX, enabling views to return appropriate responses for each request type. 1 release · first seen Oct 2026

release

  • Adds HTMX-aware _is_ajax(request) helper in web/analysis/views.py that detects AJAX requests via x-requested-with: XMLHttpRequest, hx-request: true, or HTTP_HX_REQUEST. commits-2026-10-07 · Oct 2026 · source · release history
YARA rule name highlighting in file reports shipped Displays YARA and CAPE YARA rule names in bold within file reports for easier visual scanning. 1 release · first seen Oct 2026

release

  • Makes YARA and CAPE YARA rule names visually bold in file reports using fw-bold (Bootstrap 5 compatible replacement for the no-longer-defined font-weight-bold). commits-2026-09-30 · Oct 2026 · source · release history
Enhanced registry write tracking shipped Tracks a broader set of registry write operations — including `NtSetValueKey`, `RegSetValueA`, `RegSetValueW`, and key-creation via `RegCreateKeyExA`/`RegCreateKeyExW` when a new key is created — alongside the previously tracked `RegSetValueExA`/`RegSetValueExW` calls. 1 release · first seen Sep 2026

release

  • Expands Enhanced registry write tracking to include NtSetValueKey, RegSetValueA, and RegSetValueW alongside the existing RegSetValueExA/RegSetValueExW, and records RegCreateKeyExA/RegCreateKeyExW as a write event only when Disposition == 1 (REG_CREATED_NEW_KEY). commits-2026-09-29 · Sep 2026 · source · release history

Lines in monospace are the tool's own words: help text parsed from its source, or an endpoint from its API document. Under release, a line is our summary of a dated release. Under docs, it is quoted from the tool's own documentation or website. Each links back to the source it came from.

Screenshots

From the release notes, newest first. Click one to see it full size.

commits-2026-08-23 Sep 9, 2026

Score card

  1. Shipping velocity releases a month, last 12 months
  2. Documentation quality release-notes rubric, 0–100
  3. Breaking-change discipline how rarely a release breaks users, and notice given
  4. Maintenance risk quiet time against its own cadence, maintainers
  5. Innovation & surface new capabilities, API and MCP surface
  6. Community health
  7. Contributor trend distinct committers, this year against last
  8. Maintainer concentration bus factor now against a year ago
  9. Issue backlog trend issues closed per issue opened, 12 months
  10. Responsiveness median time to a maintainer’s first reply

Nine scores for CAPEv2, each built from the releases, notes and API history this site tracks — and, on Researcher and Business, where it stands among every measured tool in its category and how that has moved.

Score cards are part of every paid plan.

See plans →

Each score is 0–100 on a published rubric, derived from data this site already shows. A dimension we cannot measure says so — it is never scored 0 and never enters a rank.

How this is scored
  • Shipping velocity — releases a month over the last 12 months, on a log scale where 16 a month scores 100. Needs 3 releases in the window.
  • Documentation quality — the release-notes rubric published on the analytics page, unchanged.
  • Breaking-change discipline — the share of releases carrying a breaking change (none scores 100, half or more scores 0). Only projects that label breaking changes are measured: a clean record cannot be told from an unlabelled one.
  • Maintenance risk — quiet time measured against the tool's own release cadence (quiet longer than 90 days and three typical gaps scores 0), plus the number of active maintainers and whether contributors are growing, where known. Higher is lower risk.
  • Innovation & surface — new capabilities in the feature ledger this year, API and MCP operations added, and the share of commits that are features: the mean of whichever we hold.
  • Community health (open-source tools only) — each is a direction, not a size: contributors this year against last, the bus factor now against a year ago, and issues closed per issue opened, where steady scores 50, doubled 100 and halved 0; plus the median time to a maintainer's first reply (an hour scores about 100, a month or more 0). A commercial card has no repository and carries none of the four.
  • Documented delivery (commercial tools) — when a vendor's documented new capabilities have slowed against its own baseline, that counts against the overall standing as heavily as two low dimensions. Steady delivery, or too little history to judge, leaves the standing alone; it is never a sixth score.
  • Open-source tools are scored on repository signals; commercial tools on their published changelog. Ranks compare tools within one category and one profile and need at least five measured peers; the overall standing needs three ranked dimensions. Best-in-breed or consolidator is a shape, not a quality, and is never scored.

Release-note detail over time

See how much detail CAPEv2 puts in its release notes, quarter by quarter, and compare it with tracked tools in the same category. This history uses up to ten retained, reviewed notes per tool; sparse or blank older quarters may reflect that limit.

Checking release-note history…

Explore the full chart →

Releases

Show

20 entries

  1. November 20261
  2. October 20265
  3. September 20264
  4. August 202610
    Show

    20 entries

    Project health

    Issue, contributor and maintainer activity in kevoreilly/CAPEv2, 2023-10 – 2026-09, as of 2026-09-25. Twelve-month figures first; the trend lines run the whole window.

    1. Contributors 47 +6 vs prior 12 months
    2. Maintainers 7 +7 joined · −6 left, last 12 months
    3. Bus factor 3 committers behind half the commits
    4. Community-filed 96% of issues opened, last 12 months
    5. Median time to close 31 days first maintainer reply 2.1 hours
    6. Open backlog 7 of 928 issues ever filed
    1. Issues opened / month 3 · 0 communitymaintainers
    2. Open backlog 7
    3. Contributors / month 8
    4. Commits / month 29
    5. Stars 3,499
    Issue themes, last 12 months
    • features 1%
    • other 99%

    Counts from the project's public repository and git history; no individuals are identified. Maintainers are the committers covering 80% of the last year's commits. how we measure this

    Libraries its release ships

    What its latest release locks, checked against known advisories.

    We can only check tools that publish GitHub releases.

    Add the badge to your README

    Maintain this project? The badge links readers straight to this page, so they can follow every release here.

    Tracked by Cyber Toolchain Choose a badge style and copy the code →
    browse all tools → score card for your toolchain →