Interactive lisp as a exploit metaframework
  • Common Lisp 90.8%
  • Emacs Lisp 5.9%
  • Shell 1%
  • Python 1%
  • NewLisp 0.8%
  • Other 0.4%
Find a file
nsaspy 6120b81b89
All checks were successful
agent-framework-boundary / keep-agent-framework-out-of-product-tree (push) Successful in 4s
monorepo / hygiene (push) Successful in 57s
core / common-lisp-core (push) Successful in 3m9s
Remove accidental empty target receiver placeholder
2026-09-16 20:34:55 -04:00
.github/workflows CI: tolerate unsupported artifact upload on Forgejo 2026-09-05 08:27:24 +00:00
agent-zero agent-zero: restore two Hackmode development workers 2026-09-04 21:55:10 -04:00
deps add dep cl-cdir 2023-11-29 22:56:16 -05:00
docs Capture: supervise operation-scoped mitmdump lifecycle (#147) 2026-08-31 16:01:10 -04:00
emacs migrate emacs hackmode package into monorepo 2026-08-16 00:57:59 -04:00
source Remove accidental empty target receiver placeholder 2026-09-16 20:34:55 -04:00
templates establish hackmode monorepo foundation 2026-08-16 00:54:54 -04:00
tools IPX: wire versioned mitmproxy spool addon (#154) 2026-08-31 17:32:09 -04:00
.envrc add flake 2023-11-09 21:17:31 -05:00
.gitignore establish hackmode monorepo foundation 2026-08-16 00:54:54 -04:00
.gitmodules add dep cl-cdir 2023-11-29 22:56:16 -05:00
AGENTS.md Capture: supervise operation-scoped mitmdump lifecycle (#147) 2026-08-31 16:01:10 -04:00
flake.lock finally small changes 2023-11-09 21:56:14 -05:00
flake.nix Adapt Hackpert into Hackmode as an optional Prolog expert layer (#25) 2026-08-29 23:37:11 -04:00
hackmode-user.asd add cert.sh, also staged old changes i had forgoten 2023-11-26 06:03:16 -05:00
hackmode.lisp fix shellspawn 2023-11-26 00:40:48 -05:00
LICENSE remove unused packages, along with fixing the packaage def 2023-11-17 04:20:53 -05:00
Makefile add cert.sh, also staged old changes i had forgoten 2023-11-26 06:03:16 -05:00
ralp.jpg add ralp image 2023-11-12 13:48:41 -05:00
README.org Remove agent-framework terminology from product README 2026-08-30 02:15:37 -04:00
standard.org sync all changes 2023-11-19 03:28:02 -05:00

Hackmode

/nsaspy/hackmode/media/branch/master/ralp.jpg

Ralp the red teaming Lisp alien

Hackmode

Hackmode is a Common Lisp, actor-oriented investigation and reconnaissance environment built to work with StarIntel.

This repository is now the canonical Hackmode monorepo. Hackmode-owned runtime code, shell integration, Emacs integration, operation templates, and maintained helper tooling belong here. StarIntel Server, Quasar, Quasar UI, Tek9, and user dotfiles remain separate repositories and integrate through protocols/APIs rather than being vendored into this tree.

Development automation boundary

Agent Zero-specific development-worker implementation, configuration, scheduling, lane ownership, task-selection policy, and coordination belongs under agent-zero/**.

Hackmode product code, product documentation, tests, APIs, symbols, filenames, comments, and architecture must use Hackmode-native domain concepts only. Development-worker framework terminology must not leak into the product-facing tree.

Monorepo layout

source/
Common Lisp runtime, operation model, local storage, recon capabilities, and shell integration.
emacs/
Hackmode Emacs package. Migration from lost-rob0t/emacs-hackmode is tracked by issue #4.
templates/
Operation templates migrated from lost-rob0t/hackmode-templates.
tools/
Maintained helpers and explicitly temporary legacy script compatibility. Curated migration from lost-rob0t/hackmode-scripts is tracked separately; generated binaries/FASLs are not accepted.
agent-zero/
Agent Zero development-worker profiles, coordination policy/configuration, rollback notes, and installation instructions.
docs/architecture/
Hackmode product architecture and repository-boundary decisions. Agent-worker orchestration does not belong here.

See docs/architecture/monorepo.org before adding a new Hackmode repository.

Architecture direction

Hackmode is local-first. An operation must keep working when StarIntel Server is unavailable. The Common Lisp runtime is becoming the canonical owner of operation and typed asset state; Emacs and shell clients should call that boundary instead of maintaining parallel state.

The intended flow is:

recon actor
    |
    v
operation mailbox/event stream
    |
    v
local operation store
    |
    v
normalize + construct StarIntel-compatible document
    |
    v
persistent outbox
    |
    v
StarIntel ingest bridge
    |
    v
starintel-server

Install

Dependencies

Debian/Kali

sudo apt install sbcl git

Arch

sudo pacman -S sbcl git

NixOS

Install direnv, then allow the repository environment:

direnv allow

Build

make build
sudo make install

Configure

Hackmode follows the Lisp tradition of a user init file so the environment can be extended without forking the runtime.

The default init file is ~/.config/hackmode/init.lisp.

The shell work is inspired by LISH and should operate on typed Hackmode objects, not only strings. Existing commands remain callable as Common Lisp functions outside the interactive shell.

Migration status

  • Common Lisp runtime: already here.
  • Tek9-backed operation/local database: already here; being hardened rather than replaced casually.
  • Agent Zero development profiles: under agent-zero/, with separate database and Hackpert ownership.
  • Emacs package: migration in progress under issue #4.
  • Operation templates: migrated into templates/ by issue #4.
  • Script collection: source-only curation tracked by issue #5; do not import compiled/generated artifacts.
  • Canonical operation/asset protocol: issue #6.
  • CouchDB/BBRF asset convergence: issue #3.

Contributions

PRs and issues are welcome. New functionality should reuse existing Hackmode/StarIntel protocols and actors before creating another repository or provider implementation.