Metadata-Version: 2.4
Name: hermes-deployer
Version: 0.3.4
Summary: Multi-Server, Multi-App, Multi-Service Orchestrator.
Author: Steven Mendoza
License: MIT
Project-URL: Homepage, https://github.com/StevenMZH/DHermes.git
Project-URL: Documentation, https://github.com/StevenMZH/DHermes.git
Project-URL: Source, https://github.com/StevenMZH/DHermes.git
Project-URL: Issues, https://github.com/StevenMZH/DHermes.git/issues
Keywords: DevOps,deployment,infrastructure-as-code,yaml,multi-server,automation
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: bcrypt==4.3.0
Requires-Dist: click==8.2.1
Requires-Dist: colorama==0.4.6
Requires-Dist: cryptography<47,>=45.0.7
Requires-Dist: cffi>=2.0.0
Requires-Dist: dotenv==0.9.9
Requires-Dist: paramiko==3.5.1
Requires-Dist: pycparser==2.22
Requires-Dist: PyNaCl==1.5.0
Requires-Dist: python-dotenv==1.1.0
Requires-Dist: PyYAML==6.0.2
Dynamic: license-file

# DHermes — Multi-Server, Multi-App Enviroments Orchestrator (DevOps-as-Code)

Hermes is a robust and extensible environment manager designed to orchestrate complex DevOps workflows across multiple servers, applications, and services.

It provides a DevOps-as-Code interface that simplifies:

- Infrastructure provisioning
- Application deployment
- Service lifecycle management
- Event-driven automation
- Secure multi-server credentials handling

Built with flexibility and scalability in mind, Hermes allows teams to define environments declaratively using a lightweight DSL (YAML), enabling:

- Seamless coordination of distributed deployments
- Reusable, composable event hooks (e.g., onDeploy, onUpdate)
- Specific Environment server/app/service configurations
- Importable configuration modules for better DRY practices


## Use Cases
- Deploy microservices to different VMs with event-triggered hooks
- Spin up isolated dev/stage/prod environments with different configs
- Automate CI/CD operations per service/app/server or global
- Centralize infrastructure configuration in a single source of truth


## Hermes File Structure

```hermes.yml

# File Extends
import?:
    - ...

# Server Dict
servers?:

    # Server
    <id>:
    server_name?:
    credentials: # Must contain either file or the other fields
        file: ".env.hermes"  
        project_id: ...
        vm_name: ...
        host_address: ...
        user: ...
        ssh_key: ...
    env: <file>

    # Apps
    apps?:
        # Must contain repository+branch and/or images
        <id>:
        app_name?: 
        repository?: 
        branch?: 
        images?:
        - ...
        services: 
        events?: 
        - ...

    # Server service-compose
    services?: <server_compose> # no tested

# Event Dict (interrupt + body)
events?:

    # Event
    <id>:
    when?: (default=call)

    # Body (actions & in-time calls)
    push?: 
        - from: <path>
        to: <path=server_root>
        - ...
    pull?: 
        - from: <path=server_path> 
        to: <path=call_root>   
        - ...
    remove?: 
        - path: <path>
        - ...
    migrate?: 
        - from: <path> 
        to: <path>    
        - ...

    call?:
        - <event>: <scope=self> 

    run_local:
        - ...
    run_serverside:
        - ...

    # annonymous loop func
    loop?:
        break: <event>
        # ... funcs

```
