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:
- Pre-launch button confirmation
- 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:
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:
Upgrade:
🚀 Running the Launcher
Normal hardware mode:
Simulation mode (PC, laptop, or mobile IDE):
🧪 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:
Example files:
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:
Example:
Then it appears automatically:
🔌 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8f166981f7bc84c548f60bc8d3c2868f5ecdb69fd50c9deb500244df7f7757b5
|
|
| MD5 |
84e57bd39ef6b0d6042d2a4892772a73
|
|
| BLAKE2b-256 |
af47215beb982fd3c1202ba7aea301f586cf505fd1d95632cb3511b9aced379b
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e15e16547febfeb92f300b2222d95990866694ae765917214739a2a0a86fa674
|
|
| MD5 |
0e875456ebccd65089fc5e573ac296a0
|
|
| BLAKE2b-256 |
c9fbc8efd2ec1b14266ef2d0977c90c8365e7663cac960095ee967c25075a135
|