devneet / rune
Rune is a lore-driven, modular concept beneath PHP, designed not to dictate development — but to respond to it.
Requires
- php: >=8.1
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Within Rune's architecture, Ether defines truth, Essence holds flow, and Entity performs behavior - each awakened only when invoked. Every element is crafted to be composable, lazy-loaded, and purpose-driven, making systems naturally scalable and precise.
This makes Rune inherently lightweight and adaptable, aligning perfectly with projects that evolve from concept, not convention. Whether shaping internal tools, backend systems, or modular workflows, Rune empowers developers to sculpt structure from intent, not instruction.
Essentials
Core System
- Modular Core Structure & Concept (Maintainable)
- Functional Process-Based
- Lazy Loading without Bootstrapping
- Live Documentation replacing Reflection (Phantasm)
- Automatic Minor & Patch Versioning
- PSR-4 Composer Autoloading
- Static Class Service Handler
- Dynamic Output Structure
Developer Space
- Stats Information (Main Entrance)
- Dynamic Command List (Main Entrance)
- System Inspection & Read (Grimoire)
- Phased Process Log (Arcane) (Grimoire)
- Execution Result: Timestamp, Memory & Peak Memory
- Fancy Command Line Interface (100% CLI support)
- Save & Load Project as Package (Relic) (Reliquary)
- Project Item as Package (Shard) (Reliquary)
- Share & Find Relics Online (Reliquary & Federation)
- Metadata Storage & Handling
.echoes(Keeper) - Zero Trust for Breaking Execution
- Event-Driven & Encapsulation (Chanter)
- Starter Template or Relic (Awakening)
- Command Line UI & Interaction (Chanter & Whisper)
- Text Styling & Reuse (Weaver)
- File/Item & Directory/Repo Handling (Forger)
- Fancy Error Handling (Keeper)
- Process-Focusable (Whisper.drain)
- Multi-Process & Interaction (Specter)
- Runes of Your Own (Evolution)
- Your Own Reliquary (Federation)
- Bring Your Own PHP Runtime (Liberation)
Awakening
Install Rune using Composer:
composer require devneet/rune
Create main file:
echo "#rune" > cast
First invocation awaken Rune from the void:
<?php /* * Act. 0 - The Awakening of Void * THE VOID * * From the silence of nothingness, echoes rise from the void. * A journey begins - with runes at your side. * * */ require_once __DIR__ . '/vendor/autoload.php'; Rune\Ethereal::awakening();
Run the app to begin:
php cast
Explore the system’s using the Grimoire:
php cast grimoire
Paradigm
At first, humans did not know anything.
Then how did they start to know things, and learn more about them?
By looking, writing, and growing, we can finally understand.
- Core
- Rune = something we don't know yet
- Ethereal = a place or thing we don't know
- Subject
- Ether = something that never changes but always has meaning
- Essence = something that can change as time goes on
- Entity = something that makes other things change
- Manifest = a box to connect things so they can work together
- Phantasm = a picture in our mind to understand
- Others
- Awakening = starting something, from anywhere
- Evolution = rebuilding something in your own form
- Federation = many places that trust each other
- Liberation = being free from what holds you
- Echoes = sounds from the past
- Runite = a rune that becomes a thing
- Shard = a small piece of runite
- Runite (built-in) = the runites carried by Rune: awakening, rune, grimoire, sentinel, reliquary
- Grimoire = a book that feels alive
- Sentinel = someone or something that guards
- Relic = a runite preserved to travel (
.rune) - Reliquary = a place where relics are kept
- Federation = reliquaries joined together
Origin Runes
Ten runes live at the origin. Each holds one purpose, and Aether flows through all of them.
| Rune | Purpose |
|---|---|
| Aether | The flow beneath everything: paths, stopwatch, memory, arcane, exit and the version footer |
| Chanter | The CLI gate: casts (commands), spells (--options), echoes (notes) and zero trust |
| Whisper | The voice to the user: styled echo, call (input), clear, drain and flash |
| Weaver | Text and templates: bind {{var}}, bond, wrap and minify |
| Forger | Files and folders: trace, scan, fix, move, clone, clean and observe |
| Cipher | Secrets: unique id, hash, base64 and the runic cipher |
| Keeper | Memory in .echoes/: items, shards, arcane and glitch |
| Crafter | The builder: item → seed → shard → spark into one distributable file |
| Specter | Beyond the main process: cast in another window, soul, seer, observer and devserver |
| Minister | Speaks with a familiar (AI spirit) — still in development |
Read any rune from the Grimoire:
php cast grimoire --runic=Keeper php cast grimoire --runic-list
Laws of the Rune
- One rune, one purpose. A rune is never stretched to do another rune's work.
- Entity holds the logic. Entities may call the entities of other runes; this is how runes work together.
- Manifest is for engraving. It only forwards to entities, so your runite (
cast) speaks throughRune\X\Manifest. - Phantasm is the contract. It replaces Reflection: version, user, note, mark, link and node are read by the Grimoire.
- Aether flows everywhere. Runes are not standalone packages; they awaken together inside one flow.
- Every change raises the Phantasm version of the rune that changed.
- An evolution rune never replaces an origin rune. Need another version? Create a new rune with its own name (e.g.
MYWeaver).
The Journey
- Awakening —
Rune\Ethereal::awakening()turns an emptycastinto a runite, from a blank start or a relic ofdevneet-id/reliquary. - Engraving — write casts in the runite:
Chanter::cast('wind --art', fn() => ..., 'note'). - Echoes & Arcane — Keeper remembers in
.echoes/; Aether records every step as arcane, revealed bygrimoire --arcane. - Relic —
php cast reliquary --runite-relicseals the runite, its echoes and shards into a.runefile to share. - Return —
php cast reliquary --relic-runitebrings a relic back to life in another place (=<vendor>/<repo>takes one from the reliquary).
Sentinel guards the runite: php cast sentinel --runite-insert=Keeper engraves a rune into it, --runite-remove takes it out, --gitignore keeps vendor/ and .echoes/ out of git.
Modes
A runite can unlock three modes. Sentinel writes one line under the require line and opens a folder next to the runite. The caption of the highest one wins: The Liberation of Forte > The Federation of Fides > The Evolution of Eidos > The Awakening of Void.
Evolution
Evolution opens the gate to create your own runes beside the origin runes.
php cast sentinel --evolution
Sentinel writes Rune\Ethereal::evolution();. Your runes live in @evolution/ next to the runite, and Sentinel helps to shape them:
php cast sentinel --runic-create=Ledger php cast sentinel --phantasm-repair=Ledger php cast sentinel --runite-insert=Ledger
Federation
Federation lets you keep your own reliquary (a fork of devneet-id/reliquary) and the relics you take from it.
php cast sentinel --federation php cast reliquary --initiate --repo=<user>/reliquary php cast reliquary --discover php cast reliquary --retrieve=<vendor>/<repo>
Relics are kept in @federation/ next to the runite, and @federation/federation.json records what was found. Without federation every relic comes from devneet-id/reliquary.
Liberation
Liberation frees your app from the PHP of the machine it lands on: it keeps a PHP runtime in @liberation/.
php cast sentinel --liberation
php cast sentinel --runtime-install # the PHP you are running now
php cast sentinel --runtime-install=php@8.3 --os=windows
php cast sentinel --runtime-list
php cast sentinel --runtime-remove=php@8.3.36
Runtimes land in @liberation/php@<version>/ and @liberation/liberation.json records the one in use. Windows builds come from windows.php.net (checked by sha256), Linux and macOS builds from static-php (dl.static-php.dev, give the full version, e.g. php@8.3.14).
Versioning
The footer of every cast shows the version of your rune world:
Version=1.21.117
It is the major version of the core followed by the sum of every Phantasm version (origin runes, plus evolution runes in evolution mode) — so the number grows as the runes grow.
Contributing
Thank you for considering contributing to the Rune! The contribution guide can be found in the Rune Contribution.
Code of Conduct
In order to ensure that the DEVNEET community is welcoming to all, please review and abide by the Code of Conduct.
License
The Rune is open-sourced software licensed under the MIT license.