{"id":13562196,"url":"https://github.com/tinkerbell/tink","last_synced_at":"2025-05-14T03:10:50.748Z","repository":{"id":37854528,"uuid":"215102779","full_name":"tinkerbell/tink","owner":"tinkerbell","description":"Workflow Engine for provisioning Bare Metal","archived":false,"fork":false,"pushed_at":"2025-04-16T23:06:43.000Z","size":23664,"stargazers_count":987,"open_issues_count":38,"forks_count":139,"subscribers_count":40,"default_branch":"main","last_synced_at":"2025-05-10T07:55:15.660Z","etag":null,"topics":["bare-metal","baremetal","baremetal-provisioning","private-cloud","tinkerbell"],"latest_commit_sha":null,"homepage":"https://tinkerbell.org","language":"Go","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/tinkerbell.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-10-14T17:16:00.000Z","updated_at":"2025-04-26T07:01:33.000Z","dependencies_parsed_at":"2023-02-10T13:00:21.278Z","dependency_job_id":"6d249196-6fb3-4596-a063-dfbff80f4cda","html_url":"https://github.com/tinkerbell/tink","commit_stats":{"total_commits":1267,"total_committers":54,"mean_commits":"23.462962962962962","dds":0.8358326756116812,"last_synced_commit":"3a7c2cb3c2bb2493fde7f2e9213df82666e2484a"},"previous_names":["packethost/rover"],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tinkerbell%2Ftink","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tinkerbell%2Ftink/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tinkerbell%2Ftink/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tinkerbell%2Ftink/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tinkerbell","download_url":"https://codeload.github.com/tinkerbell/tink/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254059512,"owners_count":22007769,"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":["bare-metal","baremetal","baremetal-provisioning","private-cloud","tinkerbell"],"created_at":"2024-08-01T13:01:05.637Z","updated_at":"2025-05-14T03:10:45.556Z","avatar_url":"https://github.com/tinkerbell.png","language":"Go","funding_links":[],"categories":["Go","others"],"sub_categories":[],"readme":"# Tinkerbell\n\n[![Build Status](https://github.com/tinkerbell/tink/actions/workflows/ci.yaml/badge.svg)](https://github.com/tinkerbell/tink/actions/workflows/ci.yaml)\n[![codecov](https://codecov.io/gh/tinkerbell/tink/branch/main/graph/badge.svg)](https://codecov.io/gh/tinkerbell/tink)\n[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/4512/badge)](https://bestpractices.coreinfrastructure.org/projects/4512)\n\n## License\n\nTinkerbell is licensed under the Apache License, Version 2.0. See [LICENSE](./LICENSE) for the full license text. Some of the projects used by the Tinkerbell project may be governed by a different license, please refer to its specific license.\n\nTinkerbell is part of the CNCF Projects.\n\n[![CNCF Landscape](https://img.shields.io/badge/CNCF%20Landscape-5699C6)](https://landscape.cncf.io/?item=provisioning--automation-configuration--tinkerbell)\n\n\n## Community\n\nThe Tinkerbell community meets bi-weekly on Tuesday. The meeting details can be found [here][7].\n\nCommunity Resources:\n\n-   [Community Slack](https://eqix-metal-community.slack.com/)\n-   [CNCF #tinkerbell](https://app.slack.com/client/T08PSQ7BQ/C01SRB41GMT)\n-   [YouTube Channel (demos, meeting recordings, virtual meetups)](https://www.youtube.com/channel/UCTzWInTQPvzH21KHS8jrq7A/featured)\n\n## What's Powering Tinkerbell?\n\nThe Tinkerbell stack consists of several microservices, and a gRPC API:\n\n### Tink\n\n[Tink][1] is the short-hand name for the tink-server and tink-worker.\n`tink-worker` and `tink-server` communicate over gRPC, and are responsible for processing workflows.\nThe CLI is the user-interactive piece for creating workflows and their building blocks, templates and hardware data.\n\n### Smee\n\n[Smee][2] is Tinkerbell's DHCP server.\nIt handles DHCP requests, hands out IPs, and serves up iPXE.\nIt uses the Tinkerbell client to pull and push hardware data.\nIt only responds to a predefined set of MAC addresses so it can be deployed in an existing network without interfering with existing DHCP infrastructure.\n\n### Hegel\n\n[Hegel][3] is the metadata service used by Tinkerbell and OSIE.\nIt collects data from both and transforms it into a JSON format to be consumed as metadata.\n\n### OSIE\n\n[OSIE][4] is Tinkerbell's default an in-memory installation environment for bare metal.\nIt installs operating systems and handles deprovisioning.\n\n### Hook\n\n[Hook][5] is the newly introduced alternative to OSIE.\nIt's the next iteration of the in-memory installation environment to handle operating system installation and deprovisioning.\n\n### PBnJ\n\n[PBnJ][6] is an optional microservice that can communicate with baseboard management controllers (BMCs) to control power and boot settings.\n\n## Building\n\nUse `make help`.\nThe most interesting targets are `make all` (or just `make`) and `make images`.\n`make all` builds all the binaries for your host OS and CPU to enable running directly.\n`make images` will build all the binaries for Linux/x86_64 and build docker images with them.\n\n## Configuring OpenTelemetry\n\nRather than adding a bunch of command line options or a config file, OpenTelemetry\nis configured via environment variables. The most relevant ones are below, for others\nsee https://github.com/equinix-labs/otel-init-go\n\nCurrently this is just for tracing, metrics needs to be discussed with the community.\n\n| Env Variable                  | Required | Default   |\n| ----------------------------- | -------- | --------- |\n| `OTEL_EXPORTER_OTLP_ENDPOINT` | n        | localhost |\n| `OTEL_EXPORTER_OTLP_INSECURE` | n        | false     |\n| `OTEL_LOG_LEVEL`              | n        | info      |\n\nTo work with a local [opentelemetry-collector](https://github.com/open-telemetry/opentelemetry-collector),\ntry the following. For examples of how to set up the collector to relay to various services\ntake a look at [otel-cli](https://github.com/packethost/otel-cli)\n\n```\nexport OTEL_EXPORTER_OTLP_ENDPOINT=localhost:4317\nexport OTEL_EXPORTER_OTLP_INSECURE=true\n./cmd/tink-server/tink-server \u003cstuff\u003e\n```\n\n## Website\n\nFor complete documentation, please visit the Tinkerbell project hosted at [tinkerbell.org](https://tinkerbell.org).\n\n[1]: https://github.com/tinkerbell/tink\n[2]: https://github.com/tinkerbell/smee\n[3]: https://github.com/tinkerbell/hegel\n[4]: https://github.com/tinkerbell/osie\n[5]: https://github.com/tinkerbell/hook\n[6]: https://github.com/tinkerbell/pbnj\n[7]: https://docs.google.com/document/d/1cEObfvQ9Tdp8zIIIg9O7P5i3CKaSj2t3JTxEufDxwWs/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftinkerbell%2Ftink","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftinkerbell%2Ftink","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftinkerbell%2Ftink/lists"}