{"id":42299743,"url":"https://github.com/certeu/morio","last_synced_at":"2026-01-27T10:20:31.357Z","repository":{"id":240044317,"uuid":"727136735","full_name":"certeu/morio","owner":"certeu","description":"Connect - Stream - Observe - Respond | Morio provides the plumbing for your observability needs","archived":false,"fork":false,"pushed_at":"2026-01-19T12:00:32.000Z","size":29404,"stargazers_count":28,"open_issues_count":9,"forks_count":4,"subscribers_count":3,"default_branch":"develop","last_synced_at":"2026-01-19T16:43:07.944Z","etag":null,"topics":["beats","cybersecurity","cybersecurity-tools","kafka","observability","stream-processing","streaming-data"],"latest_commit_sha":null,"homepage":"https://morio.it","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"eupl-1.2","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/certeu.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-12-04T09:03:29.000Z","updated_at":"2026-01-19T12:00:36.000Z","dependencies_parsed_at":"2024-05-16T12:46:01.252Z","dependency_job_id":"e816b852-fde4-4cd3-b19c-30c80821386f","html_url":"https://github.com/certeu/morio","commit_stats":null,"previous_names":["certeu/morio"],"tags_count":41,"template":false,"template_full_name":null,"purl":"pkg:github/certeu/morio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/certeu%2Fmorio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/certeu%2Fmorio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/certeu%2Fmorio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/certeu%2Fmorio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/certeu","download_url":"https://codeload.github.com/certeu/morio/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/certeu%2Fmorio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28811656,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-27T07:41:26.337Z","status":"ssl_error","status_checked_at":"2026-01-27T07:41:08.776Z","response_time":168,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["beats","cybersecurity","cybersecurity-tools","kafka","observability","stream-processing","streaming-data"],"created_at":"2026-01-27T10:20:30.815Z","updated_at":"2026-01-27T10:20:31.352Z","avatar_url":"https://github.com/certeu.png","language":"JavaScript","readme":"\u003e [!Warning]\n\u003e\n\u003e ##### Morio is currently early-access alpha code.\n\u003e\n\u003e We are building this in the open, so feel free to look around,\n\u003e try it out, or [leave feedback](https://github.com/certeu/morio/discussions).\n\u003e\n\u003e That being said, you probably don't want to run this in production yet.\n\n\u003cp align='center'\u003e\u003ca \n  href=\"https://deepscan.io/dashboard#view=project\u0026tid=24001\u0026pid=27249\u0026bid=869644\"\n  \u003e\u003cimg src=\"https://deepscan.io/api/teams/24001/projects/27249/branches/869644/badge/grade.svg\" \n  alt=\"DeepScan grade\"\n  \u003e\u003c/a\u003e\u003c/p\u003e\n\n# Morio\n\n![image](https://github.com/certeu/morio/assets/1708494/91892e94-0cb5-4c94-8845-ffe52c19c417)\n\n## What is Morio?\n\nMorio is an end-to-end streaming data backbone for your observability needs.\n\nDeploy the Morio client (based on Elastic Beats) on your endpoints, and collect\ntheir data on one or more centralized Morio instances for analysis, further\nprocessing, downstream routing \u0026 filtering, or event-driven automation.\n\nUnder the hood, Morio utilizes best-of-breed open source technologies, such as\n[RedPanda](https://redpanda.com/) for its Kafka-compatible streaming API,\n[Smallstep Step-CA](https://smallstep.com/docs/step-ca/) for X.509 certificate\nprovisioning and mTLS authentication, [Beats](https://www.elastic.co/beats) and\n[Logstash](https://www.elastic.co/logstash) from [Elastic](https://www.elastic.co/) for\ncollecting/shipping and routing data respectively, and\n[Traefik](https://traefik.io/traefik/) as entrypoint proxy for all HTTP-based\nservices.\n\nWhile anyone with sufficient expertise, time, and dedication can build a\nstate-of-the-art streaming data infrastructure out of these components, with Morio\nyou don't have to.\nMorio provides an appliance-like experience where you can setup and configure\nthe entire system through it's web UI or REST API.\n\n## Current status\n\nMorio is **alpha code and under active development**.\nIt is not ready to handle your production workloads, and likely won't be for a while.\n\n## What's with the name?\n\nRight from the start, we needed a name. To create a repository for example, we\nneed to give it a name.\nI was mulling it over one weekend, and landed on **morio**. Here's why:\n\n**It's a _data plumbing_ project**\n\nMaking sure data flows from every little place where it's generated to your\ndata lake is the data equivalent of plumbing. It's not very sexy, but it is\nvery important. See how you fair when the drain in your kitched gets clogged,\nor worse, your toilet.\n\nPlumbing is not sexy or cool, so we borrow some cool from the world's most\nbeloved plumber: **Mario**. This is Morio, not Mario. But it's a good reminder\nthat plumbers rock.\n\n**More data in, more value out**\n\nAnother way to explain the **morio** name is to read it as **More IO**. If we\ncan make it easy (and affordable) to stream more data, we can get more value\nout of that stream.\n\n## Components\n\nMorio is a collection of various components that are pre-configured to work\ntogether.\n\n### API\n\nMorio is an API-first project. Everything you can configure in Morio can be\nconfigured through its management API.\n\nThe `api` folder holds that API.\n\n### Broker (RedPanda)\n\nThe main ingestion of data in Morio is handled by RedPanda, which exposes a\nKafka-compatible API.\n\n### Certificate Authority (SmallStep CA)\n\nWe require encryption, and thus need X.509 certificates. Morio provides its own\nCertificate Authority (CA) based on SmallStep.\n\n### Clients\n\nMorio provides a single client package for linux and windows. It's an umbrella\npackage that bundles preconfigured instances of filebeat, metricbeat, as well\nas audibeat (linux only) and winlogbeat (windows only).\n\n### Core\n\nMorio core (for COnfig REsolution) is responsible for turning your high-level\nMorio settings into the detailed configuration required for the various\ncomponents.\n\nIt is also responsible for taking actions on the system level (the host OS),\nincluding starting and stopping the other components, by talking to the Docker\ndaemon.\n\nNote that core is not exposed to users. Instead, it will be called internally\nby the API over the internal Docker network.\n\n### Proxy (Traefik)\n\nTraefik is an edge router and is used as reverse proxy inside Morio.\n\n### UI\n\nThe Morio UI provides a web interface to interact with and configure Morio.\nThe `ui` folder holds that web interface.\n\n## Getting started\n\nFirst clone this repository:\n\n```\ngit clone git@github.com:certeu/morio.git\n```\n\nThen, enter the newly created `morio` folder and run the kickstart script:\n\n```\ncd morio\nnpm run kickstart\n```\n\nThis will setup dependencies, and get your repository in a state that is ready to go.\n\nTo start the development environment, you first need to build the various container images:\n\n```\nnpm run build\n```\n\nThen you can run:\n\n```\nnpm run dev\n```\n\n## Development environment setup\n\nHere are some notes on what it takes to setup Morio. This is for a Debian based system.\n\n### Install depedencies\n\nTo develop Morio, we'll need docker and git.\nWe'll also add vim as our editor, and curl which we'll use to test things:\n\n```sh\nsudo apt-get install git docker.io vim curl\n```\n\nWe will also need NodeJS. I recommend using nvm to install it: https://github.com/nvm-sh/nvm\n\nWe will be using NodeJS 20, specifically the LTS release known as iron. So install it:\n\n```\nnvm install lts/iron\n```\n\n### Clone repository\n\nVia SSH:\n\n```\ngit clone git@github.com:certeu/morio.git\n```\n\nOr via HTTPS:\n\n```\ngit clone https://github.com/centeu/morio.git\n```\n\n### Run kickstart\n\nEnter the root of the repository and run:\n\n```\nnpm run kickstart\n```\n\nThis will install all (node) dependencies, and setup some repository specific things.\n\n### Rights to the docker socket\n\nTo run the development environment, we'll be starting containers. This requires access to the docker socket.\nTypically, you can grant yourself access by adding your user to the `docker` group:\n\n```\nsudo usermod -aG docker $USER\n```\n\nYou will need to log out and back in for this change to take effect.\nAlternatively, `newgrp docker` will work too.\n\n### Build the containers\n\nThe development environment will start (the development version of) a couple of containers.\nBefore we can do that, we need to build them:\n\n```\nnpm run build\n```\n\n### Permissions\n\nFIXME: Detail permissions and UIDs here.\n\n### Start the development environment\n\nIn the repository root run:\n\n```\nnpm run dev\n```\n\nYou probably want to keep an eye on the docker logs of core to see what's going on:\n\n```\ndocker logs -f core\n```\n\nOr, to format the logs nicely, install pino-pretty:\n\n```\nnpm i -G pino-pretty\n```\n\nThen pipe the logs into it, stripping some of the fields we don't care about:\n\n```\ndocker logs -f core | pino-pretty --ignore pid,time,hostname\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcerteu%2Fmorio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcerteu%2Fmorio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcerteu%2Fmorio/lists"}