evilstudio/homelab-assistant-tool

CLI Tool which can help with manage your homelab devices.

Maintainers

Package info

github.com/evilprophet/homelab-assistant-tool

Type:project

pkg:composer/evilstudio/homelab-assistant-tool

Statistics

Installs: 2

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v2.1.3 2026-03-05 16:45 UTC

README

Introduction

Homelab Assistant Tool is an application for homelab operations and automation. It combines a CLI interface with a Web UI for managing devices, UPS units, schedules, and operational logs.

For technical details, see Tech Stack.

โœจ Key Features

  • ๐Ÿ”Œ Device operations

    • Start, stop, check status, and SSH operations for managed devices (via CLI)
  • ๐Ÿ”‹ UPS-aware behavior

    • UPS monitoring support and battery-aware automation logic
  • โฐ Scheduling

    • Cron-based automation with schedule-to-device assignment
  • ๐Ÿงพ Action logs

    • Unified action history for CLI, CRON, and WEB operations
    • Log filtering and cleanup tools
  • ๐ŸŒ Web UI

    • Management views for devices, UPS, schedules, and logs
    • Manual operational actions from the browser
  • ๐Ÿ” Authentication

    • simple mode (local username/password)
    • oidc mode (OIDC provider login)

๐Ÿ“ Project Structure

.
โ”œโ”€โ”€ bin/             # CLI entrypoints and helper scripts
โ”œโ”€โ”€ config/          # Symfony and app configuration
โ”œโ”€โ”€ docs/            # Main technical documentation
โ”œโ”€โ”€ migrations/      # Doctrine migrations
โ”œโ”€โ”€ public/          # Web entrypoint and built assets
โ”œโ”€โ”€ src/             # Application source code
โ”‚   โ”œโ”€โ”€ Command/         # CLI commands (setup, CRUD, runtime, users)
โ”‚   โ”œโ”€โ”€ Contract/        # Runtime contracts and enums
โ”‚   โ”œโ”€โ”€ Controller/      # Web controllers
โ”‚   โ”œโ”€โ”€ Entity/          # Doctrine entities
โ”‚   โ”œโ”€โ”€ EventSubscriber/ # Request/auth/log subscribers
โ”‚   โ”œโ”€โ”€ Factory/         # Runtime factories/adapters
โ”‚   โ”œโ”€โ”€ Helper/          # Configuration and helpers
โ”‚   โ”œโ”€โ”€ Repository/      # Doctrine repositories
โ”‚   โ”œโ”€โ”€ Runtime/         # Runtime models
โ”‚   โ””โ”€โ”€ Service/         # Application, runtime, auth, infrastructure services
โ”œโ”€โ”€ templates/       # Twig templates (dashboard, devices, ups, schedules, logs, auth)
โ”œโ”€โ”€ tests/           # Unit, integration, and functional test suites
โ””โ”€โ”€ var/             # Runtime data, cache, logs, SQLite files

๐Ÿš€ Quick Start

1. Clone and install

git clone https://github.com/evilstudio/homelab-assistant-tool.git
cd homelab-assistant-tool
composer install
cp .env.example .env

2. Update .env

Set values for your environment (application/auth settings, and OIDC values when using HAT_AUTH_MODE=oidc).

3. Configure application settings

php bin/console hat:setup:configure

4. Initialize database

php bin/console hat:setup:db --init

5. Create first user (simple auth mode)

php bin/console hat:user:create

6. Run Web UI (Docker Compose)

docker compose up -d --build

Open: http://localhost:8080

For local development with Xdebug and dedicated compose config:

docker compose -f docker-compose.dev.yml up -d --build

7. Run CLI commands

php bin/console list

๐Ÿ’ป Commands Overview

Here is a list of commands available in HAT.

Command Description
hat:setup:configure Configure app technical settings.
hat:setup:db Initialize/migrate SQLite database.
hat:setup:init Run full setup flow.
hat:device:create/update/remove/list Manage devices.
hat:ups:create/update/remove/list Manage UPS entries.
hat:schedule:create/update/remove/list Manage schedules.
hat:device:check-status Check runtime status for a device.
hat:device:ssh Open SSH session to a device.
hat:device:start Start a device.
hat:device:stop Stop a device.
hat:cron:execute Execute scheduled tasks and maintenance.
hat:logs:list List action logs stored in DB.
hat:logs:cleanup Remove old/all action logs from DB.
hat:user:create Create local user for simple auth mode.
hat:user:remove Remove local user in simple auth mode.
hat:user:reset-password Reset local user password (simple mode).

๐Ÿงญ Notes

  • Business data is stored in SQLite.
  • Integration/functional tests use separate SQLite DB (var/data/hat_test.sqlite).
  • Runtime settings are configured in config/parameters.yaml.
  • Web logs are written to var/log/web.log.

๐Ÿงช Testing & Quality

Quick Start:

# Run all tests (Xdebug off)
bin/phpunit

# Run with coverage report
bin/phpunit-coverage

๐Ÿ“š Documentation: