Skip to content

Commit b50fd89

Browse files
Merge branch 'main' into haystack-integration
2 parents 8984204 + bcb41f1 commit b50fd89

35 files changed

Lines changed: 1373 additions & 781 deletions

.github/pull_request_template.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ Closes #<!-- the tracking issue this PR implements; comment on it to claim it be
77
## Checklist
88

99
<!-- See CONTRIBUTING.md for details. Tick what applies; delete rows that don't. -->
10+
<!-- Adding a community index entry (community/projects.yaml)? Only the rules in
11+
community/CONTRIBUTING.md apply — delete this checklist. -->
1012

1113
- [ ] Linked to its tracking issue (commented to claim it before starting)
1214
- [ ] Example is in the right bucket (`integrations` / `guides` / `use-cases` / `scripts`)

.github/workflows/community-check.yml

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
name: Community Entry Check
2-
3-
# Lightweight, non-executing gate for community showcase entries.
4-
# It does NOT run contributor code. It validates entry structure, scans for
5-
# committed secrets, and confirms hosted entries use Opik. Secrets-free, so it
6-
# runs on forks. The showcase index (community/README.md) is regenerated
7-
# separately on merge by community-index.yml — contributors run nothing.
1+
name: Community Projects Check
2+
3+
# Lightweight, non-executing gate for the community index. Community projects
4+
# are links-only — code lives in the authors' repos — so this only validates
5+
# community/projects.yaml (required fields, valid repo URLs/handles, no
6+
# duplicates). Secrets-free, so it runs on forks. The index
7+
# (community/README.md) is regenerated separately on merge by
8+
# community-index.yml — contributors run nothing.
89
#
910
# Community entries are intentionally exempt from the verified-bucket workflows
1011
# (compliance / pr-test / test-notebooks / scheduled), which are path-scoped to
@@ -47,7 +48,7 @@ jobs:
4748
uv run ruff check .
4849
uv run ruff format --check .
4950
50-
- name: Validate all community entries
51+
- name: Validate community projects
5152
run: |
5253
cd community/_ci
53-
uv run python check_entry.py
54+
uv run python check_projects.py

.github/workflows/community-index.yml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
name: Community Index
22

3-
# Regenerates the community showcase index (community/README.md) from every
4-
# entry's meta.yaml after changes land on main. This keeps the index current
5-
# with zero manual action — contributors never run the generator, and no one
6-
# hand-edits community/README.md.
3+
# Regenerates the community index (community/README.md) from
4+
# community/projects.yaml after changes land on main. This keeps the index
5+
# current with zero manual action — contributors never run the generator, and
6+
# no one hand-edits community/README.md.
77
#
88
# It runs build_index.py (which only parses YAML — it never executes contributor
99
# code) and commits the result back to main only if it changed. The path filter
@@ -37,7 +37,7 @@ jobs:
3737
enable-cache: true
3838
python-version: "3.12"
3939

40-
- name: Regenerate showcase index
40+
- name: Regenerate community index
4141
run: |
4242
cd community/_ci
4343
uv sync
@@ -49,8 +49,8 @@ jobs:
4949
git config user.name "github-actions[bot]"
5050
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
5151
git add community/README.md
52-
git commit -m "chore: regenerate community showcase index"
52+
git commit -m "chore: regenerate community index"
5353
git push
5454
else
55-
echo "Showcase index already up to date."
55+
echo "Community index already up to date."
5656
fi

AGENTS.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,15 @@ opik-examples/
1010
├── guides/ # How-to patterns for Opik workflows
1111
├── use-cases/ # End-to-end applications and domain workflows
1212
├── scripts/ # Utility automations and API helpers
13-
└── templates/ # Starter templates (use-case-template, script-template)
13+
├── templates/ # Starter templates (use-case-template, script-template)
14+
└── community/ # Curated links-only index of community-built projects
1415
```
1516

17+
The `community/` folder is not a code bucket: it is a curated index
18+
(`community/projects.yaml` → generated `community/README.md`) of projects that
19+
live in their authors' repos. It is exempt from the `run.sh` / dry-run / litellm
20+
contract — see [community/CONTRIBUTING.md](community/CONTRIBUTING.md).
21+
1622
**Which bucket does new code belong in?**
1723

1824
| If you are… | Put it in |

CODE_OF_CONDUCT.md

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
# Contributor Covenant Code of Conduct
2+
3+
## Our Pledge
4+
5+
We as members, contributors, and leaders pledge to make participation in our
6+
community a harassment-free experience for everyone, regardless of age, body
7+
size, visible or invisible disability, ethnicity, sex characteristics, gender
8+
identity and expression, level of experience, education, socio-economic status,
9+
nationality, personal appearance, race, caste, color, religion, or sexual
10+
identity and orientation.
11+
12+
We pledge to act and interact in ways that contribute to an open, welcoming,
13+
diverse, inclusive, and healthy community.
14+
15+
## Our Standards
16+
17+
Examples of behavior that contributes to a positive environment for our
18+
community include:
19+
20+
* Demonstrating empathy and kindness toward other people
21+
* Being respectful of differing opinions, viewpoints, and experiences
22+
* Giving and gracefully accepting constructive feedback
23+
* Accepting responsibility and apologizing to those affected by our mistakes,
24+
and learning from the experience
25+
* Focusing on what is best not just for us as individuals, but for the overall
26+
community
27+
28+
Examples of unacceptable behavior include:
29+
30+
* The use of sexualized language or imagery, and sexual attention or advances
31+
of any kind
32+
* Trolling, insulting or derogatory comments, and personal or political attacks
33+
* Public or private harassment
34+
* Publishing others' private information, such as a physical or email address,
35+
without their explicit permission
36+
* Other conduct which could reasonably be considered inappropriate in a
37+
professional setting
38+
39+
## Enforcement Responsibilities
40+
41+
Community leaders are responsible for clarifying and enforcing our standards of
42+
acceptable behavior and will take appropriate and fair corrective action in
43+
response to any behavior that they deem inappropriate, threatening, offensive,
44+
or harmful.
45+
46+
Community leaders have the right and responsibility to remove, edit, or reject
47+
comments, commits, code, wiki edits, issues, and other contributions that are
48+
not aligned to this Code of Conduct, and will communicate reasons for
49+
moderation decisions when appropriate.
50+
51+
## Scope
52+
53+
This Code of Conduct applies within all community spaces, and also applies when
54+
an individual is officially representing the community in public spaces.
55+
56+
## Enforcement
57+
58+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
59+
reported to the maintainers by opening an issue in this repository or through
60+
[Comet support](https://www.comet.com/site/about-us/contact-us/). All
61+
complaints will be reviewed and investigated promptly and fairly.
62+
63+
All community leaders are obligated to respect the privacy and security of the
64+
reporter of any incident.
65+
66+
## Attribution
67+
68+
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
69+
version 2.1, available at
70+
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
71+
72+
For answers to common questions about this code of conduct, see the FAQ at
73+
[https://www.contributor-covenant.org/faq][FAQ].
74+
75+
[homepage]: https://www.contributor-covenant.org
76+
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
77+
[FAQ]: https://www.contributor-covenant.org/faq

README.md

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ opik-examples/
1313
├── guides/ # How-to examples for Opik workflows and patterns
1414
├── use-cases/ # End-to-end applications and domain workflows
1515
├── scripts/ # Utility automations and API helpers
16-
└── templates/ # Starter templates (use-case-template, script-template)
16+
├── templates/ # Starter templates (use-case-template, script-template)
17+
└── community/ # Curated index of community-built projects (links only)
1718
```
1819

1920
## Integrations
@@ -56,15 +57,17 @@ Standalone scripts for automating and managing Opik resources.
5657
| [scripts/automate_annotation_queue](scripts/automate_annotation_queue/) | Route traces into annotation queues via batch or real-time assignment |
5758
| [scripts/usage_stats](scripts/usage_stats/) | Fetch trace and span counts per project and visualise trends |
5859
| [scripts/leaderboard_dashboard](scripts/leaderboard_dashboard/) | Create an Experiment Leaderboard dashboard via the REST API |
60+
| [scripts/score_traces](scripts/score_traces/) | Score existing production traces offline with stock SDK judges/metrics, logging feedback back under the same names an online rule would use |
5961

6062
## Community
6163

62-
Work built with Opik by the open-source community. Unlike the buckets above,
63-
these entries are **community-contributed and not maintainer-verified** — they
64-
showcase what people are building. Standout real-world projects get hosted
65-
in-repo and spotlighted in our community forums.
64+
A curated index of projects the open-source community has built with Opik.
65+
It is links-only — each project lives in its author's repository. Unlike the
66+
buckets above, these entries are **community-contributed and not
67+
maintainer-verified**.
6668

67-
Browse them in [community/](community/), or add your own via
69+
Browse the table in [community/](community/), or add your own project with a
70+
single block in `projects.yaml` — see
6871
[community/CONTRIBUTING.md](community/CONTRIBUTING.md).
6972

7073
## Contributing

community/CONTRIBUTING.md

Lines changed: 42 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,54 @@
1-
# Contributing to the Community folder
1+
# Contributing to the Community index
22

3-
This folder showcases work the open-source community has built with Opik. It is
4-
deliberately **lighter-weight than the main repo contract** — the strict
5-
`run.sh` / dry-run / litellm / CI rules in the root
3+
This folder is a **curated, links-only index** of projects the open-source
4+
community has built with [Opik](https://www.comet.com/site/products/opik/).
5+
Your code stays in your own repository — the index just points to it. That
6+
means no sync issues when you update your project, and contributing takes a
7+
couple of minutes.
8+
9+
The strict `run.sh` / dry-run / litellm / CI rules in the root
610
[CONTRIBUTING.md](../CONTRIBUTING.md) do **not** apply here. Community entries
7-
are not executed by CI; a maintainer reviews (and, for hosted entries, runs)
8-
them by hand.
11+
are not executed by CI; a maintainer reviews each submission by hand.
12+
13+
## Add your project
914

10-
There is one thing we always require: **proof you actually logged with Opik**
11-
either Comet cloud or the self-hosted open-source platform.
15+
1. Add one block to [`projects.yaml`](projects.yaml):
1216

13-
## Two kinds of entry
17+
```yaml
18+
- title: Your project title
19+
description: One or two sentences on what you built and how it uses Opik.
20+
author: your-github-handle
21+
repo: https://github.com/your-handle/your-project
22+
```
1423
15-
- **Listed** (default): a folder describing your work with links out to your own
16-
repo/blog/notebook. No code needs to live here.
17-
- **Hosted**: standout, real-world projects we promote into this repo with their
18-
code included. You submit as *listed*; a maintainer sets `hosted: true` and
19-
moves your code in when promoting. We also spotlight promoted work in our
20-
community forums.
24+
2. Open a PR. That's it — you don't need to run anything.
2125
22-
## Add your entry
26+
All four fields are required. Keep `description` under 250 characters,
27+
`author` a bare GitHub handle (no `@`, no URL), and `repo` an http(s) link.
28+
Don't edit `README.md` — it is generated from `projects.yaml` automatically
29+
after your PR merges.
2330

24-
1. Copy `templates/entry-template/` to `community/<your-handle>_<project>/`
25-
(lowercase, underscores, e.g. `jane_support_agent`).
26-
2. Fill in `meta.yaml` (all fields) and `README.md` (all four sections).
27-
3. Replace `opik-proof.png` with a real screenshot of your Opik traces or
28-
dashboard.
29-
4. If you want it considered for hosting, include your code in the folder — it
30-
must genuinely use Opik (`import opik`, `@opik.track`, ...).
31-
5. Open a PR. A maintainer reviews it.
31+
## Review bar
3232

33-
That's it — you don't need to run anything. The showcase index
34-
(`community/README.md`) is regenerated automatically when your entry merges, so
35-
your project appears there without any manual step on your part.
33+
A maintainer checks that the linked project genuinely uses Opik (e.g.
34+
`import opik`, `@opik.track`, or Opik dashboards in the docs) and that the
35+
description is accurate. Entries are **community-contributed and not
36+
maintainer-verified** — we curate the list, we don't maintain the projects.
3637

3738
## What the automated check enforces
3839

39-
`community/_ci/check_entry.py` runs on your PR (a hard gate). It does **not**
40-
run your code. It checks:
40+
`community/_ci/check_projects.py` runs on your PR (a hard gate). It only
41+
validates `projects.yaml`:
42+
43+
- Every entry has `title`, `description`, `author`, and `repo` (and no other
44+
fields).
45+
- `repo` is an http(s) URL and `author` is a valid GitHub handle.
46+
- `description` is at most 250 characters.
47+
- No duplicate titles or repos.
48+
49+
## Promotion
4150

42-
- `meta.yaml` has all required fields, at least one link, and a valid
43-
`opik_platform`.
44-
- `README.md` has all four sections filled in (no leftover `TODO`).
45-
- `opik-proof.png` exists and is referenced from your README.
46-
- No `.env` file or hardcoded API keys are committed.
47-
- Hosted entries contain code that uses Opik.
48-
- The folder name is `lowercase_with_underscores`.
51+
Standout projects that meet the standards of the verified buckets
52+
(`integrations/`, `guides/`, `use-cases/`, `scripts/`) may be invited into the
53+
main repo — the root [CONTRIBUTING.md](../CONTRIBUTING.md) contract applies
54+
there.

community/README.md

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,15 @@
22

33
<!-- This file is generated by community/_ci/build_index.py. Do not edit by hand. -->
44

5-
Work built with Opik by the open-source community. These entries are
5+
A curated index of projects the open-source community has built with Opik. It is
6+
links-only: each project lives in its author's repository, and entries are
67
**community-contributed and not maintainer-verified** — they are showcased here
7-
to help people discover what others are building. Standout, real-world projects
8-
are hosted in-repo (see the Hosted column).
8+
to help people discover what others are building.
99

10-
To add your own, see [CONTRIBUTING.md](CONTRIBUTING.md).
10+
To add yours, see [CONTRIBUTING.md](CONTRIBUTING.md) — it's one small block in
11+
[projects.yaml](projects.yaml).
1112

12-
_No community contributions yet — be the first!_
13+
| Project | Description | Author |
14+
|---|---|---|
15+
| [Building a Coding Agent from Scratch (course)](https://github.com/decodingai-magazine/building-a-coding-agent-from-scratch-course) | An open-source course that builds a terminal coding agent from scratch, using Opik for tracing and evals. | [@decodingai-magazine](https://github.com/decodingai-magazine) |
16+
| [Observable Job Agent](https://github.com/jamwithai/observable-job-agent) | An observability-first CV-to-job-matching agent, instrumented with Opik from run one. | [@jamwithai](https://github.com/jamwithai) |

0 commit comments

Comments
 (0)