Thanks to visit codestin.com
Credit goes to github.com

Skip to content

narrowin/networka

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Network automation CLI. Apache 2.0 licensed. Fully open-source. Originally developed at narrowin, now community maintained.


Networka: Eierlegende Wollmilchsau of network operations — optimized for your daily workflows.

Python 3.11+ Platform License: Apache-2.0 Code style: ruff Type checked with mypy Docs

Networka is a modern CLI tool for automating network devices across multiple vendors. Designed for network engineers who want fast, scalable automation with full cross-platform support.


The Networka Monologue

“People ask the question…
what’s a Networka?

And I tell 'em —
it's not about cables, configs, and pings.
Oh no.
There’s more to it than that, my friend.

We all like a bit of the good life —
some the uptime, some the security,
others the automation, the visibility, or the compliance.

But a Networka, oh, they're different.
Why?
Because a real Networka wants the f*ing lot.”

(inspired by: RockNRolla)

Getting Started

Networka Setup Demo

Networka setup and command execution demo

Networka vs the alternatives

Networka Ansible Nornir
Primary interface CLI commands YAML playbooks Python scripts
Time to first command Seconds after install After writing playbook + inventory After writing Python script
Learning curve Familiar CLI patterns YAML, Jinja2, modules Python programming
Execution Concurrent by default Sequential by default Depends on implementation
Best for Daily operations, ad-hoc commands Infrastructure-as-code, compliance Custom automation frameworks

Networka is built for network engineers who want to run commands now. Ansible excels at declarative infrastructure-as-code. Nornir shines when you need full Python programmability. Different tools, each great at what they do.

Features

Core Capabilities

  • Multi-vendor network automation: Native support for MikroTik RouterOS, Cisco IOS/IOS-XE/NX-OS, Arista EOS, Juniper JunOS, and more
  • Scalable device management: Execute commands across individual devices or groups
  • Cross-platform compatibility: Full support for Linux, macOS, and Windows environments
  • Flexible configuration: YAML and CSV configuration options with powerful device tagging and grouping

Operational Features

  • Command execution: Run single commands or predefined sequences across devices and groups
  • File management: Upload/download files to/from network devices with verification and error handling
  • Device backup: Automated configuration and comprehensive backups with vendor-specific implementations
  • Firmware management: Upgrade, downgrade, and BIOS operations with platform validation
  • CLI session management: Direct CLI access with tmux integration for interactive sessions

Advanced Features

  • Intelligent completions: Context-aware shell completions for devices, groups, and sequences
  • Vendor-aware sequences: Predefined command sets optimized for different network platforms
  • Results management: Organized storage with multiple output formats and automatic timestamping
  • Configuration validation: Schema-based validation with detailed error reporting
  • Credential management: Secure credential handling via environment variables with device-specific overrides

Developer & Integration Features

  • Type safety: Full mypy type checking for reliability and maintainability
  • Modern architecture: Built with scalable scrapli and nornir support
  • Extensible design: Plugin-friendly architecture for adding new vendors and operations
  • Rich output: Professional CLI interface with color coding and structured information display

Installation

System Requirements

  • Operating System: Linux, macOS, or Windows
  • Network Access: SSH connectivity to target devices
  • Package Manager: uv (recommended) or pip
  • tmux for nw cli: Install tmux to use the multi-pane CLI command (brew install tmux on macOS, apt install tmux on Debian/Ubuntu). libtmux is installed automatically with Networka.

Quick Install (recommended)

Install from PyPI using an isolated tool installer.

# Recommended (isolated, user-wide)
uv tool install networka

# Alternative
pipx install networka

# Verify installation
nw --help

If nw is not found

  • Check: command -v nw (Linux/macOS) or where nw (Windows)
  • If using pipx: ensure PATH is set, then reload shell
    pipx ensurepath
    exec $SHELL
  • Linux/macOS: add user bin to PATH if needed
    echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc  # or ~/.zshrc
    exec $SHELL
  • Windows (native, best-effort): prefer WSL2; if native, run pipx ensurepath and restart the terminal

More → PATH troubleshooting: https://narrowin.github.io/networka/troubleshooting/#path-nw-not-found

Upgrade & Remove

# Upgrade to latest version
uv tool upgrade networka
# or
pipx upgrade networka

# Remove installation
uv tool uninstall networka
# or
pipx uninstall networka

Platform-Specific Notes

Linux/macOS: No additional dependencies required

Windows: Scrapli (the default transport) does not officially support native Windows. While it may work with Paramiko or ssh2-python drivers, the recommended approach is to run Networka on WSL2 (Ubuntu) for a fully supported POSIX environment. Native Windows usage is best-effort.

WSL2 quickstart (recommended):

# In Ubuntu on WSL2
curl -LsSf https://astral.sh/uv/install.sh | sh
exec $SHELL
uv tool install networka
nw --help

Details → https://narrowin.github.io/networka/platform-compatibility/#wsl2-quickstart-recommended

Quick Start

Get up and running with config init command:

# Initialize in default location with interactive prompts
nw config init

Library API

Use Networka programmatically in your Python applications:

from network_toolkit import NetworkaClient, DeviceSession

client = NetworkaClient()

with DeviceSession("router1", client.config) as session:
    output = session.execute_command("show version")
    print(output)

See the Library Documentation for:

  • Multi-command workflows with persistent sessions
  • Ad-hoc IP targeting without configuration files
  • Credential handling patterns
  • Integration recipes

One-liners (no config)

Run directly against an IP without creating files. --platform selects the network OS driver; --interactive-auth prompts for credentials.

# MikroTik RouterOS
nw run --platform mikrotik_routeros 192.0.2.10 "/system/identity/print" --interactive-auth
# Cisco IOS-XE
nw run --platform cisco_iosxe 198.51.100.20 "show version" --interactive-auth

Terminology: device_type vs hardware platform vs transport

  • device_type: Network OS driver used for connections and commands (Scrapli "platform"). Examples: mikrotik_routeros, cisco_iosxe, arista_eos, juniper_junos.
  • platform (hardware/firmware): Hardware architecture used for firmware-related operations (x86, x86_64, arm, mipsbe, tile).
  • transport: Connection backend. Default is scrapli.

Note: When targeting IPs directly, --platform refers to the network driver (device_type), not hardware architecture.

Quick links

CLI overview

Community & support

Contributing

Have a look through existing Issues and Pull Requests that you could help with. If you'd like to request a feature or report a bug, please create a GitHub Issue using one of the templates provided.

See contribution guide →

Documentation

License

Apache License 2.0 - Free for commercial and personal use. No paid tiers, no enterprise versions, no licensing restrictions.

Community-driven project with contributions from narrowin and network engineers worldwide. See GOVERNANCE.md for maintenance and decision-making model.

Acknowledgments

  • Scrapli - Network device connections
  • Nornir - Network automation framework
  • Netmiko - Multi-vendor CLI connections to network devices
  • Typer - CLI framework
  • Pydantic - Data validation
  • Rich - Terminal formatting

Built for network engineers who value clean, reliable automation

About

simple and fast way to interact with your network devices

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Sponsor this project

Packages

 
 
 

Contributors 4

  •  
  •  
  •  
  •