{"id":18103802,"url":"https://github.com/OpenFarcaster/teleport","last_synced_at":"2025-03-29T11:31:23.858Z","repository":{"id":186823679,"uuid":"675782095","full_name":"OpenFarcaster/teleport","owner":"OpenFarcaster","description":"A fast implementation of a Farcaster Hub, in Rust.","archived":false,"fork":false,"pushed_at":"2024-09-09T02:12:43.000Z","size":516,"stargazers_count":58,"open_issues_count":9,"forks_count":5,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-24T03:48:38.233Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OpenFarcaster.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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":"2023-08-07T17:55:14.000Z","updated_at":"2024-12-04T00:03:10.000Z","dependencies_parsed_at":null,"dependency_job_id":"d94ce349-a837-4642-8333-f7765f6686b8","html_url":"https://github.com/OpenFarcaster/teleport","commit_stats":null,"previous_names":["openfarcaster/teleport"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenFarcaster%2Fteleport","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenFarcaster%2Fteleport/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenFarcaster%2Fteleport/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenFarcaster%2Fteleport/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpenFarcaster","download_url":"https://codeload.github.com/OpenFarcaster/teleport/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246178598,"owners_count":20736179,"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":[],"created_at":"2024-10-31T22:13:12.053Z","updated_at":"2025-03-29T11:31:23.458Z","avatar_url":"https://github.com/OpenFarcaster.png","language":"Rust","funding_links":[],"categories":["Uncategorized"],"sub_categories":["Uncategorized"],"readme":"# Teleport\n\nA fast implementation of a Farcaster Hub, in Rust.\n\n⚠️⚠️ The project is still under active development and nowhere close to being production ready ⚠️⚠️\n\n## Introduction\n\nIf you are new to Farcaster Hubs and/or Teleport - here's a quick video that does a high-level overview of the responsibilities of a Hub and where Teleport is at.\n\nNote that the codebase will outpace the video, and things mentioned `TODO` in the video might have been done now.\n\n[![Video](https://img.youtube.com/vi/YXu2DGMhIao/0.jpg)](https://www.youtube.com/watch?v=YXu2DGMhIao)\n\n## Rough Features\n\nThere are a few things Teleport is currently capable of, and a lot more it is not currently capable of. In no specific order, Teleport can currently:\n\n- [x] Start a libp2p gossip node and connect to other peers\n- [x] Broadcast Gossip Messages to enable features like posting casts\n- [x] Sync on-chain events from contracts deployed to Optimism\n- [-] Do PubSub peer discovery over GossipSub (partial support)\n\nA lot is still left to do:\n\n- [ ] Diff sync with other hubs\n- [ ] gRPC APIs\n- [ ] REST API\n- [ ] CLI\n- [ ] Metrics\n- [ ] Easier APIs for different \"types\" of FC Messages\n\n## Prerequisites\n\nRun the following command to install all the prerequisites for you automatically and if it fails for any reason then simply manually install them.\n\n``` bash\nmake install\n```\n\n- Rust\n- Protobufs Compiler (`brew install protobuf` or `apt install -y protobuf-compiler`)\n- SQLx CLI (`cargo install sqlx-cli`)\n\n## Prost Patch\n\nUp until recently, there was a Protobuf incompatibility issue with using `prost` in this codebase compared to `ts-proto` that is used in Hubble. As such, we have a patched version of `prost` that is used ([Found Here](https://github.com/OpenFarcaster/prost)).\n\nIn a recent update the Protobuf schema was updated to add a new field that allows us to get by that issue by serializing the message differently. That hasn't been implemented yet in Teleport but technically we don't need to maintain a patched version of `prost` anymore.\n\n\n## Setup the Hub\n\nCopy the example .env file using the following command and then place both your farcaster private key and optimism l2 key.\n\n``` bash\ncp env.example .env\n```\n\n### Setup the Database\n\n1. create the database\n\n```bash\nmake db-create\n```\n\n1. run the migrations\n\n```bash\nmake db-migrate\n```\n\n\n### Start the hub\n\n```bash\ncargo run\n```\n\n\n\n## Contributing\n\nMake sure to run the following command before pushing commits as this will run all the checks needed to pass the CI workflow.\n\n``` bash\nmake verify\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FOpenFarcaster%2Fteleport","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FOpenFarcaster%2Fteleport","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FOpenFarcaster%2Fteleport/lists"}