PHPackages                             holist-ix/miru - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. holist-ix/miru

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

holist-ix/miru
==============

A package designed to be used with IXP Manager and bring the functionality of a Holistic Internet eXchange

v1.1.2(3y ago)1501Apache-2.0JavaScriptPHP ^8.0

Since Mar 18Pushed 3y ago1 watchersCompare

[ Source](https://github.com/Holist-IX/miru)[ Packagist](https://packagist.org/packages/holist-ix/miru)[ RSS](/packages/holist-ix-miru/feed)WikiDiscussions master Synced today

READMEChangelogDependenciesVersions (13)Used By (0)

Miru (Holstix)
--------------

[](#miru-holstix)

Miru is designed as a network diagramming and planning tool for Internet eXchange points. It is the diagramming tool that as part of the HolistIX project. Miru is an extension to IXP Manager and allows operators to diagram their internal network, and generate a network configuration based on that.

Miru interacts with Athos to test network configs before deploying them to the Cerberus, the SDN controller of HolistIX.

Requirements
------------

[](#requirements)

Ubuntu &lt;= 20.04 IXP Manager &lt;= 6.0 docker &lt;= 19.0

Do note that due to the changes in IXP Manager v6, earlier versions are incompatible.

Install process
---------------

[](#install-process)

### IXP Manager

[](#ixp-manager)

This guide will be based on and follow on from the [IXP Manager install instructions](https://docs.ixpmanager.org/install/automated-script/). The installation instructions use the default install location as below, change it as is appropriate:

```
IXPROOT=/srv/ixpmanager
MY_WWW_USER=www-data
```

### Miru

[](#miru)

- In `${IXPROOT}` run `composer require holist-ix/miru`
- Edit `$IXPROOT/.env` uncomment and change `VIEW_SKIN=miru`

The packages are now installed however we still need to do a couple more steps so that we can have access to it within IXP Manager. Now we need to add the included skins from the package to be able to use the Miru package.

The script below will set a soft link within IXP Manager's skinning folder, this helps keeps the relevant parts updated as Miru gets updated.

```
ln -s ${IXPROOT}/vendor/holist-ix/miru/src/skins/miru ${IXPROOT}/resources/skins/miru
cp ${IXPROOT}/vendor/holist-ix/miru/src/config/custom.php ${IXPROOT}/config/custom.php

ln -s ${IXPROOT}/vendor/holist-ix/miru/src/js/mxgraph ${IXPROOT}/public/mxgraph

# Ensure that our user still has permision to work with everything
chown -R $MY_WWW_USER: ${IXPROOT}/resources/skins/miru
chmod -R ug+rw ${IXPROOT}/resources/skins/miru
```

The default installation expects Athos to be installed at `/athos`. To change this to a different directory, change `${IXPROOT}/config/custom.php`. The default configuration also includes examples of options if you intend to use, such as the API end point for Cerberus.

Usage
-----

[](#usage)

IXP Manager needs to be setup with at least 1 infrastructure, facility, rack and switch in order to use it.

After the initial setup process is complete, you can access Miru from the bottom of the left sidebar.

When you first open Miru you will be greeted with a blank canvas, and Miru will add any switches found within IXP Manager. The switch object will be populated with all the information associated with it within IXP Manager, including name, loopback addresses, hostname, all the members connected to the switch, and all ports that have been designated as "core" ports for internal links between switches. These switch objects can be dragged and dropped on to the canvas.

> *Note:* Currently there is no way in IXP Manager to declare datapath ids (dpids). If you intend to use the config generated as is for production, right-click on the switch object on the canvas, click on `Edit Data...` -&gt; `Add Property` and add a property with the key "dpid" and the value with the switch's dpid.

Switches can be connected by hovering over a switch object, clicking and then dragging one of the arrows that appears and connecting it to another switch. Miru will find available ports on both of the switches and associate those together as a link. If the link comes back as `undefined` please ensure that each switch has at least 1 port that is set to `core` and is not currently being used by another link.

If you would like to change the ports that Miru has selected, you can right-click on the link and select `Edit link between switches` and choose from the available ports. If the port you want is not there, please check if it is allocated to another link, if not please ensure that it has been designated as a `Core` port within IXP Manager.

Once you have a topology that is representative of your network, you can generate and test configurations from `File` -&gt; `Start tests`. Miru will proceed to generate a topology representation and store them in the athos directory declared in `custom.php`. This will emulate the network drawn in Miru and test connectivity between all hosts, and then report back the results. For more information check out the [athos repo](https://github.com/Holist-IX/athos).

> *Note:* If this step fail it is most likely due to permission issues. Ensure that `$MY_WWW_USER` has permission to read and write in `$ATHOSROOT`. Future updates to Athos will remove this requirement.

###  Health Score

29

—

LowBetter than 60% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity11

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity64

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~63 days

Recently: every ~167 days

Total

12

Last Release

1179d ago

PHP version history (3 changes)v1.0PHP &gt;=7.4

v1.0.1PHP &lt;=7.4

v1.1.0PHP ^8.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/44ac1a30fed349aacbb52a23fda50d0d8fc01b511caf93e0ebbd9941b2ec7919?d=identicon)[belthazaar](/maintainers/belthazaar)

---

Top Contributors

[![Belthazaar](https://avatars.githubusercontent.com/u/44282262?v=4)](https://github.com/Belthazaar "Belthazaar (57 commits)")

### Embed Badge

![Health badge](/badges/holist-ix-miru/health.svg)

```
[![Health](https://phpackages.com/badges/holist-ix-miru/health.svg)](https://phpackages.com/packages/holist-ix-miru)
```

###  Alternatives

[corviz/br-gpdpl

A lib that provides a series of data anonymizers, compliant with brazilian General Personal Data Protection Law (aka LGPD, in pt-br)

1613.6k](/packages/corviz-br-gpdpl)[afaya/edge-tts

Edge TTS is a PHP package that allows access to the online text-to-speech service used by Microsoft Edge without the need for Microsoft Edge, Windows, or an API key.

151.0k1](/packages/afaya-edge-tts)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
