{"id":39493386,"url":"https://github.com/brunoafk/lsm","last_synced_at":"2026-04-07T14:01:05.374Z","repository":{"id":260869756,"uuid":"882314635","full_name":"BrunoAFK/LSM","owner":"BrunoAFK","description":"LSM is a powerful script management system designed to handle installation, updates, and management of \"llama\" scripts. ","archived":false,"fork":false,"pushed_at":"2026-04-01T20:26:50.000Z","size":223,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-03T06:46:16.428Z","etag":null,"topics":["bash","linux-server"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BrunoAFK.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-11-02T13:49:09.000Z","updated_at":"2026-04-01T20:26:54.000Z","dependencies_parsed_at":null,"dependency_job_id":"fdcd9a7c-09fc-48c9-a13f-0724071387de","html_url":"https://github.com/BrunoAFK/LSM","commit_stats":null,"previous_names":["brunoafk/lsm"],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/BrunoAFK/LSM","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BrunoAFK%2FLSM","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BrunoAFK%2FLSM/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BrunoAFK%2FLSM/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BrunoAFK%2FLSM/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BrunoAFK","download_url":"https://codeload.github.com/BrunoAFK/LSM/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BrunoAFK%2FLSM/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31515151,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T03:10:19.677Z","status":"ssl_error","status_checked_at":"2026-04-07T03:10:13.982Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash","linux-server"],"created_at":"2026-01-18T05:38:38.432Z","updated_at":"2026-04-07T14:01:05.327Z","avatar_url":"https://github.com/BrunoAFK.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Llama Script Manager (LSM)\n\nA lightweight script manager for Linux and macOS. Manages a collection of shell scripts with self-updating, environment detection, and per-script configuration.\n\n## Quick Start\n\n```bash\nbash \u003c(curl -fsSL https://raw.githubusercontent.com/BrunoAFK/LSM/main/install-llama.sh)\n```\n\n```bash\nllama help          # Show commands and available scripts\nllama status        # Show installation info\n```\n\n## Installation\n\n### Production (recommended)\n\nUses the one-line installer above. Installs to `/usr/local/lib/llama`, creates a `llama` symlink in `/usr/local/bin`.\n\nUpdates are fetched from GitHub Releases with SHA256 checksum verification.\n\n### Development\n\n```bash\ngit clone https://github.com/BrunoAFK/LSM.git /opt/llama\ncd /opt/llama\n./llama install\n```\n\nInstalls from local files. Run `./llama update` to sync local changes to the production directory.\n\n## Commands\n\n```\nllama help                    Show help and installed scripts\nllama update                  Update llama and installed scripts\nllama status                  Show environment and installed scripts\n\nllama scripts list            List all available scripts (installed and not)\nllama scripts add \u003cname\u003e      Install a script\nllama scripts remove \u003cname\u003e   Remove a script\n\nllama install                 Install llama from scratch\nllama remove                  Uninstall llama completely\n\nllama \u003cscript\u003e [args]         Run an installed script\n```\n\n## Updates\n\n`llama update` checks for new versions via the GitHub Releases API.\n\nWhen a release includes a `checksums.txt` asset, downloaded files are verified against SHA256 checksums before installation. If checksums don't match, the update is aborted.\n\nIf no releases exist yet, it falls back to pulling from the `main` branch. Only scripts already installed on your system are updated — new scripts are not added automatically.\n\n## Included Scripts\n\n### docker-update\n\nUpdates all running Docker containers to their latest images. Automatically detects Docker Compose projects (via container labels) and standalone containers.\n\n```bash\nllama docker-update run         # Update all containers\nllama docker-update check       # Dry run — check without changing anything\nllama docker-update env generate  # Configure notifications\nllama docker-update env show      # Show current config\n```\n\n**How it works:**\n1. Iterates all running containers\n2. Pulls latest image, compares digest with running container\n3. Compose containers: `docker compose pull \u0026\u0026 docker compose up -d` (grouped by project)\n4. Standalone containers: backs up old image, recreates container with the same ports, volumes, env vars, restart policy, and network\n5. Prunes dangling images\n6. Sends notifications if configured\n\n**Backups:** Before recreating standalone containers, the old image is tagged as `llama-backup/\u003cimage\u003e:pre-update`. Run `llama docker-update backups` to list them.\n\n**Notifications** are optional. Configure zero or more channels:\n\n| Channel   | Required config                                        |\n|-----------|--------------------------------------------------------|\n| Telegram  | `NOTIFY_TELEGRAM_BOT_TOKEN`, `NOTIFY_TELEGRAM_CHAT_ID` |\n| Slack     | `NOTIFY_SLACK_WEBHOOK_URL`                              |\n| Discord   | `NOTIFY_DISCORD_WEBHOOK_URL`                            |\n| Email     | `NOTIFY_SMTP_SERVER`, `NOTIFY_SMTP_PORT`, `NOTIFY_SMTP_USER`, `NOTIFY_SMTP_PASSWORD`, `NOTIFY_SMTP_FROM`, `NOTIFY_SMTP_TO` |\n| Webhook   | `NOTIFY_WEBHOOK_URL` (receives JSON POST)               |\n\nConfig is stored in `~/.config/llama_env/.env` with `600` permissions.\n\n### docker-scan\n\nScans running Docker container images for vulnerabilities using [Trivy](https://github.com/aquasecurity/trivy). Trivy runs as a pinned Docker container — no host install needed.\n\n```bash\nllama docker-scan run              # Scan all running containers\nllama docker-scan run --critical   # Only show CRITICAL vulnerabilities\nllama docker-scan image nginx:1.27 # Scan a specific image (full output)\nllama docker-scan check-trivy      # Check for Trivy updates\n```\n\nTrivy is pinned to a specific version (not `:latest`) due to a past supply chain compromise (v0.69.4-0.69.6). Update manually via `check-trivy` after reviewing release notes.\n\nNotifications (CRITICAL findings only) reuse the same `.env` config as docker-update.\n\n### pocketFeed\n\nExtracts URLs from an RSS/Atom feed and adds them to an ArchiveBox instance.\n\n```bash\nllama pocketFeed \u003cfeed_url\u003e\n```\n\n### test\n\nDevelopment/testing utility with system info and directory listing.\n\n```bash\nllama test info         # System information\nllama test list         # Directory listing\n```\n\n## System Requirements\n\n- Bash 4.0+\n- `curl`\n- `git`\n- `sudo` access for installation\n- Docker (for docker-update script only)\n\n## Author\n\n- **Author**: Bruno Pavelja\n- **Website**: [pavelja.me](https://pavelja.me)\n- **GitHub**: [github.com/brunoafk](https://github.com/brunoafk)\n\n## License\n\nMIT License — see [LICENSE](LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrunoafk%2Flsm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrunoafk%2Flsm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrunoafk%2Flsm/lists"}