feat(release): prepare first public preview

This commit is contained in:
Magent release tooling
2026-09-22 15:12:29 +12:00
parent 76b2b8d879
commit 7417c767bd
28 changed files with 609 additions and 103 deletions
+4 -4
View File
@@ -64,7 +64,7 @@ container in either case, not a native Windows-container or macOS application.
### 1. Save the deployment file
Create a new directory for this installation and save the release branch's
[raw compose.yml](https://git.amslabs.net/Rephl3x/Magent/raw/branch/release/compose.yml)
[raw compose.yml](https://git.amslabs.net/Rephl3x/Magent-Public/raw/branch/release/compose.yml)
there. Keep your customized copy for future operations instead of overwriting
it when updating. You need only this file for the prebuilt image.
@@ -73,7 +73,7 @@ Linux, macOS or WSL:
```sh
mkdir magent-install
cd magent-install
curl --fail --location --output compose.yml https://git.amslabs.net/Rephl3x/Magent/raw/branch/release/compose.yml
curl --fail --location --output compose.yml https://git.amslabs.net/Rephl3x/Magent-Public/raw/branch/release/compose.yml
```
PowerShell:
@@ -81,7 +81,7 @@ PowerShell:
```powershell
New-Item -ItemType Directory -Path magent-install
Set-Location magent-install
Invoke-WebRequest -Uri 'https://git.amslabs.net/Rephl3x/Magent/raw/branch/release/compose.yml' -OutFile compose.yml
Invoke-WebRequest -Uri 'https://git.amslabs.net/Rephl3x/Magent-Public/raw/branch/release/compose.yml' -OutFile compose.yml
```
Alternatively, open the raw link in your browser and save the plain text as
@@ -236,7 +236,7 @@ It requires the full source tree and Docker build support; the prebuilt-image
installation does not. Use a separate checkout directory:
```sh
git clone --branch release --single-branch https://git.amslabs.net/Rephl3x/Magent.git Magent-source
git clone --branch release --single-branch https://git.amslabs.net/Rephl3x/Magent-Public.git Magent-source
cd Magent-source
docker compose -f compose.yml -f compose.build.yml -p magent config --quiet
docker compose -f compose.yml -f compose.build.yml -p magent build magent
+4
View File
@@ -238,6 +238,8 @@ consumer; builder values and supervisor values are not user-editable app setting
| `PYTHONUNBUFFERED` | Image: `1` | Flush Python stdout/stderr without buffering. |
| `MAGENT_UID` | Build argument: `1000` | Image runtime user's UID. Not a runtime environment switch; rebuilding with a different UID also requires matching volume/tmpfs ownership. |
| `MAGENT_GID` | Build argument: `1000` | Image runtime user's GID; same ownership caveat as UID. |
| `MAGENT_VERSION` | Build argument: `0.1.0-preview.1` | OCI image version label. Release builds set this to their public version; it does not change runtime data. |
| `MAGENT_REVISION` | Build argument: `unknown` | OCI image source-revision label. Release builds set this to the full source commit. |
## Manual Compose and test tooling
@@ -249,6 +251,8 @@ verification tools, not the zero-input public Compose install.
| `MAGENT_IMAGE` | Required by `docker-compose.hub.yml` | Explicit published image tag/digest for manual-secret installations. |
| `MAGENT_BIND_ADDRESS` | `127.0.0.1` | Manual template frontend bind address. |
| `MAGENT_HTTP_PORT` | `3000` | Manual template frontend host port. |
| `MAGENT_COMPOSE_FILE` | `compose.yml` | Optional `setup.sh` Compose filename override. Use a trusted local file. |
| `MAGENT_PROJECT_NAME` | `magent` | Optional `setup.sh` Compose project name. Keep it stable to retain the same named volume. |
| `PYTHON_BIN` | `python3` | Interpreter used by the backend quality gate. |
| `MAGENT_IMAGE_MAX_MB` | `350` | Container smoke-test unpacked image size budget in MiB. |
| `MAGENT_SMOKE_MANAGED` | `false` | Test generated managed secrets when true, or synthetic manual keys when false. |
+2 -2
View File
@@ -15,7 +15,7 @@ connect a development checkout to production credentials/databases.
Linux/macOS (Bash/zsh):
```sh
git clone --branch release --single-branch https://git.amslabs.net/Rephl3x/Magent.git magent
git clone --branch release --single-branch https://git.amslabs.net/Rephl3x/Magent-Public.git magent
cd magent
python3.14 -m venv .venv
.venv/bin/python -m pip install -r backend/requirements.txt
@@ -24,7 +24,7 @@ python3.14 -m venv .venv
Windows (PowerShell, with Python's `py` launcher installed):
```powershell
git clone --branch release --single-branch https://git.amslabs.net/Rephl3x/Magent.git magent
git clone --branch release --single-branch https://git.amslabs.net/Rephl3x/Magent-Public.git magent
Set-Location magent
py -3.14 -m venv .venv
& .\.venv\Scripts\python.exe -m pip install -r backend\requirements.txt
+1 -1
View File
@@ -47,7 +47,7 @@ sudo useradd --system --user-group --create-home --home-dir /var/lib/magent --sh
sudo install -d -o magent -g magent -m 0755 /opt/magent
sudo install -d -o root -g root -m 0700 /etc/magent
sudo install -d -o magent -g magent -m 0700 /var/lib/magent/data
sudo -u magent git clone --branch release --single-branch https://git.amslabs.net/Rephl3x/Magent.git /opt/magent
sudo -u magent git clone --branch release --single-branch https://git.amslabs.net/Rephl3x/Magent-Public.git /opt/magent
sudo -u magent git -C /opt/magent rev-parse HEAD
sudo -u magent python3.14 -m venv /opt/magent/.venv
sudo -u magent /opt/magent/.venv/bin/python -m pip install -r /opt/magent/backend/requirements.txt
+96
View File
@@ -0,0 +1,96 @@
# Reddit launch post
For `r/vibecoding`, use the **Vibe-Coded Projects** category/flair and retain the
build-process section below. The community's current self-promotion guidance says
project posts need educational detail about tools, workflow and lessons rather
than only a link. Recheck its rules immediately before posting. Add sanitized
screenshots if available; never show real users, domains, libraries, service URLs
or credentials.
## Suggested title
I vibe-coded Magent: a self-hosted request, stats and issue portal for Jellyfin stacks
## Alternative titles
- Magent is ready for testers — Docker, Portainer and native installs
- Sharing Magent: one place for media requests, viewing stats and issue follow-up
## Post
Hey everyone,
I’ve been vibe-coding a self-hosted project called **Magent**, and its first
public preview is ready for people to inspect, install and break:
https://git.amslabs.net/Rephl3x/Magent-Public
Magent is the user-facing layer I wanted around a Jellyfin media stack. It brings
requests, request progress, viewing stats and issue follow-up into one place,
while Jellyfin, Seerr, Sonarr, Radarr and the other connected apps keep doing the
jobs they already do.
What it currently includes:
- Search for and submit movie or TV requests through Seerr
- A plain-English request timeline across approval, Arr, downloads and Jellyfin
- “Watch now” links when something is available
- Issue reporting and repair follow-up
- Personal Jellystat viewing insights and monthly reports
- Local/Jellyfin sign-in, invitations and per-user feature controls
- Encrypted backup and restore for configuration and the SQLite database
It does **not** provide, store or stream media. You need to operate and connect
your own services.
Docker Compose is the recommended setup, but the repository also documents
Portainer, plain `docker run`, source-built containers, native Linux/systemd and
foreground Windows/macOS/Linux installs. A fresh managed Docker install creates
its own private keys and setup token, then walks you through the administrator
and app connections in the browser.
Docker image: https://hub.docker.com/r/rephl3xnz/magent
This is deliberately labelled a public preview. The container is currently
validated on Linux/amd64, Magent expects one writable SQLite instance, and it is
not presented as an HA/Kubernetes deployment. The repo documents HTTPS, reverse
proxies, origins/cookies, backups, upgrades and rollback rather than pretending
those details disappear.
The project grew through an iterative AI-assisted/vibe-coding workflow, followed
by regression tests, isolated container smoke tests and a separate sanitization
pass for the public repository. I’m sharing the source under MIT because I want
the implementation to be inspectable, not just the result.
### How I built it
My workflow was much closer to directing a small engineering loop than writing
one giant prompt. I described a user problem, had Codex work across the FastAPI,
Next.js and Docker layers, then reviewed the result in a running Beta instance.
Screenshots and real failure reports became the next round of requirements.
The useful discipline was making every vibe pass leave evidence behind. Backend
behavior got regression tests, interface changes got browser checks, and the
container got a disposable smoke harness covering fresh setup, login, security
headers, assets, encrypted backup/restore, restart and recreation. I also used
the ECC Codex plugin as a structured security/release review rather than treating
“it works on my stack” as a release gate.
The biggest release lesson was that a Git branch is not a privacy boundary. My
first idea was a sanitized public branch alongside private Beta/Prod branches.
Before launch I caught that every branch and old tag in a public repository is
still public, so I split the three-commit sanitized export into its own repository.
That was more valuable than another round of UI polish.
The most useful early feedback would be:
- where setup assumes too much knowledge
- installation steps that are unclear or wrong on your platform
- integrations that behave differently on another stack
- request, stats or issue flows that confuse real users
- backup or restore problems
Please use synthetic examples and sanitized logs in public reports—no tokens,
databases, backup files or private service details.
Repository: https://git.amslabs.net/Rephl3x/Magent-Public
Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB