From abcb9c688f25945afcce9ab194fffb5ba20a354a Mon Sep 17 00:00:00 2001 From: spitzblattr <36479200+spitzblattr@users.noreply.github.com> Date: Mon, 2 Mar 2026 20:34:42 +0800 Subject: [PATCH 1/4] style: print MemOS logo on server start Added a function to print the MemOS logo with version. --- src/memos/api/server_api.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/memos/api/server_api.py b/src/memos/api/server_api.py index 529a709a4..797fa5511 100644 --- a/src/memos/api/server_api.py +++ b/src/memos/api/server_api.py @@ -13,6 +13,25 @@ load_dotenv() +# print MemOS logo +def log_memos_logo(lgr: logging.Logger, version: str) -> None: + logo_template = Template( + "\n" + "${p}⠀⠀⠀⠀⠀⢾⣿⠀⠀⠰⣿⣷⠀⠀⠀⠀⠀⠀⠀${r}${w}⣶⣦⠀⠀⠀⢀⣶⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣤⡶⠶⢶⣤⠀⠀⣠⡶⠶⢶⣄⠀${r}\n" + "${p}⠀⠀⠀⣠⣤⠊⠉⣦⣤⣄⠉⢹⣤⡀⠀⠀⠀⠀⠀${r}${w}⣿⣿⡆⠀⠀⣼⢿⡇⠀⣠⠤⠤⣄⠀⢠⣄⣤⣤⣄⣤⣤⣄⠀⣼⡟⠀⠀⠀⢿⣧⠀⣿⣅⠀⠈⠛⠀${r}\n" + "${p}⠀⠀⣠⠿⠛⠀⠀⡻⠿⢟⠀⠀⠛⠿⡀⠀⠀⠀⠀${r}${w}⣿⡇⢿⡄⣸⠏⢸⡇⢰⣿⠤⠤⠿⠇⢸⡇⠀⢸⣿⠀ ⣿⠀⣿⡇⠀⠀⠀⢸⣿⠀⠈⠙⠛⠿⣶⡀${r}\n" + "${p}⠰⣿⡇⠀⠀⢾⣿⠆⠀⠸⣿⡇⠀⠀⢸⣿⠆⠀⠀${r}${w}⣿⡇⠈⣿⡟⠀⢸⡇⠈⢿⣤⣤⣶⠂⢸⡇⠀⢸⣿⠀ ⣿⠀⠘⢿⣤⣤⣴⡿⠃⠀⢿⣦⣤⣤⡿⠁${r} version ${w}%s${r}\n" + ) + colors = { + "p": "\033[94m", # blue + "w": "\033[97m", # white + "r": "\033[0m", # reset + } + if not sys.stderr.isatty(): + colors = dict.fromkeys(colors, "") + banner = logo_template.substitute(colors) % (version,) + print(banner, file=sys.stderr, flush=True) + # Configure logging logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s") logger = logging.getLogger(__name__) @@ -41,11 +60,11 @@ if __name__ == "__main__": import argparse - import uvicorn parser = argparse.ArgumentParser() parser.add_argument("--port", type=int, default=8001) parser.add_argument("--workers", type=int, default=1) args = parser.parse_args() + log_memos_logo(logger, app.version) uvicorn.run("memos.api.server_api:app", host="0.0.0.0", port=args.port, workers=args.workers) From d175ca93a6f6b82499f820ee3c9fe83e95f624a2 Mon Sep 17 00:00:00 2001 From: spitzblattr <36479200+spitzblattr@users.noreply.github.com> Date: Mon, 2 Mar 2026 20:43:37 +0800 Subject: [PATCH 2/4] style: print MemOS logo on server start --- src/memos/api/server_api.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/memos/api/server_api.py b/src/memos/api/server_api.py index 797fa5511..4b6980a68 100644 --- a/src/memos/api/server_api.py +++ b/src/memos/api/server_api.py @@ -1,5 +1,7 @@ import logging import os +import sys +from string import Template from dotenv import load_dotenv from fastapi import FastAPI, HTTPException From e886bbc24de0192e7172f0cb8b7224049dc842a7 Mon Sep 17 00:00:00 2001 From: spitzblattr <36479200+spitzblattr@users.noreply.github.com> Date: Mon, 2 Mar 2026 20:56:03 +0800 Subject: [PATCH 3/4] style: print MemOS logo on server start --- src/memos/api/server_api.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/memos/api/server_api.py b/src/memos/api/server_api.py index 4b6980a68..2e1475b87 100644 --- a/src/memos/api/server_api.py +++ b/src/memos/api/server_api.py @@ -1,6 +1,7 @@ import logging import os import sys + from string import Template from dotenv import load_dotenv @@ -62,6 +63,7 @@ def log_memos_logo(lgr: logging.Logger, version: str) -> None: if __name__ == "__main__": import argparse + import uvicorn parser = argparse.ArgumentParser() From b9e411df16ebeeb948236e651db57f09b040bffe Mon Sep 17 00:00:00 2001 From: spitzblattr <36479200+spitzblattr@users.noreply.github.com> Date: Mon, 2 Mar 2026 21:05:33 +0800 Subject: [PATCH 4/4] style: print MemOS logo on server start --- src/memos/api/server_api.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/memos/api/server_api.py b/src/memos/api/server_api.py index 2e1475b87..09bdc714d 100644 --- a/src/memos/api/server_api.py +++ b/src/memos/api/server_api.py @@ -16,6 +16,7 @@ load_dotenv() + # print MemOS logo def log_memos_logo(lgr: logging.Logger, version: str) -> None: logo_template = Template( @@ -26,15 +27,16 @@ def log_memos_logo(lgr: logging.Logger, version: str) -> None: "${p}⠰⣿⡇⠀⠀⢾⣿⠆⠀⠸⣿⡇⠀⠀⢸⣿⠆⠀⠀${r}${w}⣿⡇⠈⣿⡟⠀⢸⡇⠈⢿⣤⣤⣶⠂⢸⡇⠀⢸⣿⠀ ⣿⠀⠘⢿⣤⣤⣴⡿⠃⠀⢿⣦⣤⣤⡿⠁${r} version ${w}%s${r}\n" ) colors = { - "p": "\033[94m", # blue - "w": "\033[97m", # white - "r": "\033[0m", # reset + "p": "\033[94m", # blue + "w": "\033[97m", # white + "r": "\033[0m", # reset } if not sys.stderr.isatty(): colors = dict.fromkeys(colors, "") banner = logo_template.substitute(colors) % (version,) print(banner, file=sys.stderr, flush=True) - + + # Configure logging logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s") logger = logging.getLogger(__name__) @@ -63,7 +65,7 @@ def log_memos_logo(lgr: logging.Logger, version: str) -> None: if __name__ == "__main__": import argparse - + import uvicorn parser = argparse.ArgumentParser()