Skip to main content

Advanced secure dual-key launch system (ARMEX)

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

armex-0.0.1.tar.gz (13.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

armex-0.0.1-py3-none-any.whl (12.1 kB view details)

Uploaded Python 3

File details

Details for the file armex-0.0.1.tar.gz.

File metadata

  • Download URL: armex-0.0.1.tar.gz
  • Upload date:
  • Size: 13.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for armex-0.0.1.tar.gz
Algorithm Hash digest
SHA256 8f166981f7bc84c548f60bc8d3c2868f5ecdb69fd50c9deb500244df7f7757b5
MD5 84e57bd39ef6b0d6042d2a4892772a73
BLAKE2b-256 af47215beb982fd3c1202ba7aea301f586cf505fd1d95632cb3511b9aced379b

See more details on using hashes here.

File details

Details for the file armex-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: armex-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 12.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for armex-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e15e16547febfeb92f300b2222d95990866694ae765917214739a2a0a86fa674
MD5 0e875456ebccd65089fc5e573ac296a0
BLAKE2b-256 c9fbc8efd2ec1b14266ef2d0977c90c8365e7663cac960095ee967c25075a135

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page