דילוג לתוכן

אקוסיסטם

כיצד הפלטפורמות שלנו משתלבות זו בזו.
כל תחוםכלי אחד.

RODMENA בונה את מוצריה מתוך מערך של ספריות פנימיות ומשירותים מאוחסנים קטנים שלכל אחד מהם מטרה אחת, ומקצה כל תחום לכלי אחד בלבד. לפלטפורמות יש צוותים משלהן והן מתקשרות באמצעות אפיק הודעות משותף.

מוצרים
13
פלטפורמות מתארחות
8
ספריות, מנועים ו-CLIs
8
אפיק הודעות משותף
1

עקרונות תכנון

  • תחום אחד, כלי אחד

    אימות זהות הוא Identity, הרשאה היא Auth, מדידה היא TokenGate, דואר אלקטרוני הוא Mail API, אישורים הם Futex, קונטיינרים הם RunFlow ותהליכי עבודה סוכניים הם Highway. מוצרים לעולם אינם מיישמים מחדש תחום שכבר שייך לכלי בית.

  • צוותים מתאמים בדואר

    לכל פלטפורמה יש סוכן, הקשר ומאגר משלה. צוותים מתאמים ביניהם בין הפלטפורמות דרך אפיק ההודעות agent-mail. אף צוות אינו עורך את המאגר של צוות אחר ואינו פותח כרטיסים במערכת המעקב שלו.

  • מסדי נתונים הפרוסים בין מדינות

    לשירותים יש מסדי נתונים משלהם, במארחים שונים במדינות שונות. יישום ניתן לפריסה מחדש אך הנתונים שלו לא, ואנו מפרידים בין השניים. כל מסדי הנתונים משוכפלים לאזור שלישי ומגובים מחוץ לאתר (off-site).

Where it runs

מארחים ואזורים

הצי המנוהל מכיל 22 מסדי נתונים של סביבת ייצור, שכל אחד מהם בבעלות שירות אחד, על גבי 4 מארחי מסדי נתונים ב-3 מדינות, ו-4 נוספים פועלים על מארח אפליקציה. אין שני שירותים שחולקים סכמה, והפלטפורמה אינה תלויה במכונה בודדת כלשהי.

מסדי נתונים בייצור, שכל אחד מהם בבעלות שירות אחד
22
מארחי מסד נתונים
4
מדינות
3
דקות לכל היותר: נקודת השחזור בצי המנוהל
≤5
  • UKהממלכה המאוחדת

    יישומים ושני מארחי מסדי נתונים

    מארח את שכבת היישומים ואת מסדי הנתונים עבור מנוע תהליכי העבודה, שירות האישורים, אפיק ההודעות, הדואר האלקטרוני, ספר החשבונות ופלטפורמת המשימות.

  • FRצרפת

    מארח מסד נתונים

    מחזיק את מישור הזהות והגישה, הרשאה, מדידה וספק הזהות, בנפרד מהשירותים התלויים בו.

  • DEגרמניה

    קבוצת עותקים משוכפלים

    מחזיק עותק מתעדכן ברציפות של כל מסד נתונים, מחוץ לשני האזורים האחרים. אין בו שרת ראשי, כך שאף תעבורה אינה תלויה בו עד שהוא מקודם.

  • שכפול רציף

    כל מסדי הנתונים מזרימים שינויים ברמת הבלוק ל-standby מחוץ לשני האזורים הראשיים. מכיוון שהשכפול הוא אסינכרוני, רפליקה אינה יכולה להאט או לחסום את השירות שנמצא לפניה.

  • גיבויים מחוץ לאתר

    ארכיונים נשלחים באופן רציף לאחסון אובייקטים במתקן נפרד, מוצפנים לפני שהם יוצאים מהמארח וניתנים לשחזור לכל נקודה בתוך תקופת השמירה. השחזורים נבדקים מקצה לקצה.

  • שלושה גורמים בכל חיבור

    אף מסד נתונים אינו מקבל חיבור רשת על בסיס סיסמה בלבד. חיבור דורש הצפנה בהעברה, תעודת לקוח שהונפקה על ידי רשות פרטית וסיסמה, והשירותים מוגבלים למסדי הנתונים שלהם בלבד.

  • רפליקות וגיבויים

    רשומת statement שגויה מגיעה לכל הרפליקות תוך רגעים ספורים. רפליקות מגנות מפני אובדן חומרה, והארכיון מגן מפני אובדן נתונים.

אומת ב-2026-10-05. קריאת הטופולוגיה המלאה

טופולוגיה

מפת הפלטפורמה

בשמונה השכבות ובאפיק הודעות אחד של המפה, כל תחום מופיע פעם אחת בלבד. המוצרים נמצאים בחלק העליון, ה-stack נמצא בחלק התחתון, וכל מה שמוצר זקוק לו נמצא במרחק צעד אחד (hop) בלבד.

23 צמתים · 27 יחסים מתועדים · 1 בהנחה

01/מוצרים02/זהות וגישה03/משילות04/תזמור והרצה05/תקשורת06/נתונים וספריות07/תהליך פיתוח08/העדפות מחסנית טכנולוגיתאפיק AGENT-MAILדיווח · אישור · הודעת תיקון · תוצאת אימות · סגירהRED9מוצר · לפי בקשהreTunnelמוצרLedgerמוצר · חינם כרגעIdentityשירות מתארחExternal IdPsGoogle · GitHub · AppleAuthשירות מתארחTokenGateשירות מתארחFutexשירות מתארחHighwayשירות מתארחRunFlowשירות מתארחstabilizeמנוע תהליכי עבודה · חלקיRODMENA Mail APIשירות מתארחdatashardספריית PythonmigrettiCLIsuperviceספריית Pythonbulkmanספריית Pythonresilient-circuitספריית Pythonscriptplanמנוע + CLIissuedb-cli + EARSCLIPostgreSQLחיצוניRedisחיצוניPrismשירות מתארח

יש לגלול את המפה לרוחב. לכל צומת יש גם כרטיס למטה.

חקרו

שימוש במפה

יש לבחור צומת או את אפיק ההודעות כדי להדגיש את הקשרים שלו ולראות מה נמצא בבעלותו, למה הוא מתחבר ובמה אסור להחליף אותו לעולם. הכרטיסים שלמטה מפרטים גם הם את העובדות האלה.

  • קשר מתועד
  • בהנחה: יש לאמת לפני הסתמכות על כך
  • אפיק ההודעות agent-mail
  • מוצר (מסגרת גרדיאנט)

לא משורטטים, שכן הם חלים בכל מקום:

  • כל מוצר מבצע אימות זהות מול Identity ובדיקת הרשאות מול Auth.
  • כל צוות פלטפורמה מתאם דרך אפיק agent-mail.
  • כל מאגר מנוהל ב-issuedb-cli, עם מפרטי EARS.

שכבות

כלים לפי שכבה

מה כל כלי אחראי לו, מתי להשתמש בו, ובמה אסור להחליף אותו.

01 מוצרים

  • RED9

    מוצרלפי בקשה

    פלטפורמת כוח עבודה של סוכנים שבה כל צ׳אט הוא משימה עמידה ואוטונומית עם כתובת דוא״ל.

    נשען על מלוא ה-stack. ‏Identity ו-Auth מספקים גישה, TokenGate תקציבים, Mail API תיבות דואר למשימות ו-RunFlow ארגזי חול (sandboxes). ‏Highway הוא ה-executor העמיד, Futex מטפל באישורים ו-migretti בסכמה, על גבי Python‏, PostgreSQL ו-Redis.

    מאמת עם Identity · מקבל הרשאות דרך Auth · מודד תקציבים באמצעות TokenGate · תיבות דואר של משימות באמצעות RODMENA Mail API · הרצה בארגז חול על RunFlow · מאציל תהליכי עבודה אל Highway · אישורים אנושיים באמצעות Futex · מבצע מיגרציה של סכימה עם migretti · בנוי על PostgreSQL · בנוי על Redis · מודלים כברירת מחדל באמצעות Prism

  • reTunnel

    מוצר

    פלטפורמת כניסה מאוחדת, חינמית ובקוד פתוח, שחושפת שרתים מקומיים מאחורי NAT וחומות אש לאינטרנט הציבורי דרך מנהרות מאובטחות.

    לקוח Python ו-CLI עצמאיים, ברישיון MIT, שמגיעים עם שרת בעל יכולת אירוח עצמי ואינם תלויים באף פלטפורמה פנימית אחרת.

    CLIHTTP/TCP מעבר לאתר

  • Ledger

    מוצרחינם כרגע

    Ledger ברישום כפול עבור כספים, זיכויים ומלאי. הרשומות שלו מאוזנות, קבועות וניתנות להוכחה תחת כללים שמסד הנתונים אוכף.

    נבנה על גבי Python ו-PostgreSQL, תוך שימוש ב-Auth עבור אישורי גישה, ב-TokenGate עבור מדידת שימוש וב-migretti עבור סכמה. הוא עבר ארבעה שלבי ביקורת פנימיים וביקורות יריבות חוזרות (adversarial re-audits), שממצאיהן מפורסמים.

    לעולם לא מוחלף ב: סוד שיכול להנפיק אישור גישה שהמערכת עצמה תקבל, או נתיב עריכה או מחיקה ביומן.

    לא מיועד ל: מכסות או מדידה (יש להשתמש ב-TokenGate), מדדים שאינם כמויות משתמרות, או מצב של תהליך עבודה.

    REST /v1OpenAPI 3.1llms.txt מעבר לאתר תיעוד

02 זהות וגישה

  • Identity

    שירות מתארחמוצר

    ספק OAuth המטפל בהתחברות של אנשים ושירותים. ההתחברות לכל המוצרים שלנו מתבצעת דרך Identity.

    Identity אינו תלוי בשום פלטפורמת בית אחרת. הכניסה מבוססת על איחוד זהויות (federation) עם ספקי זהות ציבוריים כגון Google, GitHub ו-Apple.

    לא מיועד ל: הרשאות או תפקידים, ששייכים ל-Auth. Identity מטפל באימות ו-Auth מטפל בהרשאה.

    מפנה את הכניסה באמצעות איחוד זהויות אל External IdPs

    OAuth2REST מעבר לאתר תיעוד

  • External IdPs

    Google · GitHub · Apple

    ספקי זהות ציבוריים, כגון Google, GitHub ו-Apple, ש-Identity מפנה אליהם את הכניסה באמצעות איחוד זהויות (federation). ל-Identity אין ספק אחר במעלה הזרם.

  • Auth

    שירות מתארחמוצר

    RBAC מתארח לתפקידים, הרשאות, חברויות ובדיקות ״האם משתמש X יכול לבצע Y״. מוצרים מגדירים את התפקידים שלהם בשירות זה.

    מסופק כחבילת PyPI בשם “auth”.

    לעולם לא מוחלף ב: טבלאות users/roles/permissions שנכתבו ידנית, Casbin, OPA, או ספריית RBAC.

    לא מיועד ל: התחברות, הפעלות (sessions), סיסמאות או הנפקת JWT. אימות שייך ל-Identity.

    RESTPython מעבר לאתר

03 משילות

  • TokenGate

    שירות מתארחמוצר

    ספירה, תקרות ו-rate limits לפי משתמש, ארגון או לקוח (tenant). המערכת מכסה תקציבי טוקנים, ספרי שימוש (usage ledgers), רמות תוכנית, תהליכי שריין/נשמרים יחד בפעולה אחת (commit), והתראות על סף וחריגה.

    על פי נוהלי הבית, מגבלות נבדקות בשני הכיוונים. מגבלה חייבת לחסום כאשר חורגים ממנה ולהתחדש כאשר היתרה מתמלאת שוב.

    לעולם לא מוחלף ב: מוני Redis INCR, טבלאות שימוש, middleware של דלי אסימונים (token bucket), או ספריות להגבלת קצב.

    לא מיועד ל: הרשאה (יש להשתמש ב-Auth) או הגנה מפני DDoS בקצה הרשת.

    מקבל הרשאות דרך Auth

    REST מעבר לאתר מדריך עיון לסוכנים

  • Futex

    שירות מתארחמוצר

    אישורים אנושיים עמידים המונעים על ידי מדיניות. יש לבקש החלטה, לנתב אותה לפי מדיניות, להסלים או להאציל אותה, ולקבל את ההכרעה דרך webhook.

    משמש לפריסות, תשלומים, הענקות גישה, פעולות הרסניות והמשך פעולה לאחר חריגה מתקציב.

    לעולם לא מוחלף ב: הודעות “please approve” ב-Slack, הנחיות input() חוסמות, או טבלאות אישור ייעודיות.

    מבצע על RunFlow · מודד שימוש באמצעות TokenGate · שולח דואר דרך RODMENA Mail API

    RESTMCPWebhooks מעבר לאתר

04 תזמור והרצה

  • Highway

    שירות מתארחמוצר

    מנוע מבוזר ועמיד עבור תהליך עבודה מבוסס-סוכנים (agentic workflows). הוא מספק סוכנים, יעדים, סשנים, תזמונים, טריגרים, תהליכי worker מסוג activity ותהליכי worker רגילים, פיצול הרצות (run forking) ו-traces.

    לפי כלל הבית, מוצר מנהל לולאת שקילה (deliberation loop) עצמאית אחת בלבד. הוא משתמש ב-Highway כמבצע עמיד (durable executor) שמדווח בחזרה באמצעות webhook ושומר את כל ה-reasoning של ה-LLM בתוך המוצר.

    לעולם לא מוחלף ב: Airflow, Prefect, Temporal, או סקריפטים מותאמים לתזמור.

    מקבל הרשאות דרך Auth · משלים RunFlow

    RESTMCP מעבר לאתר נקודת קצה MCP

  • RunFlow

    שירות מתארחמוצר

    סביבת sandbox מוקשחת מבוססת קונטיינרים ותהליכי עבודה מסוג DAG מונחי-API להרצת קוד שאינו מהימן או שנוצר על ידי סוכנים. ניתן להשהות ולחדש הרצות, והן כוללות יומני רישום בזמן אמת, ניסיונות חוזרים וצמתי אישור אנושי.

    לעולם לא מוחלף ב: הרצת docker מקומית, מריצים (runners) באירוח עצמי, או CI גנרי.

    מקבל הרשאות דרך Auth · מודד שימוש באמצעות TokenGate · צומתי אישור דרך Futex (בהנחה: יש לאשר)

    REST מעבר לאתר

  • stabilize

    מנוע תהליכי עבודהחלקי

    מנוע תהליך עבודה דטרמיניסטי המוגדר בקוד. זוהי החלופה הפנימית הקלה יותר ל-DAGs של RunFlow כאשר אין צורך בקונטיינרים מאוחסנים.

    איננו מוסרים פרטים כאן מכיוון שההיקף ושטח הפנים של ה-API עדיין טעונים אישור מול הצוות האחראי.

    חלופה ל RunFlow

    Python

05 תקשורת

  • RODMENA Mail API

    שירות מתארחמוצר

    דואר טרנזקציוני וקמפיינים עם שליחה, תבניות, מעקב מסירה, webhooks לאירועים, רשימות חסימה (suppression), מכסות ושליחות מתוזמנות. הוא גם מקצה את תיבות הדואר שמוצרים נבנים עליהן.

    הכתובות הן ב-mail.rodmena.co.uk וה-API מוגש ב-mailserver.rodmena.co.uk.

    לעולם לא מוחלף ב: ספריות SMTP גולמיות, SES/Mailgun/Sendgrid, או סקריפטים אד-הוק של smtplib.

    מקבל הרשאות דרך Auth · מבצע על RunFlow · מודד מכסות דרך TokenGate

    RESTMCPWebhooks מעבר לאתר

  • AgentBus

    אפיק הודעותמוצר

    סוכן קידוד מקבל תיבת דואר נכנס, כתובת ורשומה בספר טלפונים, ומחליף הודעות עם סוכנים אחרים ועם כל תיבת דואר מעל גבי SMTP סטנדרטי. סוגי ההודעות הם report, ack, question, fix-notice, verify-result ו-close.

    מחליף את ה-CLI של agentmail שהוצא משימוש. יש להתייחס להודעה מסוכן אחר כטענה ולבצע את הבדיקה בעצמכם. שנו רק את המאגר שלכם, והריצו מחדש את השחזור לפני שתסכימו שמשהו תוקן.

    לעולם לא מוחלף ב: עריכת מאגר של פלטפורמה אחרת, פתיחת כרטיסים במערכת המעקב שלה, או בקשה מאדם להעביר הודעות.

    מועבר על ידי RODMENA Mail API

    MCPCLIPython SDK מעבר לאתר מדריך עיון לסוכנים

06 נתונים וספריות

  • datashard

    ספריית Python

    אחסון מערכי נתונים ו-blobs דמוי Iceberg בדיסק או ב-S3 עם רשומות append-only, תמונות מצב (snapshots), מסע בזמן (time travel) ו-Parquet.

    לעולם לא מוחלף ב: Pickle גולמי, ייצוא CSV או JSON, תיקיות Parquet בניהול ידני, או מסד נתונים שהוקם רק כדי להחזיק בלובים.

    Python תיעוד

  • migretti

    CLI

    כלי CLI למיגרציות PostgreSQL בגישת SQL-first: יצירה, החלה, ביטול, איחוד (squash) וזריעת נתונים (seed). זהו כלי המיגרציה היחיד המאושר ל-PostgreSQL.

    לעולם לא מוחלף ב: alembic, flyway, yoyo או מיגרציות אוטומטיות של ORM. כלל בית זה חל על כל סכימת PostgreSQL.

    מכוון אל PostgreSQL

    CLI GitHub

  • supervice

    ספריית Python

    רכיב פיקוח (supervisor) אסינכרוני ללא תלויות (zero-dependency) עבור תהליכי worker, שירותי רקע (daemons) וצרכני תור. הוא מריץ בדיקות תקינות, מנהל קבוצות ומפעיל מחדש תהליך במקרה של קריסה.

    systemd או Kubernetes רגילים מקובלים כאשר הם מתאימים יותר.

    Python

  • bulkman

    ספריית Python

    מחיצות ובידוד מקביליות שמגבילים את רדיוס ההשפעה של תלות שנכשלת.

    כלל הבית הוא להגדיר תמיד circuit_breaker_enabled=False. ‏bulkman מטפל בבידוד, ו-circuit breaking שייך ל-resilient-circuit.

    משלים resilient-circuit

    Python

  • resilient-circuit

    ספריית Python

    Circuit breaking, ניסיונות חוזרים עם backoff, וטיפול ב-failsafe או ב-fallback סביב קריאות בלתי מהימנות. מומלץ לשלב עם bulkman לצורך בידוד.

    לעולם לא מוחלף ב: tenacity, pybreaker, או לולאות ניסיון חוזר שנכתבו ביד.

    Python

  • scriptplan

    מנוע + CLIמוצר

    מנוע תואם TaskJuggler (קובצי .tjp) לתכנון ולתזמון משאבים. הוא מטפל באנשים ובמכונות לאורך זמן, בתלויות ובלוחות שנה, ומפיק פלט Gantt.

    לעולם לא מוחלף ב: גיליונות אלקטרוניים או חישובי תאריכים אד-הוק.

    CLI GitHub

07 תהליך פיתוח

  • issuedb-cli + EARS

    CLI

    מערכת מעקב אחר כרטיסים לכל מאגר, עם מפרטי EARS, זיכרון עמיד ולקחים. כל בקשות הפיתוח פועלות לפי מחזור החיים המנדטורי של פתוח ← בביצוע ← סגור.

    כל בקשות הפיתוח הופכות למפרט EARS בכרטיס ובעותק תחת ספריית ה-SPECS/ של המאגר.

    לעולם לא מוחלף ב: משימות TODO שלא במעקב.

    CLI

08 העדפות מחסנית טכנולוגית

  • Prism

    שירות מתארחמוצר

    שער LLM תואם OpenAI ו-Anthropic שיכול להעמיד כמה ספקים מאחורי שם מודל אחד. הפריסה שלנו מנתבת לספק יחיד במעלה הזרם ללא מעבר לגיבוי (failover), והיא ספק ה-LLM של הבית לקריאות מודל בכלים.

    REST מדריך API

  • PostgreSQL מאגר רלציוני מועדף.
  • Redis מועדף למטמון (caching), תורים ופיזור (fan-out).

בחירת כלי

הגדירו את הצורך, השתמשו בכלי שאחראי לו, ואל תיישמו מחדש תחום שכלי בית כבר מכסה.

באיזה כלי להשתמש לכל צורך הנדסי, ובמה לעולם לא להשתמש במקומו
צורךשימושלעולם אין להשתמש
התחברות / OAuth / ״מי זה?״Identityכתיבת אימות משלכם
תפקידים, הרשאות, ״האם X יכול לעשות Y?״Authטבלאות RBAC, Casbin, OPA
מכסות, מגבלות קצב, תקציבים, דרגות, מדידהTokenGateמוני Redis, ספריות להגבלת קצב
שליחת דואר אלקטרוני, תבניות, קמפייניםMail APIsmtplib, SES/Mailgun
תקשורת עם הצוות של פלטפורמה אחרתagent-mailעריכת המאגר או מערכת המעקב שלהם
הרצת קוד שאינו מהימן או קוד שנוצרRunFlowDocker מקומי, מריצי CI
צינור דטרמיניסטי / DAG / ETLRunFlow או stabilizeAirflow, Prefect
תהליך עבודה סוכני (מונחה LLM)HighwayTemporal, לולאות מותאמות
אישור אנושי / חתימהFutexבקשות ב-Slack, טבלאות אישור
מיגרציות סכימה של PostgreSQLmigrettialembic, flyway, yoyo
מערכי נתונים, blobs, הקלטות, Parquetdatashardקובצי dump של pickle/CSV, מסד נתונים כמאגר blob
פיקוח על תהליכי עובדיםsupervicenohup, respawn בכתיבה ידנית
מחיצות / בידוד מקביליותbulkman (מפסק (circuit breaker) כבוי)סמפורים אד הוק
ניתוק מעגל (circuit breaking) / ניסיונות חוזרים / חלופת גיבוי (fallback)resilient-circuittenacity, pybreaker
תזמון משאבים / פרויקטיםscriptplanגיליונות אלקטרוניים
כרטיסים, מפרטים, דרישותissuedb-cli + EARSמשימות TODO שלא במעקב
קריאות LLM בתוך כליםPrismSDKs ומפתחות לכל ספק מפוזרים בין כלים

שיטת הנדסה

שלוש מתודולוגיות חלות על כל מאגר, בלי קשר למה שנבנה בו.

  • תהליך עבודה של EARS + issuedb

    כל בקשות ההנדסה הופכות למפרט EARS ולכרטיס issuedb, והמפרט מועתק לספריית SPECS/ של המאגר. כרטיסים עוברים מסטטוס פתוח לבתהליך ולסגור.

  • TRUST5

    יצירת קוד LLM מונחית-מפרט ובקרת-איכות, עם ריפוי עצמי, לולאות אימות/תיקון תחומות, שערים משוקללים ומיתון בעיית Oracle.

  • ביקורת למערכות קריטיות

    ביקורת באמצעות הפרכה: הבדיקות רצות דרך הממשק של המוצר עצמו, הממצאים משוחזרים בזמן אמת, וכל בדיקה נשמרת כקו בסיס בר-הרצה לסבב הבא.

כללים החלים על כל כלי.
  • יש לאמת דרך הממשק של המוצר עצמו. יש לקרוא מצב דרך ה-API או ה-CLI שלו, ואין להריץ שאילתות על מסד הנתונים או לכתוב אליו כדי לבדוק או לתקן אותו.
  • יש לכוון כל בדיקה למקרה חיובי ידוע לפני שמסתמכים על תוצאה שלילית ממנה.
  • להצהיר על מוכנות רק לגבי מה שנבדק בפועל, ולציין את הנתיבים שלא נבדקו.
  • יש לבדוק כל תקרה בשני הכיוונים: עליה לחסום כשחורגים ממנה ולאפשר חידוש פעולה כשצריך.

מוצרים הבנויים על פלטפורמות אלה

הפלטפורמות האלה עומדות מאחורי כל מה שאנחנו משיקים: Highway, MailApi, RunFlow, Futex, reTunnel, Ledger, RODMENA L10n, TokenGate, AgentBus, RODMENA ID, Auth, Prism, pdfapi, Container Registry, RODMENA CI, Uptime.Systems, Trust5, RED9, Graphviz Provider, Steward, Tollgate, Haven, RODMENA LRS, RODMENA cmi5, Vellum, supervice, datashard, ScriptPlan, Stabilize, Trace, Provenance ו-Knowledge base. הן גם מפעילות את החברה.