Skip to main content

✅ ARMEX — Dual-Key Launch Control System (Plugin-Based)

ARMEX is a modular command-line framework with a secure dual-key launch system plugin designed for Raspberry Pi or simulation environments.

It uses a plugin architecture, so additional tools can be added easily.

The launcher plugin implements a realistic two-key authorization system, physical button confirmation, timed launch windows, and full event logging.


⭐ Features

✔ Plugin-based architecture

Every command is a plugin under armex/plugins/.

✔ Dual-key arming system

Both hardware keys must be turned within a 0.5s window.

✔ Physical launch button confirmation

Launch must be confirmed twice:

  1. Pre-launch button confirmation
  2. Actual launch activation during the countdown

✔ One-time launch code per session

A 6-digit random code is shown at startup.

✔ Admin override

A static admin code (DDMMYYYY) bypasses the launch code.

✔ Operator identity logging

Operator name and ID are stored with each launch record.

✔ Full session logging

Everything is recorded:

  • launch code
  • operator info
  • arming success/fail
  • abort reasons
  • timeouts
  • launch confirmation
  • reset events
  • final exit status

Logs are stored in the launchlogs/ directory.

✔ Simulation mode

Run the launcher without GPIO hardware:

armex launcher sim

Keys/buttons are controlled with:

  • 1 = KEY1
  • 2 = KEY2
  • 3 = LAUNCH

✔ Safety handling

  • CTRL-C is disabled (prevents partial logs or dirty GPIO state)
  • Only closing the terminal window fully terminates the process
  • “X” at any prompt cleanly aborts the session and safely writes logs

📦 Installation

From PyPI:

pip install armex

Upgrade:

pip install --upgrade armex

🚀 Running the Launcher

Normal hardware mode:

armex launcher

Simulation mode (PC, laptop, or mobile IDE):

armex launcher sim

🧪 Launcher Sequence Overview

1. Launch Code

A random 6-digit launch code is displayed.

Operator must type it or the admin override.

2. Operator Authentication

Operator enters:

  • Name
  • Personnel ID

Both are logged.

3. Pre-Launch Confirmation

Operator must press the launch button once .

4. Dual-Key ARMED State

Both physical keys must be turned to ARM within a 0.5 second window.

Failure → system reset → new launch code required.

5. Launch Window

A red countdown bar displays 30 seconds.

Operator must press the launch button during this window.

Abort conditions:

  • Key turned off
  • Timeout
  • Button pressed too early

Any abort forces a reset and new launch code.

6. Successful Launch

The system fires, logs completion, and requires:

  • KEY1 off
  • KEY2 off
  • launch button released

Then the session ends and logs close properly.


📂 Log Files

Logs are stored automatically in:

launchlogs/

Example files:

431955.txt ADMIN_20251124_221530.txt

Each file contains:

  • Date & time
  • Launch code or admin override
  • Operator ID
  • Arming steps
  • Launch confirmation
  • Reset events
  • Final exit

🧩 Plugin System

To add a new command, create a file inside:

armex/plugins/

Example:

defrun(): print("My custom tool is running!")

Then it appears automatically:

armex mytool

🔌 Default GPIO Pin Mapping (BCM)

Function Pin
KEY1 17
KEY2 27
LAUNCH BUTTON 22
RED LED 5
GREEN LED 6
FIRE OUTPUT 13

⚠ Safety Notice

  • CTRL-C is disabled to protect system state and logs
  • Only close the terminal window (X) to fully stop the program
  • Use a safe test environment before connecting anything real
  • Simulation mode is strongly recommended before hardware deployment

📜 License

Shadowlock License v1.1

© 2025 — Ben Meulenbeld

Metadata

Release files for armex 0.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for armex 0.0.1
File Size Uploaded
armex-0.0.1.tar.gz 13.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for armex 0.0.1
File Interpreter ABI Platform
armex-0.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 25.4 kB

Release files / armex-0.0.1.tar.gz

Download URL armex-0.0.1.tar.gz
Size 13.3 kB
Tags Source
SHA-256 checksum
How to use checksums
8f166981f7bc84c548f60bc8d3c2868f5ecdb69fd50c9deb500244df7f7757b5
BLAKE2b-256 checksum
How to use checksums
af47215beb982fd3c1202ba7aea301f586cf505fd1d95632cb3511b9aced379b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.5

Release files / armex-0.0.1-py3-none-any.whl

Download URL armex-0.0.1-py3-none-any.whl
Size 12.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e15e16547febfeb92f300b2222d95990866694ae765917214739a2a0a86fa674
BLAKE2b-256 checksum
How to use checksums
c9fbc8efd2ec1b14266ef2d0977c90c8365e7663cac960095ee967c25075a135
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.5

Release history Release notifications | RSS feed

This release

0.0.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page