{"id":13630276,"url":"https://github.com/edgelesssys/ego","last_synced_at":"2025-06-18T11:40:47.009Z","repository":{"id":37704033,"uuid":"322361358","full_name":"edgelesssys/ego","owner":"edgelesssys","description":"EGo is an open-source SDK that enables you to develop your own confidential apps in the Go programming language.","archived":false,"fork":false,"pushed_at":"2025-05-13T09:06:55.000Z","size":1982,"stargazers_count":540,"open_issues_count":15,"forks_count":56,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-05-13T10:23:36.848Z","etag":null,"topics":["confidential-computing","confidential-microservices","enclave","golang","intel-sgx","sgx"],"latest_commit_sha":null,"homepage":"https://www.edgeless.systems/products/ego/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/edgelesssys.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-12-17T17:09:00.000Z","updated_at":"2025-05-13T09:07:00.000Z","dependencies_parsed_at":"2024-02-09T17:48:20.127Z","dependency_job_id":"22b616f4-db76-452a-b1c9-1c12e5a94818","html_url":"https://github.com/edgelesssys/ego","commit_stats":null,"previous_names":[],"tags_count":36,"template":false,"template_full_name":null,"purl":"pkg:github/edgelesssys/ego","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edgelesssys%2Fego","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edgelesssys%2Fego/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edgelesssys%2Fego/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edgelesssys%2Fego/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/edgelesssys","download_url":"https://codeload.github.com/edgelesssys/ego/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edgelesssys%2Fego/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260546291,"owners_count":23025911,"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":["confidential-computing","confidential-microservices","enclave","golang","intel-sgx","sgx"],"created_at":"2024-08-01T22:01:36.857Z","updated_at":"2025-06-18T11:40:41.983Z","avatar_url":"https://github.com/edgelesssys.png","language":"Go","funding_links":[],"categories":["Go","Language Frameworks","CC Software Stack (Active and Open source)"],"sub_categories":["Library OSes and SDKs"],"readme":"# EGo\n\n\u003cimg src=\"src/logo.svg\" alt=\"EGo logo\" width=\"40%\"/\u003e\n\n[![GitHub Actions Status][github-actions-badge]][github-actions]\n[![GitHub license][license-badge]](LICENSE)\n[![Go Report Card][go-report-card-badge]][go-report-card]\n[![PkgGoDev][go-pkg-badge]][go-pkg]\n[![Discord Chat][discord-badge]][discord]\n\n[EGo](https://www.edgeless.systems/products/ego/) is a framework for building *confidential apps* in Go. Confidential apps run in always-encrypted and verifiable enclaves on Intel SGX-enabled hardware. EGo simplifies enclave development by providing two user-friendly tools:\n\n* `ego-go`, an adapted Go compiler that builds enclave-compatible executables from a given Go project - while providing the same CLI as the original Go compiler.\n* `ego`, a CLI tool that handles all enclave-related tasks such as signing and enclave creation.\n\nBuilding and running a confidential Go app is as easy as:\n\n```sh\nego-go build hello.go\nego sign hello\nego run hello\n```\n\n## Install\n\n### Install the snap\n\nThe easiest way to install EGo is via the snap:\n\n```sh\nsudo snap install ego-dev --classic\n```\n\nYou also need `gcc` and `libcrypto`. On Ubuntu install them with:\n\n```sh\nsudo apt install build-essential libssl-dev\n```\n\n### Install the DEB package\n\nIf you're on Ubuntu 20.04, 22.04, or 24.04, you can install the DEB package:\n\n```bash\nsudo mkdir -p /etc/apt/keyrings\nwget -qO- https://download.01.org/intel-sgx/sgx_repo/ubuntu/intel-sgx-deb.key | sudo tee /etc/apt/keyrings/intel-sgx-keyring.asc \u003e /dev/null\necho \"deb [signed-by=/etc/apt/keyrings/intel-sgx-keyring.asc arch=amd64] https://download.01.org/intel-sgx/sgx_repo/ubuntu $(lsb_release -cs) main\" | sudo tee /etc/apt/sources.list.d/intel-sgx.list\nsudo apt update\nEGO_DEB=ego_1.7.0_amd64_ubuntu-$(lsb_release -rs).deb\nwget https://github.com/edgelesssys/ego/releases/download/v1.7.0/$EGO_DEB\nsudo apt install ./$EGO_DEB build-essential libssl-dev\n```\n\n### Build from source\n\n*Prerequisite*: [Edgeless RT](https://github.com/edgelesssys/edgelessrt) is installed and sourced.\n\n```sh\nmkdir build\ncd build\ncmake ..\nmake\nmake install\n```\n\n### Build via Docker\n\nYou can reproducibly build the latest release:\n\n```sh\ncd dockerfiles\nDOCKER_BUILDKIT=1 docker build --target export -o. - \u003c Dockerfile\n```\n\nOr build the latest master:\n\n```sh\ncd dockerfiles\nDOCKER_BUILDKIT=1 docker build --target export --build-arg egotag=master --build-arg erttag=master -o. - \u003c Dockerfile\n```\n\nThis outputs the DEB package for Ubuntu 22.04.\nFor Ubuntu 20.04, replace `Dockerfile` with `Dockerfile.focal` in the above commands.\n\nOptionally build the `ego-dev` and `ego-deploy` images:\n\n```sh\nDOCKER_BUILDKIT=1 docker build --target dev -t ghcr.io/edgelesssys/ego-dev - \u003c Dockerfile\nDOCKER_BUILDKIT=1 docker build --target deploy -t ghcr.io/edgelesssys/ego-deploy - \u003c Dockerfile\n```\n\n## Getting started\n\nNow you're ready to build applications with EGo! To start, check out the following samples:\n\n* [helloworld](samples/helloworld) is a minimal example of an enclave application.\n* [remote_attestation](samples/remote_attestation) shows how to use the basic remote attestation API of EGo.\n* [attested_tls](samples/attested_tls) is similar to the above, but uses a higher level API to establish an attested TLS connection.\n* [vault](samples/vault) demonstrates how to port a Go application exemplified by Hashicorp Vault.\n* [estore](samples/estore) shows how to securely persist data using [EStore](https://github.com/edgelesssys/estore).\n* [wasmer](samples/wasmer) and [wasmtime](samples/wasmtime) show how to run WebAssembly inside EGo.\n* [embedded_file](samples/embedded_file) shows how to embed files into an EGo enclave.\n* [reproducible_build](samples/reproducible_build) builds the helloworld sample reproducibly, resulting in the same UniqueID.\n* [cgo](samples/cgo) demonstrates the experimental cgo support.\n* [azure_attestation](samples/azure_attestation) shows how to use Microsoft Azure Attestation for remote attestation.\n\n## Documentation\n\n* The [EGo documentation](https://docs.edgeless.systems/ego) covers building, signing, running, and debugging confidential apps.\n* The [EGo API](https://pkg.go.dev/github.com/edgelesssys/ego) provides access to *remote attestation* and *sealing* to your confidential app at runtime.\n\n## Beyond EGo\n\n* Use [MarbleRun](https://github.com/edgelesssys/marblerun) to create distributed EGo applications and run them on Kubernetes.\n* Use [EStore](https://github.com/edgelesssys/estore) to securely persist your application's data.\n* Not only using Go? Check out [Contrast](https://github.com/edgelesssys/contrast) to run your confidential containers on Kubernetes.\n\n## Community \u0026 help\n\n* Got a question? Please get in touch via [Discord][discord] or file an [issue](https://github.com/edgelesssys/ego/issues).\n* If you see an error message or run into an issue, please make sure to create a [bug report](https://github.com/edgelesssys/ego/issues).\n* Get the latest news and announcements on [Twitter](https://twitter.com/EdgelessSystems), [LinkedIn](https://www.linkedin.com/company/edgeless-systems/) or sign up for our monthly [newsletter](https://www.edgeless.systems/#newsletter-signup).\n* Visit our [blog](https://blog.edgeless.systems/) for technical deep-dives and tutorials.\n\n## Contribute\n\n* Read [`CONTRIBUTING.md`](CONTRIBUTING.md) for information on issue reporting, code guidelines, and our PR process.\n* Pull requests are welcome! You need to agree to our [Contributor License Agreement](https://cla-assistant.io/edgelesssys/ego).\n* This project and everyone participating in it are governed by the [Code of Conduct](/CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code.\n* Please report any security issue via a [private GitHub vulnerability report](https://github.com/edgelesssys/ego/security/advisories/new) or write to \u003csecurity@edgeless.systems\u003e.\n\n\u003c!-- refs --\u003e\n[github-actions]: https://github.com/edgelesssys/ego/actions\n[github-actions-badge]: https://github.com/edgelesssys/ego/workflows/Unit%20Tests/badge.svg\n[go-pkg]: https://pkg.go.dev/github.com/edgelesssys/ego\n[go-pkg-badge]: https://pkg.go.dev/badge/github.com/edgelesssys/ego\n[go-report-card]: https://goreportcard.com/report/github.com/edgelesssys/ego\n[go-report-card-badge]: https://goreportcard.com/badge/github.com/edgelesssys/ego\n[license-badge]: https://img.shields.io/github/license/edgelesssys/ego\n[discord]: https://discord.gg/rH8QTH56JN\n[discord-badge]: https://img.shields.io/badge/chat-on%20Discord-blue\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedgelesssys%2Fego","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fedgelesssys%2Fego","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedgelesssys%2Fego/lists"}