The open source public cloud platform. An AWS alternative for the next generation of developers.

M3O

M3O is an open source public cloud platform.
We are building an AWS alternative for the next generation of developers.


Overview

AWS was a first generation public cloud provider started in 2006. It's infrastructure services and pay as go pricing model made it an incredibly compelling choice for a previous generation of developers. But what about the future?

M3O is an attempt to build a new public cloud platform with higher level building blocks for the next generation of developers. M3O is powered by the open source Micro platform and programmable real world Micro Services.

Features

  • 🔥 Dev UX - The developer experience is first priority. A slick new UX for the next generation of developers.
  • ☝️ One Token - Use one Micro API token to fulfill all your API needs. Access multiple public APIs with a single token.
  • Fast Access - Using a new API is easy - no need to learn yet another API, it's all the same Micro developer experience.
  • 🆓 Free to start - It's a simple pay as you go model and everything is priced per request. Top up your account and start making calls.
  • 🚫 Anti AWS Billing - Don't get lost in a sea of infinite cloud billing. We show you exactly what you use and don't hide any of the costs.
  • ✔️ Open Source Software - Built on an open source foundation and services which anyone can contribute to with a simple PR.

Rationale

AWS is a fairly complex beast which makes it hard for new developers to get started. In the past we needed VMs and file storage, but today with the Jamstack and other modern development models, the building blocks we're looking for are changing. They're mostly now third party APIs. M3O is looking to aggregate all those third party public APIs into a single uniform offering with a slick new dev UX.

Services

So far there are over 35+ services. Here are some of the highlights:

Backend

  • Cache - Quick access key-value storage
  • DB - Simple database service
  • Functions - Serverless compute as a service
  • Stream - Publish and subscribe to messages
  • User - User management and authentication
  • File - Store, list, and retrieve text files

Logistics

  • Address - Address lookup by postcode
  • Geocoding - Geocode an address to gps location and the reverse.
  • Location - Real time GPS location tracking and search
  • Routing - Etas, routes and turn by turn directions
  • IP - IP to geolocation lookup

Web

  • Email - Send emails in a flash
  • Image - Quickly upload, resize, and convert images
  • OTP - One time password generation
  • QR Codes - QR code generator
  • SMS - Send an SMS message
  • Weather - Real time weather forecast

See the full list at m3o.com/explore or the source at github.com/micro/services.

Getting Started

  • Head to m3o.com and signup for a free account.
  • Generate an API key on the Settings page.
  • Browse the APIs on the Explore page.
  • Call any API using your token in the Authorization: Bearer [Token] header and https://api.m3o.com/v1/[service]/[endpoint] url.

Learn More

How it Works

M3O is built on existing public cloud infrastructure using managed kubernetes along with our own infrastructure automation and abstraction layer for existing third party public APIs. We host the open source Micro project as our base OS and use it to power all the Micro Services, which provide simpler building blocks for existing cloud primitives.

UX

We host our own custom dev UX (m3o/cloud) on top of the infrastructure stack and a backend which acts as the management control plane.

Services

Developers build and contribute to services in github.com/micro/services, a vendor neutral home. We then automate the building and publishing of those services and client libraries. This creates a shared and fully managed platform for everyone to leverage.

Infrastructure

We primarily use existing open source software, fully managed services and third party public APIs as the backing infrastructure then layer a standard interface on top. With all the services on one platform, accessible with one API token, we drastically improve the Dev UX.

Development

This project is a combination of open source projects and a platform managed by the Micro team. Our goal is to enable any developer to contribute to the open source while benefiting from the platform as a shared resource.

Cloud Hosting

The cloud hosted providers of Micro services:

  • m3o.com - a fully managed offering of micro services

Open Source

The core cloud OS and services exists in a vendor neutral org

M3O Dev

The hosting of Micro services on m3o.com is powered by the following:

  • m3o/cloud - locally hostable angular based dev UX for the website
  • m3o/platform - the infrastructure automation for cloud hosted stack
  • m3o/backend - the services which power the m3o.com product backend

Publish APIs

If you'd like to publish your own APIs on the M3O platform fill in this form and we'll get back to you.

Comments
  • Restructuring client-gen

    Restructuring client-gen

    In order to create the Dart generator freely without adding complexities to the codebase , I have restructured the client-gen in a way that i think it will make it easy for each generator to be modified separately.

    Dart generator is not complete yet, update will follow.

  • M3o client gen

    M3o client gen

    have a look @asim ... i will convert this PR to draft for now

    • The new github workflow (i called it scheduler.yml) has the ability to run all m3o generators at once or can run a specific one.

    • the new generator is now called m3o-client-gen.

    • I added new folder cmd/release-note which contains a program to fetch the latest commit metadata (sha, html_url and message) from micro/services repo and use it to update CHANGELOG.md file in the m3o/m3o-dart repo.

  • weather.Forecast go example returns incorrect result

    weather.Forecast go example returns incorrect result

    Description

    package main
      
    import (
            "fmt"
    
            "go.m3o.com/weather"
    )
    
    // Get the weather forecast for the next 1-10 days
    
    func main() {
    
            weatherService := weather.NewWeatherService(<TOKEN>)
    
            rsp, err := weatherService.Forecast(&weather.ForecastRequest{
    
                    Days: 2,
    
                    Location: "london",
            })
    
            fmt.Println(rsp, err)
    
    }
    

    returns this

    &{ [{0 0 0 Partly cloudy 2021-11-18 0 0 0 0 07:24 AM 04:07 PM false} {0 0 0 Partly cloudy 2021-11-19 0 0 0 0 07:26 AM 04:06 PM false}] 0 0 } <nil>

    weather.Now has a similar issue too.

    Screenshots

    No response

    Additional information

    No response

  • Possible 400 issue on /db/Create

    Possible 400 issue on /db/Create

    Description

    I keep getting a 400 error on record create requests to the DB endpoint. I sent an POST to webhook.site as well just to make sure the request was being sent properly and in the correct JSON structure - everything looks okay on my end.

    Screenshots

    No response

    Additional information

    No response

  • [DOCS] Lack of documentation. why ?

    [DOCS] Lack of documentation. why ?

    Description

    I believe that m3o has a great cloud service for building applications. But the problem is developers don't know how to use that services. There is no proper documentation for the cloud services such as Functions and Apps. I request the developer to please put interest in this issue of documentation and make it better than always. ,

    Screenshots

    No response

    Additional information

    No response

  • [Image API] Adjustable compression rate/lossless upload

    [Image API] Adjustable compression rate/lossless upload

    Description

    I think this would make a lot of sense to optimise bandwidth & storage space.

    A very practical case: I've got some images that are already optimised for my specific app. If I upload them using the Image API, they end up being encoded again by Go's png.Encode or jpeg.Encode using default parameters.

    In my specific case, it would be nice to be able to upload the image without any processing. Maybe just a type check to ensure only images are uploaded?

    However, for most cases it would be enough to be able to provide the "quality" parameter. An arbitrary value between 0 and 1, 1 being the highest quality possible.

  • [BUG]: user api only accepts data in single quoted strings

    [BUG]: user api only accepts data in single quoted strings

    Description

    When you create a user with the user api in python you need to send the data as data='{"id": "3"}' This makes it so you can't pass in variables like data='{"id": variable}'

    Screenshots

    No response

    Additional information

    No response

  • [BUG]: Calling an update for a function does not seem to update the function

    [BUG]: Calling an update for a function does not seem to update the function

    Description

    When I try to update a function through M3O Console, the call returns an empty JSON-object. I then call Describe to see what the status of the deployment is, but the status is still Active and only updated property has been changed. When I call the function by requesting it with my browser using the URL I still get the same response as I did with the previous version. So the function has not been updated.

    Screenshots

    No response

    Additional information

    Function description:

    {
        "function": {
            "id": "papu",
            "name": "papu",
            "repo": "https://github.com/joas8211/papu-api",
            "branch": "master",
            "entrypoint": "handle",
            "subfolder": "",
            "runtime": "nodejs16",
            "region": "europe-west1",
            "env_vars": {},
            "status": "Active",
            "url": "https://papu.m3o.sh",
            "created": "2022-01-29T21:07:29.873392361Z",
            "updated": "2022-01-30T09:34:16.344030724Z"
        }
    }
    
  • [User] Force set password

    [User] Force set password

    Description

    Set an account's password without requiring the old password. Should be kept separate from the current Update Password endpoint.

    Useful if a user forgets their password.

    Screenshots

    No response

    Additional information

    No response

  • [DB] Endpoint to list all my tables

    [DB] Endpoint to list all my tables

    Description

    Request for an endpoint to retrieve a list of all tables like listCollections() of mongodb

    Screenshots

    No response

    Additional information

    No response

  • [BUG]: Visual glitch on Sign Up button

    [BUG]: Visual glitch on Sign Up button

    Description

    iPad 7 iOS 15.0 Sign Up button is cut in half and overlapping itself. Refer to screenshot.

    Screenshots

    4B60E0F9-E27F-43A1-81F9-5D60A5740128

    Additional information

    No response

  • Feature: Usage limit chart and alerts

    Feature: Usage limit chart and alerts

    We now have usage limits for apps, db, functions, etc but the usage chart is still on a per request basis. We need to ideally display a usage limits chart showing exactly what's being used and then ability to fire alerts when hitting those limits.

  • [BUG]: Missing params in playground of functions

    [BUG]: Missing params in playground of functions

    Description

    While deploying a function, we need to specify runtime but in playground, there is no field for runtime

    Screenshots

    image

    Additional information

    No response

  • [BUG]: Apps Deploy Build Error

    [BUG]: Apps Deploy Build Error

    Description

    I've tried to deploy a static blog but got build error and also the deployment is very slow. Is there a way to check logs, so that I can see the reason of build error as builds are running fine in local and other cloud providers. I've also tried m3o next template and got the same issue. Please check the screenshot.

    Screenshots

    Screen Shot 2022-03-08 at 3 27 32 PM

    Additional information

    No response

  • [BUG]: Cache increment/decrement doesn't work

    [BUG]: Cache increment/decrement doesn't work

    Description

    Reproduce

    1. Create a new "entry": to https://api.m3o.com/v1/cache/Set with:
      	  {"key":"lol","ttl":0,"value":"123"}
      
    2. Increment the entry: to https://api.m3o.com/v1/cache/Increment with:
      	{"key":"lol","value":3}
      

      and receive

      	  {"Id":"cache.increment","Code":500,"Detail":"Error incrementing cache","Status":"Internal Server Error"}
      
    3. Decrementing the entry: to https://api.m3o.com/v1/cache/Decrement with:
      	  {"key":"lol","value":2}
      

      and receive:

      	  {"Id":"cache.decrement","Code":500,"Detail":"Error decrementing cache","Status":"Internal Server Error"}
      

    Screenshots

    No response

    Additional information

    No response

provide api for cloud service like aliyun, aws, google cloud, tencent cloud, huawei cloud and so on

cloud-fitter 云适配 Communicate with public and private clouds conveniently by a set of apis. 用一套接口,便捷地访问各类公有云和私有云 对接计划 内部筹备中,后续开放,有需求欢迎联系。 开发者社区 开发者社区文档

Dec 20, 2022
🔥 🔥 Open source cloud native security observability platform. Linux, K8s, AWS Fargate and more. 🔥 🔥
🔥 🔥   Open source cloud native security observability platform. Linux, K8s, AWS Fargate and more. 🔥 🔥

CVE-2021-44228 Log4J Vulnerability can be detected at runtime and attack paths can be visualized by ThreatMapper. Live demo of Log4J Vulnerability her

Jan 1, 2023
Next generation recitation assignment tool for 6.033. Modular, scalable, fast

Next generation recitation assignment tool for 6.033. Modular, scalable, fast

Feb 3, 2022
Multi cluster kubernetes dashboard with batteries included. Build by developers, for developers.

kubetower Multi cluster kubernetes dashboard with batteries included. Built by developers, for developers. Features Restart deployments with one click

Nov 28, 2022
An open source alternative to terraform enterprise.
An open source alternative to terraform enterprise.

oTF An open source alternative to terraform enterprise. Functionality is currently limited: Remote execution mode (plans and applies run remotely) Sta

Jan 2, 2023
Cloud-Z gathers information and perform benchmarks on cloud instances in multiple cloud providers.

Cloud-Z Cloud-Z gathers information and perform benchmarks on cloud instances in multiple cloud providers. Cloud type, instance id, and type CPU infor

Jun 8, 2022
Fluxcdproj - The Ultimate Swiss Army knife for DevOps, Developers and Platform Engineers
Fluxcdproj -  The Ultimate Swiss Army knife for DevOps, Developers and Platform Engineers

Fluxcdproj - The Ultimate Swiss Army knife for DevOps, Developers and Platform Engineers

Feb 1, 2022
Hexa is the open-source, standards-based policy orchestration software for multi-cloud and hybrid businesses.

Hexa Policy Orchestrator Hexa is the open-source, standards-based policy orchestration software for multi-cloud and hybrid businesses. The Hexa projec

Dec 22, 2022
go-opa-validate is an open-source lib that evaluates OPA (open policy agent) policy against JSON or YAML data.
go-opa-validate is an open-source lib that evaluates OPA (open policy agent) policy against JSON or YAML data.

go-opa-validate go-opa-validate is an open-source lib that evaluates OPA (open policy agent) policy against JSON or YAML data. Installation Usage Cont

Nov 17, 2022
Bubbly is an open-source platform that gives you confidence in your continuous release process.
Bubbly is an open-source platform that gives you confidence in your continuous release process.

Bubbly Bubbly - Release Readiness in a Bubble Bubbly emerged from a need that many lean software teams practicing Continuous Integration and Delivery

Nov 29, 2022
KubeCube is an open source enterprise-level container platform
KubeCube is an open source enterprise-level container platform

KubeCube English | 中文文档 KubeCube is an open source enterprise-level container platform that provides enterprises with visualized management of Kuberne

Jan 4, 2023
TriggerMesh open source event-driven integration platform powered by Kubernetes and Knative.

TriggerMesh open source event-driven integration platform powered by Kubernetes and Knative. TriggerMesh allows you to declaratively define event flows between sources and targets as well as add even filter, splitting and processing using functions.

Dec 30, 2022
This plugin helps you to use the AWS Command Line Interface (AWS CLI) to start and end sessions to your managed instances

Session Manager Plugin This plugin helps you to use the AWS Command Line Interface (AWS CLI) to start and end sessions to your managed instances. Sess

Dec 28, 2022
Terraform provider to help with various AWS automation tasks (mostly all that stuff we cannot accomplish with the official AWS terraform provider)
Terraform provider to help with various AWS automation tasks (mostly all that stuff we cannot accomplish with the official AWS terraform provider)

terraform-provider-awsutils Terraform provider for performing various tasks that cannot be performed with the official AWS Terraform Provider from Has

Dec 8, 2022
Infrastructure testing helper for AWS Resources that uses AWS SSM to remotely execute commands on EC2 machines.
Infrastructure testing helper for AWS Resources that uses AWS SSM to remotely execute commands on EC2 machines.

Infrastructure testing helper for AWS Resources that uses AWS SSM to remotely execute commands on EC2 machines, to enable infrastructure engineering teams to write tests that validate behaviour.

Sep 5, 2022
Amazon Web Services (AWS) providerAmazon Web Services (AWS) provider

Amazon Web Services (AWS) provider The Amazon Web Services (AWS) resource provider for Pulumi lets you use AWS resources in your cloud programs. To us

Nov 10, 2021
Aws asg updater - Update AMIs within AWS Auto Scaling groups automatically.

AWS Auto Scaling Groups Updater AWS Auto Scaling group is a great way of managing Amazon EC2 instances. AWS Auto Scaling group watches the correspondi

Oct 7, 2022
Aws-secretsmanager-caching-extension - Cache server for AWS Secrets Manager
Aws-secretsmanager-caching-extension - Cache server for AWS Secrets Manager

AWS Lambda Extension / Sidecar Container Cache Server The cache server is writte

Aug 12, 2022