Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ aws-config = { version = "1", features = ["behavior-version-latest"], optional =
aws-sdk-bedrockruntime = { version = "1", optional = true }
aws-smithy-types = { version = "1", optional = true }
axum = "0.8.8"
bytes = "1.9"
chrono = "0.4.43"
clap = { version = "4.5.54", features = ["derive", "env"] }
config = "0.15.19"
Expand All @@ -52,6 +53,7 @@ ignore = "0.4.25"
lettre = { version = "0.11.7", features = ["tokio1", "tokio1-native-tls"] }
libsql = "0.9.29"
mail-parser = "0.11.1"
md5 = "0.7.0"
regex = "1.12.2"
reqwest = { version = "0.13.1", features = ["json"] }
serde = { version = "1.0.228", features = ["derive"] }
Expand Down
13 changes: 9 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,11 @@ Please, note that as with any other LLM-based tools, Sashiko's output is probabi

## Features

- **Automated Ingestion**: Monitors mailing lists (using `lore.kernel.org`) for new patch submissions.
- **Manual Ingestion**: Can ingest patches from a local git repository.
- **Self-contained**: Doesn't depend on 3rd-party tools and can work with various LLM providers (Gemini and Claude are currently supported).
- **Web interface and CLI**: Provides a web interface and a CLI tool. Email support will be added soon.
- **Automated Ingestion**: Monitors mailing lists (`lore.kernel.org`), GitHub PRs, and GitLab MRs for new patch submissions.
- **Manual Ingestion**: Can ingest patches from local git repositories or specific PRs/MRs.
- **Forge Integration**: Automatic PR/MR review via GitHub and GitLab webhooks.
- **Self-contained**: Doesn't depend on 3rd-party tools and works with multiple LLM providers (Gemini and Claude currently supported).
- **Web interface and CLI**: Provides a web interface for monitoring and a CLI tool for local development.

## Prompts

Expand Down Expand Up @@ -90,6 +91,10 @@ cargo install sashiko
* **Server**: API server host and port.
* **Git**: Path to the reference kernel repository.
* **Review**: Concurrency and worktree settings.
* **Tools**: Configure which AI tools are enabled (optional). See [docs/TOOLS.md](docs/TOOLS.md) for details.
* **Forge**: GitHub/GitLab webhook integration (optional). See forge setup guides below.
* **Prompts**: Customize review stages and prompts (optional). See [docs/PROMPTS.md](docs/PROMPTS.md) for details.
* **Subsystems**: Map file patterns to subsystems for targeted reviews (optional).

### Configuring the LLM Provider

Expand Down
30 changes: 30 additions & 0 deletions Settings.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,22 @@
log_level = "info"

[project]
name = "Sashiko"
description = ""

[forge]
enabled = false
# provider = "github"
# webhook_secret = "your-webhook-secret"
# api_token = "your-api-token"

[subsystems]
# Regex map: email address pattern -> subsystem name
# mapping = [
# { pattern = ".*linux-kernel@vger.kernel.org.*", name = "LKML" },
# { pattern = ".*netdev@vger.kernel.org.*", name = "netdev" },
# ]

[database]
url = "sashiko.db"
token = ""
Expand Down Expand Up @@ -84,3 +101,16 @@ worktree_dir = "review_trees"
timeout_seconds = 7200
max_retries = 3
ignore_files = ["MAINTAINERS", ".mailmap", ".gitignore", "LICENSES/"]

[tools]
# enabled = ["read_files", "git_diff"] # allowlist (empty = all enabled)
# disabled = [] # denylist (takes precedence)

[prompts]
# directory = "third_party/prompts/kernel" # local path
# directory = "https://example.com/prompts" # remote HTTP(S)
# directory = "git://github.com/user/prompts.git" # git repo
# stages_config = "stages.toml"

[prompts.variables]
# Custom template variables for prompt substitution: {{variable_name}}
Loading