{"id":13471046,"url":"https://github.com/access-company/antikythera","last_synced_at":"2025-04-15T03:51:48.862Z","repository":{"id":38315596,"uuid":"129697834","full_name":"access-company/antikythera","owner":"access-company","description":"Elixir framework to build your own in-house PaaS","archived":false,"fork":false,"pushed_at":"2025-04-01T08:47:11.000Z","size":2014,"stargazers_count":223,"open_issues_count":3,"forks_count":19,"subscribers_count":39,"default_branch":"master","last_synced_at":"2025-04-15T03:51:35.874Z","etag":null,"topics":["elixir","erlang-otp","faas","paas","web-server"],"latest_commit_sha":null,"homepage":"","language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/access-company.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-04-16T06:50:12.000Z","updated_at":"2025-03-26T01:52:36.000Z","dependencies_parsed_at":"2023-02-10T08:16:02.690Z","dependency_job_id":"7240f206-19f2-4fb5-bb07-f0f4a67ac6a2","html_url":"https://github.com/access-company/antikythera","commit_stats":{"total_commits":324,"total_committers":19,"mean_commits":17.05263157894737,"dds":0.6944444444444444,"last_synced_commit":"710cecfea78affecf0915c21cc63125044aed914"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/access-company%2Fantikythera","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/access-company%2Fantikythera/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/access-company%2Fantikythera/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/access-company%2Fantikythera/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/access-company","download_url":"https://codeload.github.com/access-company/antikythera/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249003954,"owners_count":21196794,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["elixir","erlang-otp","faas","paas","web-server"],"created_at":"2024-07-31T16:00:38.850Z","updated_at":"2025-04-15T03:51:48.842Z","avatar_url":"https://github.com/access-company.png","language":"Elixir","funding_links":[],"categories":["Elixir"],"sub_categories":[],"readme":"# Antikythera Framework\n\n[![hex badge](https://img.shields.io/hexpm/v/antikythera.svg)](https://hex.pm/packages/antikythera)\n\n**Antikythera** is an [Elixir] framework to build your own in-house PaaS (Platform as a Service).\n\nYou can run multiple web services while managing only a single cluster of [ErlangVM][Erlang] nodes.\nFrom the viewpoint of service developers antikythera provides FaaS(Function as a Service)-like development experiences.\n\n[Elixir]: https://elixir-lang.org/\n[Erlang]: https://www.erlang.org/\n\n**Note:** Antikythera is already used in production at [ACCESS],\nthough as an OSS, it is still in early development stage and missing many components.\nPlease be aware of that, and stay tuned for further additions!\n\n[ACCESS]: https://www.access-company.com/\n\n## Features\n\n- As a platform for multiple services:\n    - Resource control for multi-service and multi-tenant use cases\n    - Automated deployment without affecting other running services\n    - Built-in logging, monitoring and configuration management\n    - Service-to-service communications without network overhead\n- As a web framework:\n    - HTTP request processing with arbitrary Elixir code with WebSocket support\n    - Domain-based routing for multiple services; path-based routing within single service\n    - CDN support for static contents, HAML template for dynamic web pages\n- As an asynchronous job executor:\n    - Built-in distributed job queues\n    - Running arbitrary Elixir code for each job\n\n## Basic architecture\n\n![Antikythera Architecture](assets/AntikytheraArchitecture.drawio.png)\n\n- We refer to each antikythera cluster as an **\"antikythera instance\"**,\n  and each web service running within an antikythera instance as a **\"gear\"**.\n    - Antikythera Instance example: [antikythera_instance_example](https://github.com/access-company/antikythera_instance_example)\n    - Gear example: [testgear](https://github.com/access-company/testgear)\n    - These two projects are also used for antikythera's test.\n- Antikythera is heavily dependent on the power of [ErlangVM][Erlang].\n    - Antikythera is written in [Elixir], and all gears must also be written in Elixir.\n- Multiple gears are co-located and executed within the same ErlangVMs of an antikythera instance.\n    - This type of co-location of multiple applications are sometimes referred to as \"nano-services architecture\".\n    - This way we can eliminate the infrastructure/operational cost for having multiple web application stacks.\n    - Also, inter-service communications in a micro-services architecture become gear-to-gear communications in this nano-services architecture.\n      Unlike micro-services architecture, it doesn't require network roundtrip as all gears are running within a single ErlangVM, resulting in lower communication overhead.\n    - Although gears share the same computing resources, they are executed in an independent manner thanks to the Erlang's process model.\n    - Antikythera instance and its gears are all separate [mix](https://hexdocs.pm/mix/Mix.html) projects.\n        - Developers of different gears can work on their own projects, independently.\n        - Library dependencies are defined per-antikythera-instance, and all gears inherit those dependencies.\n\n## Getting Started\n\nSee our [Getting Started](https://hexdocs.pm/antikythera/getting_started.html) guide!\n\n## Documentation\n\n- [For antikythera instance administrators](https://hexdocs.pm/antikythera/instance_administrators.html) (TBD)\n- [For gear developers (i.e. developers of web services)](https://hexdocs.pm/antikythera/gear_developers.html)\n- [API Reference](https://hexdocs.pm/antikythera/api-reference.html)\n\n## Contributing\n\nWe encourage you to contribute to antikythera! Please check out our [Contributing Guide](https://github.com/access-company/antikythera/blob/master/CONTRIBUTING.md).\n\nFor both core and gear development, please make use of our [Style Guide](https://github.com/access-company/antikythera/blob/master/STYLE_GUIDE.md).\n\n- [Issue Tracker](https://github.com/access-company/antikythera/issues)\n- [Users Mailing List](https://groups.google.com/forum/#!forum/antikythera_users)\n\n## Copyright and License\n\nCopyright(c) 2015-2024 [ACCESS CO., LTD][ACCESS]. All rights reserved.\n\nAntikythera source code is licensed under the [Apache License version 2.0](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faccess-company%2Fantikythera","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faccess-company%2Fantikythera","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faccess-company%2Fantikythera/lists"}