{"id":25763317,"url":"https://github.com/astrabert/newsreport-ai","last_synced_at":"2026-05-15T09:32:13.050Z","repository":{"id":279551167,"uuid":"937803585","full_name":"AstraBert/newsreport-ai","owner":"AstraBert","description":"News about any topic, already digested for you📰","archived":false,"fork":false,"pushed_at":"2025-02-23T23:13:32.000Z","size":297,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-26T06:32:40.802Z","etag":null,"topics":["agentic-ai","agentic-workflow","fastapi","gradio","groq","llamaindex","multi-agent-systems","news"],"latest_commit_sha":null,"homepage":"","language":"Python","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/AstraBert.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":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-23T23:12:56.000Z","updated_at":"2025-02-23T23:15:44.000Z","dependencies_parsed_at":"2025-02-26T06:33:08.166Z","dependency_job_id":"63e17e01-539a-47a7-9f46-6dc1699d5434","html_url":"https://github.com/AstraBert/newsreport-ai","commit_stats":null,"previous_names":["astrabert/newsreport-ai"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AstraBert%2Fnewsreport-ai","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AstraBert%2Fnewsreport-ai/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AstraBert%2Fnewsreport-ai/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AstraBert%2Fnewsreport-ai/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AstraBert","download_url":"https://codeload.github.com/AstraBert/newsreport-ai/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240926400,"owners_count":19879737,"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":["agentic-ai","agentic-workflow","fastapi","gradio","groq","llamaindex","multi-agent-systems","news"],"created_at":"2025-02-26T20:16:18.999Z","updated_at":"2026-05-15T09:32:12.962Z","avatar_url":"https://github.com/AstraBert.png","language":"Python","funding_links":["https://github.com/sponsors/AstraBert"],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eNewsReport AI\u003c/h1\u003e\r\n\r\n\u003ch2 align=\"center\"\u003eNews about any topic, already digested for you📰\u003c/h2\u003e\r\n\r\n\u003ch3 align=\"center\"\u003eIf you find NewsReport AI useful, please consider to support us through donation:\u003c/h3\u003e\r\n\u003cdiv align=\"center\"\u003e\r\n    \u003ca href=\"https://github.com/sponsors/AstraBert\"\u003e\u003cimg src=\"https://img.shields.io/badge/sponsor-30363D?style=for-the-badge\u0026logo=GitHub-Sponsors\u0026logoColor=#EA4AAA\" alt=\"GitHub Sponsors Badge\"\u003e\u003c/a\u003e\r\n\u003c/div\u003e\r\n\u003cbr\u003e\r\n\u003cdiv align=\"center\"\u003e\r\n    \u003cimg src=\"logo.png\" alt=\"NewsReport AI Logo\" width=300 height=300\u003e\r\n\u003c/div\u003e\r\n\r\nNewsReport AI is a multi-agent news report framework written with [LlamaIndex](https://llamaindex.ai) and powered by [Tavily](https://tavily.com), [Gradio](https://gradio.app) and [FastAPI](https://fastapi.tiangolo.com/). \r\n\r\n# Install and launch🚀\r\n\r\nThe first step, common to both the Docker and the source code setup approaches, is to clone the repository and access it:\r\n\r\n```bash\r\ngit clone https://github.com/AstraBert/newsreport-ai.git\r\ncd newsreport-ai/\r\n```\r\n\r\nOnce there, you can choose one of the two following approaches:\r\n\r\n### Docker (recommended)🐋\r\n\r\n\u003e _Required: [Docker](https://docs.docker.com/desktop/) and [docker compose](https://docs.docker.com/compose/)_\r\n\r\n- Add the `groq_api_key` and the `tavily_api_key` variables in the [`.env.example`](./docker/.env.example) file and modify the name of the file to `.env`. Get these keys:\r\n    + [On Groq Console](https://console.groq.com/keys)\r\n    + [On Tavily](https://app.tavily.com/home/)\r\n\r\n```bash\r\nmv .env.example .env\r\n```\r\n\r\n- Launch the Docker application:\r\n\r\n```bash\r\ndocker compose up -d\r\n```\r\n\r\nYou will see the application running on http://localhost:8000/chat and you will be able to use it. Depending on your connection and on your hardware, the set up might take some time (up to 30 mins to set up) - but this is only for the first time your run it!\r\n\r\n### Source code🗎\r\n\r\n\u003e _Required: [conda](https://anaconda.org/anaconda/conda)_\r\n\r\n- Add the `groq_api_key` and the `tavily_api_key` variables in the [`.env.example`](./docker/.env.example) file and modify the name of the file to `.env`. Get these keys:\r\n    + [On Groq Console](https://console.groq.com/keys)\r\n    + [On Tavily](https://app.tavily.com/home/)\r\n\r\n```bash\r\nmv .env.example .env\r\ncp .env scripts/\r\n```\r\n\r\n- Set up LlamaIndex Docs Agent using the dedicated script:\r\n\r\n```bash\r\n# For MacOs/Linux users\r\nbash setup.sh\r\n# For Windows users\r\n.\\setup.ps1\r\n```\r\n\r\n- Or you can do it manually, if you prefer:\r\n\r\n```bash\r\nconda env create -f environment.yml\r\nconda activate news-report\r\n\r\ncd scripts/\r\nuvicorn main:app --host 0.0.0.0 --port 8000\r\n\r\nconda deactivate\r\n```\r\n\r\nYou will see the application running on http://localhost:8000/chat and you will be able to use it.\r\n\r\n## How it works\r\n\r\n\u003cdiv align='center'\u003e\r\n    \u003cimg src=\"./workflow.png\" alt=\"LlamaIndex Docs Agent workflow\"\u003e\r\n\u003c/div\u003e\r\n\r\nWhenever the user asks a question from the Gradio chat interface running on http://localhost:8000/chat, this question is processed by the `/report` endpoint of the FastAPI-managed API to which the Gradio app is attached. The `/report` endpoint passes the user message to the multi-agent framework, which:\r\n\r\n- Activates NewsSearchAgent, which searches for news on the web with Tavily and produces some notes about the news content\r\n- NewsSearchAgent hands on the notes to the WriteAgent:\r\n    + If the information is sufficient, the WriteAgent writes a report about the news\r\n    + If not, the WriteAgent asks NewsSearchAgent for more information\r\n- WriteAgent hands on the report to ReviewAgent, which can:\r\n    + Accept the report and return it to the user\r\n    + Reject the report and hand it back to the WriteAgent\r\n\r\n## Contributing\r\n\r\nContributions are always welcome! Follow the contributions guidelines reported [here](CONTRIBUTING.md).\r\n\r\n## License and rights of usage\r\n\r\nThe software is provided under MIT [license](./LICENSE).\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fastrabert%2Fnewsreport-ai","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fastrabert%2Fnewsreport-ai","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fastrabert%2Fnewsreport-ai/lists"}