First off — thanks for considering a contribution! NetCopilot is built by and for network engineers, and every issue, PR, or vendor playbook makes the tool sharper.
| Contribution | Impact |
|---|---|
| ⭐ Star the repo | Helps discovery |
| 🐛 Open a detailed bug report | Most valuable contribution |
| 🔌 Add a vendor playbook (Cisco/Juniper/etc. command list) | Makes ARIA smarter for everyone |
| 📖 Improve docs / README | Helps new users |
| 🎨 Share a custom terminal theme | We'll bundle it |
| 🌍 Translate the UI | We'll add i18n |
| 📣 Share NetCopilot on Reddit / Twitter / LinkedIn | Real growth |
git clone https://github.com/AnasProgrammer2/netcopilot.git
cd netcopilot
npm install
npm run devNote:
better-sqlite3-multiple-ciphersis auto-rebuilt for Electron's Node version via thepostinstallhook. If you ever seeNODE_MODULE_VERSIONmismatch, run:npx @electron/rebuild -f -w better-sqlite3-multiple-ciphers
npm run typecheck # must pass
npm run lint # must pass
npm run format # auto-fix styleThere is no test suite — verification is done via typecheck, lint, and manual smoke testing.
- Branch off
main. Name:fix/<short>,feat/<short>,docs/<short>. - Commit messages should be clean and descriptive. No AI tool attribution (
Generated by Cursor,Co-authored-by: Claude, etc.) — see CLAUDE.md → Commit Rules. - Squash unrelated commits before pushing.
- TypeScript everywhere. No
anyunless interfacing with untyped libraries. - React function components with hooks, no class components.
- Use the existing Zustand store (
src/renderer/src/store/index.ts) — don't introduce new state libraries. - For settings keys: always use
applySettings(patch), neverset()directly. - For colors: use the CSS custom properties defined in
globals.css, not hex literals. - Comments should explain why, not what.
See CLAUDE.md — it's the source of truth for the three-process Electron model, IPC surface, encrypted SQLite schema, and ARIA's agentic loop.
This is one of the highest-leverage contributions you can make.
- Edit
src/main/ai.ts→devicePlaybookmap. - Add an entry with the vendor name as key and a multi-line playbook string. Use the existing
cisco-ios/junosentries as a template:PLATFORM:one-line descriptionSIGNATURE COMMANDS:8–15 most-used show/diagnose commandsCOMMON ROOT CAUSES:3–5 things that go wrong on this platformDIAGNOSTIC FLOW:the senior-engineer mental order to investigate
- Add the device type to
DeviceTypeinsrc/types/shared.tsandsrc/renderer/src/types/index.ts. - Add a quick-commands list to
QUICK_COMMANDSinsrc/renderer/src/components/ai/AiPanel.tsx. - (Optional) Add a syntax highlighter function in
src/renderer/src/lib/highlighter.ts. - Test by setting a connection to the new device type and asking ARIA: "what's the health of this device?"
Please don't open public issues for security vulnerabilities. See SECURITY.md for the responsible disclosure process.
By contributing, you agree that your contributions will be licensed under the same BSL-1.1 license that covers the rest of the project.