A professional CLI training tool for practicing command-line skills across multiple platforms.
Conf T is an interactive, terminal-based learning tool that helps you practice real command-line commands across multiple environments โ without needing access to live hardware or cloud instances.
You get a simulated shell prompt, type the command, and receive instant feedback. Missed it? Get a hint. Stuck? Skip and review later. Conf T tracks your progress so every session builds on the last.
| Feature | Description |
|---|---|
| ๐ฅ๏ธ Simulated Prompts | Realistic shell prompts per platform (Router#, user@ubuntu:~$, PS C:\>) |
| โ Smart Validation | Regex-based matching with alias support (e.g. conf t โ configure terminal) |
| ๐ Review Mode | Automatically re-queues skipped/failed commands for targeted practice |
| ๐ก Hints & Explanations | Type hint for a nudge; get a full explanation after each answer |
| ๐ Progress Tracking | Accuracy stats, completed lessons, and history saved locally |
| ๐งฉ Extensible | Add new lessons by dropping a JSON file into conf_t/lessons/ |
| ๐ซ Multiple Platforms | 640+ tasks across Cisco IOS, Linux, PowerShell, Git, and Docker |
| ๐ Structured Curriculum | Beginner โ advanced learning paths with prerequisites and capstone labs |
| ๐บ๏ธ Curriculum Browser | Difficulty grouping, progress icons, recommended next lesson, soft prerequisite warnings |
- Python 3.10+
# Easiest โ isolated global install (recommended)
pipx install conf-t
# Or with pip
pip install conf-t
# Launch
conf-t
# Jump straight into practice
conf-t --continuegit clone https://github.com/Elshayib/conf-t.git
cd conf-t
pip install -e ".[dev]"
conf-tconf-t
You will be greeted with an interactive menu:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Conf T v0.4.0 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
? Select an option:
โบ โ
Daily Review (3 due) โ shown when tasks are ready
1. Practice a Lesson
2. Review All Failed Commands
3. View Progress & Stats
4. Reset All Progress
5. Create a Custom Lesson
6. Exit
When practicing a lesson, the curriculum browser groups lessons by difficulty, shows your progress (โ โ โ) and passed/total ยท % (e.g. 7/12 ยท 58%), highlights a recommended next lesson, and lets you filter by topic tags. Prerequisites warn softly before starting. Re-entering a lesson lets you resume, start over, or pick a task to continue from.
Spaced repetition: failed commands resurface on a schedule (due now โ 1 day โ 3 days โ 7 days). When tasks are due, Daily Review appears at the top of the main menu.
conf-t # interactive menu (default)
conf-t --continue # resume review, last lesson, or recommended next
conf-t --list # list all lessons
conf-t --list --platform Cisco # filter by platform
conf-t --list --tags vlan,ospf # filter by tags
conf-t --lesson cisco_basic # start a lesson by ID
conf-t --review # daily review (due tasks)
conf-t --review-all # review entire failed queue
conf-t --stats # print progress and exit
conf-t --versionDuring a practice session:
| Input | Action |
|---|---|
hint |
Show a hint without using an attempt |
skip |
Reveal the answer and move on |
exit / quit |
Confirm and exit the session |
Conf T ships with 68 lessons and 640 practice tasks across five platforms.
| Platform | Lessons | Tasks | Focus |
|---|---|---|---|
| Cisco IOS | 21 | 231 | CCNA-aligned switching, routing, security, services |
| Linux | 15 | 144 | Shell, systemd, networking, scripting, troubleshooting |
| PowerShell | 12 | 102 | Cmdlets, pipeline, scripting, remoting, automation |
| Git | 10 | 80 | Workflow, branching, merging, recovery |
| Docker | 10 | 83 | Images, containers, compose, networking, volumes |
| Difficulty | Lessons |
|---|---|
| Beginner | cisco_basic, cisco_show_commands, cisco_interface_basics |
| Intermediate | cisco_vlan_fundamentals, cisco_trunking_dtp, cisco_inter_vlan_routing, cisco_etherchannels, cisco_stp, cisco_static_routing, cisco_ospf_single_area, cisco_nat_pat, cisco_dhcp, cisco_acl_standard, cisco_port_security, cisco_ssh_hardening |
| Advanced | cisco_ospf_multiarea, cisco_acl_extended, cisco_wlan, cisco_qos, cisco_hsrp, cisco_troubleshooting_lab |
| Difficulty | Lessons |
|---|---|
| Beginner | linux_basic, linux_file_operations, linux_text_processing, linux_package_management |
| Intermediate | linux_advanced, linux_permissions_deep, linux_process_management, linux_systemd, linux_networking, linux_users_groups, linux_cron_scheduling |
| Advanced | linux_lvm_storage, linux_firewall, linux_shell_scripting, linux_troubleshooting_lab |
Each platform follows a beginner โ intermediate โ advanced โ capstone path. Capstone labs (*_troubleshooting_lab) mix scenarios from prior lessons. Use the in-app lesson browser to explore the full list.
Progress migration: v0.3.0 adds per-task progress (
task_progress) and migrates existingfailed_tasksautomatically. Task IDs use the formatlesson_id__action. Legacy v0.1.x progress should still be reset from the main menu if task IDs no longer match.
Create a .json file in conf_t/lessons/ using this schema:
{
"id": "my_custom_lesson",
"title": "My Custom Lesson",
"platform": "Cisco",
"description": "Short description of what this lesson covers.",
"difficulty": "beginner",
"tags": ["custom"],
"prerequisites": ["cisco_basic"],
"estimated_minutes": 15,
"tasks": [
{
"id": "my_custom_lesson__configure_terminal",
"prompt": "Enter global configuration mode.",
"prefix": "Router#",
"expected": "^configure\\s+terminal$",
"aliases": ["conf t", "config t"],
"hint": "The command starts with 'configure'.",
"explanation": "'configure terminal' (or 'conf t') enters global config mode."
}
]
}Task ID convention: {lesson_id}__{action_slug} โ globally unique across all lessons (required at scale).
Platform case rules:
Cisco,PowerShellโ case-insensitive matchingLinux,Git,Dockerโ case-sensitive matching
conf_t/
โโโ main.py # Entry point โ bootstraps the app
โโโ cli.py # All UI/terminal rendering and menus
โโโ engine.py # Business logic (pure Python, no UI)
โโโ models.py # Data classes: Task, Lesson, SessionStats
โโโ lessons/ # JSON lesson files (one per lesson)
Design principle:
engine.pyis completely UI-agnostic โ making it trivial to expose the engine via a REST API (FastAPI) or port it to a mobile/web frontend in the future.
Contributions, lesson packs, and bug reports are very welcome! Please read CONTRIBUTING.md before opening a PR.
See CHANGELOG.md for release history.
This project is licensed under the MIT License โ see the LICENSE file for details.
Made with โค๏ธ by Islam Elshayib