User & Admin Guide — what the toolkit is and how to use every part of it, step by step. Launcher v3.23.0
BIJAY'S Toolkit is a one-command IT toolkit for Windows. On any client PC you run a single line in PowerShell and a modern dark app opens with two things:
winget, plus optional custom install scripts.Everything you see is built live from a private GitHub repository. Add a script or an app in the Admin Panel (or in git) and it shows up the next time the toolkit runs — there is no app to re-install and nothing to configure on the client.
There's also a Linux launcher for the same workflow on Linux devices (a terminal menu of bash script sets) — see section 3b.
Two roles, two entry points. Throughout this guide, sections are tagged:
USER the engineer/technician at the client PC who runs scripts and installs software.
ADMIN whoever curates the content (scripts, apps, config) in the browser Admin Panel.
| Task | Where | Needs |
|---|---|---|
| Run scripts / install apps | The launcher on the client PC | Access password (if enabled) |
| Add / edit scripts, apps, config | /admin in a browser | Admin password |
irm https://toolkit.bistab.com.np | iexirm = Invoke-RestMethod and iex = Invoke-Expression: it downloads the launcher text and runs it. Nothing is installed on the PC. Close the window to exit.Prefer the old text menu? Use the console mode instead — see section 7.
The toolkit also has a Linux launcher — the same idea as the Windows one, in a terminal. It runs the bash script sets an admin keeps under the Linux tab of the admin panel.
curl -fsSL https://toolkit.bistab.com.np/linux | bashexport MSP_KEY=<your launcher key>curl and either jq or python3 (usually already present).
at is only needed if you schedule a run. The menu reads your keystrokes from the terminal, so it
works even though it's piped into bash — and over SSH.fzf is installed (sudo apt install fzf) the launcher uses
it automatically — mouse (click / scroll), arrow keys, type-to-search and a
live preview pane. Without fzf you get a clean numbered menu (keyboard only).Scheduling a script runs it once at a chosen time — the Linux equivalent of the Windows
scheduled task. If at is installed it takes a flexible time (now + 1 hour,
14:30, tomorrow 08:00); otherwise it falls back to a systemd timer
(no install needed on any systemd distro) and asks for a delay (30min, 2h) or a
YYYY-MM-DD HH:MM time. Output is logged under ~/.bijays-toolkit/scheduled/.
List jobs with atq / systemctl --user list-timers.
A quick tour of the interface:
Home › ACME › Printers); click any crumb to jump back.config.json (printers, Wi‑Fi, app lists, etc.). The toolkit passes those values to any script that asks for them — so the same script does the right thing for each client.Folders can be nested to any depth; a card with a › chevron is a folder — click anywhere on it to open it.
winget, showing progress and a summary. Press Enter to close it when done.winget catalog and accept the required agreements automatically, so they run unattended. If winget isn't present (older Windows 10), the toolkit tries to install “App Installer” first.There can be more than one catalog — for example a general one plus a client-specific one. Each extra catalog appears under SOFTWARE as its own entry; click it to open its own checkbox grid. Your ticks and the install button are per-catalog.
Some software is delivered as a normal script instead (drivers, licensed installers, in-house tools). Those live in Software folders and behave like any script card — Run or Admin. They typically download an installer to C:\ProgramData\BijayToolkit\Installers and run it silently.
If you prefer a keyboard-only text menu (or you're on a machine where the graphical window won't open), run:
irm https://toolkit.bistab.com.np/console | iex
It shows the same script sets as a three-level menu — Script Set → Section → Script — with arrow keys to move, number keys to jump, Enter to select, and B back / H home / Q quit on every screen. Per script you can pick run-as-user or run-as-admin.
The panel is fully responsive — on a phone the sidebar becomes a drawer (tap the ☰). Use ⟳ Refresh to reload the tree.
acme). It's created with a starter config.json copied from the template.Printers), + File to create a script, or ⤒ Import files to upload existing .ps1 files (drag-and-drop works too).NN-name.ps1 — the leading number sets the order; the display name is derived from the file name (number stripped, dashes → spaces, Title Cased).config.json directly.config.json is merged underneath each client's own.Under Software, click App Catalog to open the form editor (no raw JSON needed). Each category is a card; each app is a row showing its name, Winget ID, icon keyword and description.
Google.Chrome). Find it by running winget search <name> on any PC and copying the Id column. not the whole commandmicrosoft, chrome, adobe, vpn, zip, pdf, media, code, cloud…).winget install … command by mistake, it's automatically reduced to just the Id.)The same + → New script folder option creates a folder for custom install scripts instead of a catalog.
apps.json; otherwise it's treated as a custom-script folder. The catalog's apps.json is edited only through this form, so it's hidden from the raw file tree.data/documents) — admin-only place to keep procedures, notes and reference files. It never appears in the launcher. Add folders/files with the +.config.json copied into new script sets, the reusable software-install.ps1 template, and the shared sections/config applied to every client.The Admin Panel is a convenience — the source of truth is the git repository. You can do everything from git instead:
NN-name.ps1 into a section folder under data/scripts/<set>/ and push.apps.json and push.public/launcher.ps1 to add content — it builds itself from the folders.Launcher and data changes go live on push (they're read fresh each run). Admin-panel page changes need a redeploy — see the Technical reference.
| Symptom | What to do |
|---|---|
| Nothing happens / “running scripts is disabled” | The command form irm … | iex bypasses execution policy. If blocked by policy, run PowerShell and try again, or use the console mode. |
| A password box appears | Expected when an access password is set. Enter it. Wrong password shows an error and lets you retry. |
| I added something in Admin but don't see it | Click Refresh in the launcher. Admin changes are live immediately for the launcher. |
| The Admin page looks unchanged after an update | The admin page is cached by the browser/CDN; hard-refresh with Ctrl+F5 after a deploy. |
| An app fails with “No package found” | The Winget ID is wrong. Run winget search <name>, copy the exact Id, and fix it in the App Catalog editor. |
| Software needs admin rights | Use the Admin button (scripts) or approve the UAC prompt (App Catalog installs run elevated). |
| The graphical window won't open | Use console mode (/console). |
Linux curl … | bash says it needs jq/python3 | Install one: sudo apt install jq (or python3). For scheduling, also sudo apt install at && sudo systemctl enable --now atd. |
| Linux launcher shows “401 / Access password required” | Enter the launcher key at the prompt (same one the Windows toolkit uses). To skip the prompt, export MSP_KEY=<key> before the curl … | bash line. A MSP_KEY=… curl … | bash prefix does not work — it only sets it for curl, not bash. |