{"id":50784317,"url":"https://github.com/av/pace","last_synced_at":"2026-06-12T06:07:20.352Z","repository":{"id":358167148,"uuid":"1240298754","full_name":"av/pace","owner":"av","description":"Self-hostable personal dashboard with content aggregation and LLM-powered summaries","archived":false,"fork":false,"pushed_at":"2026-05-28T23:08:16.000Z","size":1261,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-29T01:13:07.215Z","etag":null,"topics":["dashboard","docker","homelab","homelab-app","news","self-hosted","tracker"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/av.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-16T01:25:54.000Z","updated_at":"2026-05-28T23:08:21.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/av/pace","commit_stats":null,"previous_names":["av/pace"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/av/pace","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/av%2Fpace","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/av%2Fpace/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/av%2Fpace/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/av%2Fpace/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/av","download_url":"https://codeload.github.com/av/pace/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/av%2Fpace/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34231270,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-12T02:00:06.859Z","response_time":109,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["dashboard","docker","homelab","homelab-app","news","self-hosted","tracker"],"created_at":"2026-06-12T06:07:19.597Z","updated_at":"2026-06-12T06:07:20.329Z","avatar_url":"https://github.com/av.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pace\n\n**Self-hosted news aggregator and personal content dashboard.**\n\n![Pace — self-hosted news aggregator dashboard showing Hacker News, Reddit, GitHub, RSS feeds, and more in a configurable layout](./assets/splash.png)\n\nAggregate Hacker News, Reddit, RSS, GitHub, Mastodon, YouTube, arXiv, and 10 more sources into a single dashboard you own. Filter, deduplicate, score, and optionally use an LLM to summarize and rank what matters to you. Everything runs in a single Docker container with zero client-side JavaScript.\n\n- **17 built-in sources** — Hacker News, Reddit, RSS/Atom, GitHub, Mastodon, YouTube, arXiv, npm, Wikipedia, Lemmy, and more\n- **Configurable in YAML** — adapters, transforms, layout, and LLM settings in one file\n- **Self-hosted in one command** — `docker run` and you're done, SQLite for persistence\n- **Optional AI-powered filtering** — LLM summarization, ranking, and filtering via any OpenAI/Anthropic/Google/Groq provider\n- **No client-side JavaScript** — server-rendered HTML, fast on any device\n\n## Quick start\n\n```bash\ndocker run -d -p 7453:7453 -v pace-data:/app/data ghcr.io/av/pace:latest\n```\n\nOpen http://localhost:7453 — the default config ships with Hacker News, Lobsters, GitHub trending/releases, engineering blogs, and DEV.to. Content populates after the initial adapter fetches (usually within seconds of the \"listening\" message).\n\n### With a preset\n\n```bash\ndocker run -d -p 7453:7453 \\\n  -v pace-data:/app/data \\\n  ghcr.io/av/pace:latest --preset tech-news\n```\n\nOr locally: `pace --preset tech-news` (or `pace -P ml-ai`). See `pace --list-presets`.\n\n### Custom config\n\n```bash\ncurl -O https://raw.githubusercontent.com/av/pace/main/config.example.yaml\nmv config.example.yaml config.yaml\n# edit config.yaml with your feeds\n\ndocker run -d -p 7453:7453 \\\n  -v ./config.yaml:/app/config.yaml:ro \\\n  -v pace-data:/app/data \\\n  ghcr.io/av/pace:latest\n```\n\n### From source\n\nRequires Bun v1.3+.\n\n```bash\ngit clone https://github.com/av/pace.git \u0026\u0026 cd pace\nbun install\nbun run dev\n```\n\n## Built-in content adapters\n\nPace ships with 17 adapters that pull content from public APIs. Each adapter has a `refresh_interval` in minutes (default: 15).\n\n| Adapter | Source | Key params |\n|---------|--------|------------|\n| `hackernews` | Hacker News front page, Ask HN, Show HN, jobs | `feed` (top/new/best/ask/show/job), `limit`, `min_score` |\n| `reddit` | Subreddit posts | `subreddits`, `sort`, `limit`, `min_score` |\n| `rss` | Any RSS or Atom feed | `urls` |\n| `github` | GitHub trending repos or releases | `mode` (trending/releases), `repos`, `language`, `since` |\n| `github-releases` | Track new releases for specific repos | `repos`, `token` |\n| `lobsters` | Lobste.rs stories by feed or tag | `feed` (hottest/newest), `limit`, `min_score`, `tags` |\n| `mastodon` | Mastodon public timeline, hashtags, or accounts | `instance`, `hashtags`, `accounts`, `limit` |\n| `youtube` | YouTube channel and playlist feeds | `channels`, `playlists`, `limit` |\n| `devto` | DEV.to articles by tag or author | `tags`, `username`, `top`, `limit`, `min_reactions` |\n| `arxiv` | Academic papers from arXiv | `categories`, `query`, `limit` |\n| `stackexchange` | StackOverflow and other SE sites | `site`, `tags`, `sort`, `min_score` |\n| `wikipedia` | Featured articles, most-read pages, on-this-day, current news | `mode` (most_read/featured/on_this_day/news), `language`, `limit` |\n| `lemmy` | Posts from any Lemmy instance | `instance`, `communities`, `sort`, `limit`, `min_score` |\n| `npm` | npm package search by keyword, scope, or popularity | `keywords`, `scope`, `sort` (optimal/quality/popularity/maintenance), `limit` |\n| `producthunt` | Product Hunt launches | `limit`, `min_upvotes`, `enrich` |\n| `podcast` | Podcast episodes from RSS feeds | `feeds`, `limit` |\n| `twitter` | Twitter/X lists and searches | `lists`, `searches` |\n\n## Ingest-time transforms\n\nTransforms process content after fetching — filter, deduplicate, rank, or enrich items before they reach the dashboard.\n\n`latest` `filter` `exclude` `sort` `dedupe` `time-decay` `keyword-score` `cluster` `llm-summarize` `llm-filter` `llm-rank` `llm-merge`\n\nSee `config.example.yaml` for full options.\n\n## Dashboard layout\n\nArrange panels in a recursive flexbox tree defined in YAML. Each panel displays content from an adapter or pipeline.\n\n```yaml\nlayout:\n  direction: row\n  children:\n    - panel: news\n      source: hackernews\n      flex: 2\n    - direction: column\n      flex: 1\n      children:\n        - panel: blogs\n          source: rss\n        - panel: releases\n          source: gh-releases\n```\n\nResponsive — collapses to a single column on mobile (below 768px).\n\n## LLM-powered content filtering (optional)\n\nConnect any LLM provider via [pi-ai](https://github.com/badlogic/pi-mono) to summarize, filter, rank, or merge content based on your interests. Works with OpenAI, Anthropic, Google, Groq, Mistral, and more. Gracefully degrades when unconfigured — no LLM required to use Pace.\n\n```yaml\nllm:\n  provider: openai\n  model: gpt-4o-mini\n  api_key: ${OPENAI_API_KEY}\n  interests: [systems programming, web development]\n```\n\n## Presets\n\nPresets are bundled in the Docker image and selectable with a single flag (`--preset tech-news` or `-P ml-ai`; see `pace --list-presets`). Ready-to-use configurations for common use cases:\n\n| Preset | Focus |\n|--------|-------|\n| `config.example.yaml` | General software engineering (HN, Lobsters, GitHub, blogs, DEV.to) |\n| `config.tech-news.yaml` | Tech news from multiple sources |\n| `config.ml-ai.yaml` | AI and machine learning research |\n| `config.product-launches.yaml` | Product launches and startup news |\n| `config.release-tracker.yaml` | Software release tracking |\n| `config.academic-papers.yaml` | Academic paper aggregation |\n| `config.video-podcast.yaml` | Video and podcast content |\n\n## Tech stack\n\nBun + Hono + SQLite + JSX server rendering. No client-side JavaScript.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fav%2Fpace","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fav%2Fpace","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fav%2Fpace/lists"}