Author: Nima Shafie
Forkable template for teams to add custom tools to the airgap-devkit ecosystem.
Fork this repo to create your team's tool image. Add your tools, profiles, and config — then wire it into any airgap-devkit-based team image as a submodule.
Click Fork on GitHub. Name your fork something like my-company-devkit-teams.
git clone [email protected]:your-org/my-company-devkit-teams.git
cd my-company-devkit-teamscp -r tools/example-tool/ tools/my-new-tool/
# Edit tools/my-new-tool/devkit.json and tools/my-new-tool/setup.shairgap-devkit --tools ./toolsOr wire this fork as a submodule in a team image repo (see .github/FORK_INSTRUCTIONS.md for the full setup).
-
Copy the example tool directory:
cp -r tools/example-tool/ tools/<your-tool-name>/
-
Edit
tools/<your-tool-name>/devkit.json:- Set
"id"to match the directory name. - Set
"name","description","version", and"source"(your team name). - Set
"category"to one of:Toolchains,Build Tools,Languages,Developer Tools,Frameworks,Security,Testing,Custom. - List any tool IDs this tool depends on in
"dependencies". - Set
"platforms"to"windows","linux", or"both".
- Set
-
Edit
tools/<your-tool-name>/setup.sh:- Fill in SECTION 1 (detect OS, set archive names).
- Fill in SECTION 2 (detect admin vs. user install, set
INSTALL_PREFIX). - Fill in SECTION 3 (extract/copy/build your tool into
INSTALL_PREFIX). - Leave SECTION 4 (write receipt) unchanged.
-
Syntax-check your script:
bash -n tools/<your-tool-name>/setup.sh && echo OK
-
Run a test install:
bash tools/<your-tool-name>/setup.sh
-
Commit:
git add tools/<your-tool-name>/ git commit -m "feat: add <your-tool-name>"
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | Unique ID — must match the directory name |
name |
string | Yes | Display name shown in the dashboard |
description |
string | Yes | One-sentence description |
version |
string | Yes | Semver or date string |
source |
string | Yes | Your team name — identifies tool origin |
category |
string | Yes | Dashboard grouping |
required |
bool | No | true = installed automatically |
dependencies |
list | No | Tool IDs that must be installed first |
install_script |
string | Yes | Path to setup.sh relative to devkit.json |
uninstall_script |
string/null | No | Path to uninstall script, or null |
receipt_file |
string | Yes | Filename written by setup.sh on success |
platforms |
string | Yes | "windows", "linux", or "both" |
stream_output |
bool | No | Stream live logs in the dashboard |
docs_url |
string | No | Link to README or internal docs |
tags |
list | No | Search tags for the dashboard filter bar |
-
Copy the example profile:
cp profiles/example-profile.json profiles/<your-profile-id>.json
-
Edit the new file:
- Set
"id"to match the filename (without.json). - Set
"name"and"description". - List the tool IDs to install in
"tools". - Optionally set
"category_order"to control dashboard grouping order.
- Set
-
Reference the profile in
devkit.config.jsonif it should be the default:{ "default_profile": "<your-profile-id>" } -
Commit:
git add profiles/<your-profile-id>.json git commit -m "feat: add <your-profile-id> profile"
The intended deployment model is a team image repo that pulls in this fork alongside the core devkit. See .github/FORK_INSTRUCTIONS.md for the complete setup.
In short — in your team image repo:
git submodule add [email protected]:your-org/my-company-devkit-teams.git tools/team/Then run airgap-devkit with both tool paths:
airgap-devkit --tools ./tools/default/ --tools ./tools/team/The "source" field in each devkit.json identifies which fork a tool came from, so tools from the upstream devkit and from your team fork are always distinguishable in the dashboard.
airgap-devkit-teams/
+-- README.md <- you are here
+-- devkit.config.json <- team-level devkit configuration
+-- .gitignore
|
+-- tools/
| +-- example-tool/
| +-- devkit.json <- fully commented field reference
| +-- setup.sh <- install stub with marked sections
|
+-- profiles/
| +-- example-profile.json <- example install profile
|
+-- .github/
+-- FORK_INSTRUCTIONS.md <- full team image repo setup guide
Copyright (c) 2024-present Nima Shafie. All Rights Reserved.
Source-available. See LICENSE for permitted and restricted uses. Commercial licensing available — contact github.com/NimaShafie.