diff --git a/compendium_v2/db/auth_model.py b/compendium_v2/db/auth_model.py
index 66772fec077d95354ed6b2b3acf2f4835ce9d149..b105a8b1947c754fea227cd70a922d4100bf81e0 100644
--- a/compendium_v2/db/auth_model.py
+++ b/compendium_v2/db/auth_model.py
@@ -23,6 +23,7 @@ logger = logging.getLogger(__name__)
 class ROLES(Enum):
     admin = "admin"
     user = "user"
+    observer = "observer"
 
 
 uuid_pk = Annotated[UUID, mapped_column(primary_key=True, default=lambda _: uuid4())]
diff --git a/compendium_v2/migrations/versions/51a29df6148c_add_observer_role.py b/compendium_v2/migrations/versions/51a29df6148c_add_observer_role.py
new file mode 100644
index 0000000000000000000000000000000000000000..e4359a1999f158a153ceca3790dbc42bf1f2483e
--- /dev/null
+++ b/compendium_v2/migrations/versions/51a29df6148c_add_observer_role.py
@@ -0,0 +1,27 @@
+"""Add observer role
+
+Revision ID: 51a29df6148c
+Revises: 3730c7f1ea1b
+Create Date: 2023-09-07 10:48:30.087825
+
+"""
+from alembic import op
+
+
+# revision identifiers, used by Alembic.
+revision = '51a29df6148c'
+down_revision = '3730c7f1ea1b'
+branch_labels = None
+depends_on = None
+
+
+def upgrade():
+    op.sync_enum_values('public', 'roles', ['admin', 'user', 'observer'],
+                        [('user', 'roles')],
+                        enum_values_to_rename=[])
+
+
+def downgrade():
+    op.sync_enum_values('public', 'roles', ['admin', 'user'],
+                        [('user', 'roles')],
+                        enum_values_to_rename=[])