This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
This repository contains GitHub Actions workflows for building custom OpenWRT firmware images with additional packages (Passwall, Argon theme). It supports multiple OpenWRT versions and architectures.
- OpenWRT 24.x: Uses
opkgpackage manager with.ipkfiles - OpenWRT 25.x: Uses
apkpackage manager with.apkfiles - Version detection pattern:
[[ "$VERSION" == 24.* ]]or[[ "$VERSION" == 25.* ]]
- build_passwall - Builds Passwall (requires Go installation)
- build_theme_argon - Builds Argon theme
- build_image - Combines artifacts and creates final firmware image
Jobs run in parallel where possible; build_image depends on all package builds.
openwrt/sdk:{arch}-{version}- For compiling packagesopenwrt/imagebuilder:{arch}-{version}- For creating firmware images
- Architectures:
x86-64,rockchip-armv8 - Profiles:
generic(x86-64),friendlyarm_nanopi-r2s(rockchip-armv8)
Creates final firmware image. Key environment variables:
PROFILE- Device profile namePACKAGES- Space-separated package listROOTFS_SIZE/KERNEL_SIZE- Partition sizesARCH/VERSION- Target architecture and OpenWRT version
For OpenWRT 25.x, uses ADD_LOCAL_KEY=1 to allow unsigned custom packages.
if [[ "${{ matrix.version }}" == 24.* ]]; then
echo "PKG_EXT=ipk" >> $GITHUB_ENV
else
echo "PKG_EXT=apk" >> $GITHUB_ENV
fi- Intermediate packages: 7 days
- Final firmware images: 30 days
- Push to
masterbranch - Manual dispatch (
workflow_dispatch) - Daily schedule at 21:00 UTC