Repositories
A repository in Abstractions maps to a GitHub repository. Once connected, Abstractions indexes its history and generates newsletters on the schedule you configure.
Connecting a repository
Before connecting a repository, you need GitHub connected in Integrations.
- Go to Repositories and click Connect repository
- Abstractions will list the repos available from your connected GitHub account
- Select the repository you want to track
- Click Connect
Indexing starts immediately. For large repositories with long commit histories, the initial index can take several minutes.
You can connect multiple repositories to the same workspace. Each one has its own newsletter schedule and subscriber list.
Repository overview
The overview page shows the current status of your repository — indexing state, last indexed commit, and a summary of recent activity. If indexing is still running, you'll see a progress indicator.
Newsletter settings
Open a repository and go to Settings to configure:
- Newsletter enabled — toggle to pause newsletter generation for this repository without disconnecting it
- Send day and time — the day of the week and time (in your local timezone) when newsletters are sent automatically
- Send to workspace members — include all workspace members as recipients by default
- Additional recipients — add external email addresses that aren't workspace members
Changes take effect from the next scheduled send.
Triggering a manual index
If you want to force a re-index (for example, after adding new commits that weren't picked up):
- Open the repository Settings
- Click Trigger index
This queues a full re-index. It doesn't affect scheduled sends.
How indexing works
Indexing is what gives Abstractions enough context about your codebase to generate useful newsletters. It runs automatically when you first connect a repository, and you can trigger it manually from Settings at any time.
What gets indexed
Abstractions fetches a filtered file tree from GitHub — not every file in the repo. Binary files, build artifacts, lock files, and other non-meaningful paths are excluded automatically. What's left is the set of source files that carry semantic meaning: code, configs, documentation.
Only files that have changed since the last index run are re-processed. Unchanged files keep their existing summaries and embeddings.
The indexing pipeline
For each file in the filtered tree:
- Fetch — Abstractions fetches the file contents from GitHub at the current HEAD commit SHA.
- Chunk — Large files are split into overlapping chunks so that long files don't lose context at the edges.
- Summarize — Each chunk is passed to your configured indexing model, which produces a plain-language summary of what that chunk does. A higher-level file summary is also stored.
- Embed — The chunk summary is converted into a vector embedding using your indexing model. This embedding is stored in the database alongside the summary.
The stored embeddings are what power newsletter generation. When a topic is selected, Abstractions performs a vector similarity search across all chunk embeddings to find the most relevant code context for that topic.
Indexing is CPU and token-intensive for large repositories. A repo with a few hundred files typically finishes in a few minutes. A very large monorepo can take longer on the first run; subsequent runs are incremental and much faster.
Deleting a repository
To remove a repository from Abstractions:
- Open the repository Settings
- Scroll to the bottom and click Delete repository
- Confirm the deletion
Deleting a repository removes all associated newsletters, topics, and indexed data permanently. This action cannot be undone.
Next steps
- Newsletters — generate and send your first newsletter
- Topics — manage the topic queue for a repository