---
description: Platforms supported by hyperglass
---

import { Code, Table, Td, Th, Tr } from "nextra/components";
import { Callout } from "nextra-theme-docs";
import platforms from "~/platforms.json";

export const NotSupported = () => (
    <svg
        xmlns="http://www.w3.org/2000/svg"
        width="16"
        height="16"
        fill="#edae49"
        viewBox="0 0 16 16"
    >
        <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z" />
        <path d="M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708z" />
    </svg>
);

export const Supported = (props) => (
    <svg
        xmlns="http://www.w3.org/2000/svg"
        width="16"
        height="16"
        fill="#35b246"
        viewBox="0 0 16 16"
        {...props}
    >
        <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-3.97-3.03a.75.75 0 0 0-1.08.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05z" />
    </svg>
);

export const Platforms = () => (
    <Table>
        <tbody>
            <Tr>
                <Th>Platform Keys</Th>
                <Th>Natively Supported</Th>
            </Tr>
            {platforms.map((spec) => (
                <Tr key={spec.keys.join("--")}>
                    <Td>
                        {spec.keys.map((key) => (
                            <Code className="nx-mx-2" key={key}>
                                {key}
                            </Code>
                        ))}
                    </Td>
                    <Td align="center">{spec.native ? <Supported /> : <NotSupported />}</Td>
                </Tr>
            ))}
        </tbody>
    </Table>
);

hyperglass uses [Netmiko](https://github.com/ktbyers/netmiko) to interact with devices via SSH/telnet. [All platforms supported by Netmiko](https://github.com/ktbyers/netmiko/blob/develop/PLATFORMS.md) are supported by hyperglass.

## Netmiko Platforms

<Callout type="info">
    Just because Netmiko supports a given platform doesn't mean it will automatically work with
    hyperglass. hyperglass has a limited number of built in directives (listed below). Any platforms
    other than the ones listed below will require you to [add a custom
    directive](configuration/examples/add-your-own-command.mdx) for each command you wish to make
    available.
</Callout>

<br />

<Platforms />

## Other Platforms

| Platform          | Key    |                          Natively Supported                          |
| :---------------- | :----- | :------------------------------------------------------------------: |
| Any HTTP Endpoint | `http` | [See HTTP Device Docs](configuration/devices.mdx#http-configuration) |
