# prodigy Multi-user session access

**URL:** <https://support.prodi.gy/t/prodigy-multi-user-session-access/1644>\
**Category:** Uncategorized\
**Tags:** usage, solved, streams, multi-user\
**Created:** [June 12, 2019, 9:15am UTC](https://support.prodi.gy/t/prodigy-multi-user-session-access/1644 "2019-06-12T09:15:27Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![padala.vr](https://avatars.discourse-cdn.com/v4/letter/p/e47c2d/32.png) [@padala.vr](https://support.prodi.gy/u/padala.vr)\
**Post date:** [June 12, 2019, 9:15am UTC](https://support.prodi.gy/t/prodigy-multi-user-session-access/1644/1 "2019-06-12T09:15:27Z")

</div>

Hi Prodigy team,

Currently when I am running prodigy server, and using ngrok - at a time multiple users cannot annotate.  
We want to use this annotation application accessible to 100+ users at the same time and monitor the annotation by each user. Also, I want to create a seamless multi user authentication. Could you please provide some detailed information regarding this ?

P.S. I read the information provided in the documentation and I found it not sufficient to understand how to setup what I need.

Thanks a lot,  
Vandana

---

<div class="post-metadata">

**Author:** ![ines](https://sea2.discourse-cdn.com/flex020/user_avatar/support.prodi.gy/ines/32/3_2.png) [@ines](https://support.prodi.gy/u/ines)\
**Post date:** [June 12, 2019, 11:17am UTC](https://support.prodi.gy/t/prodigy-multi-user-session-access/1644/2 "2019-06-12T11:17:57Z")

</div>

Hi! If you're looking for user management and monitoring at that scale, this is probably outside of the scope of Prodigy standalone. You might want to have a look at the upcoming Prodigy Scale, which is a separate product we're developing for exactly that use case. See here for details:

> [@sparkles Prodigy Annotation Manager Update // Prodigy Scale // Prodigy Teams](https://support.prodi.gy/t/prodigy-annotation-manager-update-prodigy-scale/805):
>
> Many of you have been asking about how to scale your Prodigy projects – including how to manage more annotators, how to keep multiple feeds running, and how to make sure your annotators stay in agreement. These are challenging problems that are outside of the scope of the [Prodigy](https://prodi.gy) software itself, so we've always planned an extension product that helps you use Prodigy in larger products. We've been quietly working away on this for some time, so we're excited to finally announce our progress! The …

While Prodigy includes some features you can use to build a multi-user system, you still have to decide how you want it to be set up. For instance, how do you want the authentication to work? How should the users authenticate and should they all annotate the same stream, or should everyone annotate different examples? And do you want to use one instance, or start a new Prodigy server for different users? These are all things you can add around the `prodigy` Python library and how you do this depends on your requirements and your use case. For example, you could run a web server that lets the user log in and then starts up a new annotation task for them by executing a recipe script.

As of v1.7, the library ships with with a built-in feature to name user sessions. Here's the relevant part in the `PRODIGY_README.html`:

> ## Multi-user sessions
> 
> > This update was shipped in preparation of the upcoming [Prodigy Scale](https://support.prodi.gy/t/805), a full-featured, standalone application for large-scale multi-user annotation project powered by Prodigy.
> 
> As of v1.7.0, Prodigy supports multiple named sessions within the **same instance**. This makes it easier to implement custom multi-user workflows and controlling the data that's sent out to individual annotators.
> 
> To create a custom named session, add `?session=xxx` to the annotation app URL. For example, annotator Alex may access a running Prodigy project via `http://localhost:8080/?session=alex`. Internally, this will request and send back annotations with a session identifier consisting of the current dataset name and the session ID – for example, `ner_person-alex`. Every time annotator Alex labels examples for this dataset, their annotations will be associated with this session identifier.
> 
> The `"feed_overlap"` setting in your `prodigy.json` or recipe config lets you configure how examples should be sent out across multiple sessions. By default (`true`), each example in the dataset will be sent out **once for each session** , so you'll end up with overlapping annotations (e.g. one per example per annotator). Setting `"feed_overlap"` to `false` will send out each example in the data **once** to whoever is available. As a result, your data will have each example labelled only once in total.
> 
> As of v1.8.0, the `PRODIGY_ALLOWED_SESSIONS` environment variable lets you define comma-separated string names of sessions that are allowed to be set via the app. For instance, `PRODIGY_ALLOWED_SESSIONS=alex,jo` would only allow `?session=alex` and `?session=jo`, and other parameters would raise an error.

So, in summary, you can direct different annotators to custom URLs ending with `?session=name` and control whether annotators are seeing the same examples or not using the `"feed_overlap"` setting.

---

<div class="post-metadata">

**Author:** ![akshayklr057](https://avatars.discourse-cdn.com/v4/letter/a/f14d63/32.png) [@akshayklr057](https://support.prodi.gy/u/akshayklr057)\
**Post date:** [May 5, 2020, 10:54am UTC](https://support.prodi.gy/t/prodigy-multi-user-session-access/1644/3 "2020-05-05T10:54:35Z")

</div>

Hi,

So I have a problem where I want to annotate the same dataset again & again by multiple users(Basically to capture multiple annotations on each task to analyse all of them).  
Currently I'm handling through mutl-user session, where ?session=xxx can create a seperate session for each user. The problem in this approach is let's say one of the user has completed annotating all of the tasks, and all other users are annotating simultaneously. So what happens is whenever any other user refresh the url it shows no tasks available.

How do I solve this issue/ how should I enable multiple users to tag same data?

---

<div class="post-metadata">

**Author:** ![ines](https://sea2.discourse-cdn.com/flex020/user_avatar/support.prodi.gy/ines/32/3_2.png) [@ines](https://support.prodi.gy/u/ines)\
**Post date:** [May 5, 2020, 9:52pm UTC](https://support.prodi.gy/t/prodigy-multi-user-session-access/1644/4 "2020-05-05T21:52:16Z")

</div>

@akshayklr057 Hi, check out the answer on your other thread here – setting `"force_stream_order"` will make sure that all examples are re-sent until they're answered, and always sent out in the same order:

> [@Task lost on "page refresh"](https://support.prodi.gy/t/task-lost-on-page-refresh/2871/2):
>
> Hi @akshayklr057, Have you tried setting "force\_stream\_order" in your recipe? When you set that value to true, the app will repeat the same question until you answer it, even if you "page refresh".

---

<div class="post-metadata">

**Author:** ![Poonam](https://avatars.discourse-cdn.com/v4/letter/p/b38774/32.png) [@Poonam](https://support.prodi.gy/u/Poonam)\
**Post date:** [June 1, 2021, 11:29am UTC](https://support.prodi.gy/t/prodigy-multi-user-session-access/1644/5 "2021-06-01T11:29:52Z")

</div>

How can I add my fellow annotaters in my project?

---

<div class="post-metadata">

**Author:** ![ines](https://sea2.discourse-cdn.com/flex020/user_avatar/support.prodi.gy/ines/32/3_2.png) [@ines](https://support.prodi.gy/u/ines)\
**Post date:** [June 2, 2021, 2:10am UTC](https://support.prodi.gy/t/prodigy-multi-user-session-access/1644/6 "2021-06-02T02:10:40Z")

</div>

You don't have to do anything to add people – Prodigy doesn't have a concept of a "user", so you can just start an instance and send your annotators the link. You can either start multiple instances on different hosts and/or ports, or a single instance that people can access with named sessions by adding `?session=...` to the URL.

---

<div class="post-metadata">

**Author:** ![bob\_schijvenaars](https://avatars.discourse-cdn.com/v4/letter/b/ad7895/32.png) [@bob\_schijvenaars](https://support.prodi.gy/u/bob_schijvenaars)\
**Post date:** [December 15, 2021, 9:17am UTC](https://support.prodi.gy/t/prodigy-multi-user-session-access/1644/7 "2021-12-15T09:17:29Z")

</div>

Hi,

I hooked up postgres to Prodigy, and figuring out the data schema. I don't see the session identifier anywhere in the database. Is that stored? I'd like to distinguish test users from actual ones for instance.

---

<div class="post-metadata">

**Author:** ![ines](https://sea2.discourse-cdn.com/flex020/user_avatar/support.prodi.gy/ines/32/3_2.png) [@ines](https://support.prodi.gy/u/ines)\
**Post date:** [December 15, 2021, 7:07pm UTC](https://support.prodi.gy/t/prodigy-multi-user-session-access/1644/8 "2021-12-15T19:07:04Z")

</div>

> [@bob\_schijvenaars](#):
>
> I don't see the session identifier anywhere in the database. Is that stored? I'd like to distinguish test users from actual ones for instance.

Hi! The session ID should be stored with every example as the `_session_id` key in the JSON. Prodigy will also create session datasets for each session, e.g. `{dataset}-{session_id}`.
