✅ 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
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)
| File | Size | Uploaded | |
|---|---|---|---|
| armex-0.0.1.tar.gz | 13.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|