K Knowledge Engine

The web UI, step by step

UI walkthrough

From an empty corpus to browsing, searching, and building a repository from a selection. Every screenshot was captured live from the running UI with Playwright.

1Create a bucket from local files

A bucket is a queryable collection. Go to Upload, name the bucket, choose files. KE stores each file content-addressed by SHA-256 and adds a location at bucket/filename.

Upload screen with a bucket name and a file selected
Naming a bucket and selecting a file.
Upload success with next-step guidance
After upload — indexing runs once the reactor + worker are up.

2Browse the corpus

The home page lists buckets with object counts. Click a bucket to see its objects; each row links to the object's detail page and can be added to a working list.

Corpus home listing buckets and a search box
Corpus home: buckets and global search.
Bucket view listing objects with key, hash, and type
A bucket's objects — key, SHA-256, type, "Add to list".

3Search and inspect

Search spans the corpus by hash prefix, tag, or filename. An object's detail page shows its SHA-256, every live location, tags, aliases, relations, annotations, and a direct byte download.

Search results for a query
Searching by tag vmprotect.
Object detail page
Object detail — identity, location, tags, download.

4Analyze an object: similarity, metadata, status

The object page is also where analysis happens. It shows the extracted metadata (cpu, file type, compiler, function count), a processing status for each plugin (done ✓ / running / failed ✗ with the error), and a Find similar panel — pick an algorithm (BBSH, FLAKE, FLIRT, Strings) and get ranked matches across the whole corpus. Each match links straight to that object.

Object page showing metadata, a Find-similar match, and per-plugin processing status
Metadata, a BBSH match to a repacked variant, and per-plugin status — all on the object page.
Everything here is also available over the REST API (similarity, metadata, status), so the same analysis runs from a script or an IDA plugin — see the Reference.

5Host a repo, and 6 build one from a selection

From Repositories, create a KE-hosted repo and copy its clone URL. Or, while browsing, add objects to the Working list and create a repository pre-populated with them plus a generated .ke/actions.yml — so later pushes project straight back into the corpus.

Repositories screen with a created repo and clone URL
A repository created through the UI.
Working list with selected objects and a create form
Working list → create repository from selection.