mem0ai/mem0 · error · HTTPException
JWT_SECRET is not configured.
Error message
JWT_SECRET is not configured.
What it means
Error "JWT_SECRET is not configured." thrown in mem0ai/mem0.
Source
Thrown at server/auth.py:53
pwd_context.dummy_verify()
def generate_api_key() -> tuple[str, str, str]:
"""Returns (full_key, prefix, hash)."""
raw = secrets.token_urlsafe(32)
full_key = f"m0sk_{raw}"
prefix = full_key[:12]
key_hash = pwd_context.hash(full_key)
return full_key, prefix, key_hash
def verify_api_key_hash(plain_key: str, hashed: str) -> bool:
return pwd_context.verify(plain_key, hashed)
def _get_secret() -> str:
if not JWT_SECRET:
raise HTTPException(status_code=500, detail="JWT_SECRET is not configured.")
return JWT_SECRET
def create_access_token(user_id: str, role: str) -> str:
expire = datetime.now(timezone.utc) + timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES)
payload = {"sub": user_id, "role": role, "exp": expire, "type": "access"}
return jwt.encode(payload, _get_secret(), algorithm=JWT_ALGORITHM)
def create_refresh_token(user_id: str, db: Session) -> str:
expire = datetime.now(timezone.utc) + timedelta(days=REFRESH_TOKEN_EXPIRE_DAYS)
jti = uuid.uuid4()
db.add(RefreshTokenJti(jti=jti, user_id=uuid.UUID(user_id), expires_at=expire))
db.commit()
payload = {"sub": user_id, "exp": expire, "jti": str(jti), "type": "refresh"}
return jwt.encode(payload, _get_secret(), algorithm=JWT_ALGORITHM)
View on GitHub (pinned to 001c235229)
Solutions
- Set JWT_SECRET in the server .env (generate with `openssl rand -base64 48`) or set AUTH_DISABLED=true for local development.
When it happens
Trigger: Thrown at server/auth.py:53 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of mem0ai/mem0@001c235229 (2026-08-15).
Data as JSON: /api/errors/012e08ba066a4d2b.
Report an issue: GitHub.