teaclave-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ms...@apache.org
Subject [incubator-teaclave-website] branch asf-site updated: Update documentation
Date Tue, 09 Jun 2020 02:29:58 GMT
This is an automated email from the ASF dual-hosted git repository.

mssun pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/incubator-teaclave-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new a2283d2  Update documentation
a2283d2 is described below

commit a2283d2be2de4d00dcf76fdb4cbfe2e66c1bee5f
Author: Mingshen Sun <bob@mssun.me>
AuthorDate: Mon Jun 8 19:29:43 2020 -0700

    Update documentation
---
 404.html                                           |    6 +-
 assets/js/{12.32a29333.js => 12.2d0a10d6.js}       |    2 +-
 assets/js/{13.9be01da2.js => 13.2525b58b.js}       |    2 +-
 assets/js/{app.2529d1a9.js => app.19b95a1e.js}     |    4 +-
 attestation/index.html                             |   20 +-
 .../08/19/apache-incubation-proposal/index.html    |   20 +-
 .../index.html                                     |   20 +-
 .../podling-teaclave-report-april-2020/index.html  |   20 +-
 blog/index.html                                    |   20 +-
 cli/index.html                                     |   20 +-
 community/index.html                               |   20 +-
 config/index.html                                  |   20 +-
 contributing/index.html                            |   20 +-
 contributors/index.html                            |   20 +-
 dcap/index.html                                    |   20 +-
 docker/index.html                                  |   20 +-
 docs/access-control/index.html                     |   20 +-
 docs/build-system/index.html                       |   20 +-
 docs/client-sdk-python/index.html                  |    1 +
 docs/client-sdk-python/teaclave.html               | 1338 ++++++++++++++++++++
 docs/index.html                                    |   20 +-
 docs/mutual-attestation/index.html                 |   20 +-
 docs/my-first-function/index.html                  |   20 +-
 docs/rust-guildeline/index.html                    |   20 +-
 docs/threat-model/index.html                       |   20 +-
 examples/index.html                                |   20 +-
 executor/index.html                                |   20 +-
 file-agent/index.html                              |   20 +-
 function/index.html                                |   20 +-
 index.html                                         |   20 +-
 keys/index.html                                    |   20 +-
 rpc/index.html                                     |   20 +-
 runtime/index.html                                 |   20 +-
 sdk/index.html                                     |   20 +-
 services/index.html                                |   20 +-
 teaclave/common/protected_fs_rs/index.html         |   20 +-
 teaclave/common/rusty_leveldb_sgx/index.html       |   20 +-
 teaclave/index.html                                |   20 +-
 tests/index.html                                   |   20 +-
 third-party/index.html                             |   20 +-
 worker/index.html                                  |   20 +-
 41 files changed, 1766 insertions(+), 287 deletions(-)

diff --git a/404.html b/404.html
index edba166..cfc824e 100644
--- a/404.html
+++ b/404.html
@@ -7,13 +7,13 @@
     <meta name="generator" content="VuePress 1.5.0">
     
     <meta name="description" content="Apache Teaclave (incubating) is an open source universal secure computing platform, making computation on privacy-sensitive data safe and simple.">
-    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.2529d1a9.js" as="script"><link rel="preload" href="/assets/js/9.a4dc2a24.js" as="script"><link rel="prefetch" href="/assets/js/1.0d0c1f71.js"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.32a29333.js"><link rel="prefetch" href="/assets/js/13.9be01da2.js"><link rel="prefet [...]
+    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.19b95a1e.js" as="script"><link rel="preload" href="/assets/js/9.a4dc2a24.js" as="script"><link rel="prefetch" href="/assets/js/1.0d0c1f71.js"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.2d0a10d6.js"><link rel="prefetch" href="/assets/js/13.2525b58b.js"><link rel="prefet [...]
     <link rel="stylesheet" href="/assets/css/0.styles.276899be.css">
   </head>
   <body>
-    <div id="app" data-server-rendered="true"><div class="theme-container"><div class="theme-default-content"><h1>404</h1> <blockquote>That's a Four-Oh-Four.</blockquote> <a href="/" class="router-link-active">
+    <div id="app" data-server-rendered="true"><div class="theme-container"><div class="theme-default-content"><h1>404</h1> <blockquote>There's nothing here.</blockquote> <a href="/" class="router-link-active">
       Take me home.
     </a></div></div><div class="global-ui"><!----></div></div>
-    <script src="/assets/js/app.2529d1a9.js" defer></script><script src="/assets/js/9.a4dc2a24.js" defer></script>
+    <script src="/assets/js/app.19b95a1e.js" defer></script><script src="/assets/js/9.a4dc2a24.js" defer></script>
   </body>
 </html>
diff --git a/assets/js/12.32a29333.js b/assets/js/12.2d0a10d6.js
similarity index 98%
rename from assets/js/12.32a29333.js
rename to assets/js/12.2d0a10d6.js
index fa3f88e..70b093c 100644
--- a/assets/js/12.32a29333.js
+++ b/assets/js/12.2d0a10d6.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{395:function(e,t,a){"use strict";a.r(t);var s=a(27),r=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h2",{attrs:{id:"teaclave"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#teaclave"}},[e._v("#")]),e._v(" Teaclave")]),e._v(" "),a("p",[e._v("Teaclave is a universal secure computing platform.")]),e._v(" "),a("p",[e._v("Teacl [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{396:function(e,t,a){"use strict";a.r(t);var s=a(27),r=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h2",{attrs:{id:"teaclave"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#teaclave"}},[e._v("#")]),e._v(" Teaclave")]),e._v(" "),a("p",[e._v("Teaclave is a universal secure computing platform.")]),e._v(" "),a("p",[e._v("Teacl [...]
\ No newline at end of file
diff --git a/assets/js/13.9be01da2.js b/assets/js/13.2525b58b.js
similarity index 98%
rename from assets/js/13.9be01da2.js
rename to assets/js/13.2525b58b.js
index 321a5f4..53b98fb 100644
--- a/assets/js/13.9be01da2.js
+++ b/assets/js/13.2525b58b.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{396:function(e,t,a){"use strict";a.r(t);var r=a(27),s=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h2",{attrs:{id:"teacalve"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#teacalve"}},[e._v("#")]),e._v(" Teacalve")]),e._v(" "),a("p",[e._v("Teaclave is a universal secure computing platform.")]),e._v(" "),a("p",[e._v("Teacl [...]
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{395:function(e,t,a){"use strict";a.r(t);var r=a(27),s=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h2",{attrs:{id:"teacalve"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#teacalve"}},[e._v("#")]),e._v(" Teacalve")]),e._v(" "),a("p",[e._v("Teaclave is a universal secure computing platform.")]),e._v(" "),a("p",[e._v("Teacl [...]
\ No newline at end of file
diff --git a/assets/js/app.2529d1a9.js b/assets/js/app.19b95a1e.js
similarity index 92%
rename from assets/js/app.2529d1a9.js
rename to assets/js/app.19b95a1e.js
index d487b42..a6f881a 100644
--- a/assets/js/app.2529d1a9.js
+++ b/assets/js/app.19b95a1e.js
@@ -1,4 +1,4 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[]]);!function(t){function e(e){for(var r,a,c=e[0],s=e[1],u=e[2],f=0,p=[];f<c.length;f++)a=c[f],Object.prototype.hasOwnProperty.call(o,a)&&o[a]&&p.push(o[a][0]),o[a]=0;for(r in s)Object.prototype.hasOwnProperty.call(s,r)&&(t[r]=s[r]);for(l&&l(e);p.length;)p.shift()();return i.push.apply(i,u||[]),n()}function n(){for(var t,e=0;e<i.length;e++){for(var n=i[e],r=!0,c=1;c<n.length;c++){var s=n[c];0!==o[s]&&(r=!1)}r&&(i.splice(e--,1),t=a( [...]
+(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[]]);!function(t){function e(e){for(var r,a,c=e[0],s=e[1],u=e[2],f=0,p=[];f<c.length;f++)a=c[f],Object.prototype.hasOwnProperty.call(o,a)&&o[a]&&p.push(o[a][0]),o[a]=0;for(r in s)Object.prototype.hasOwnProperty.call(s,r)&&(t[r]=s[r]);for(l&&l(e);p.length;)p.shift()();return i.push.apply(i,u||[]),n()}function n(){for(var t,e=0;e<i.length;e++){for(var n=i[e],r=!0,c=1;c<n.length;c++){var s=n[c];0!==o[s]&&(r=!1)}r&&(i.splice(e--,1),t=a( [...]
 /*!
  * Vue.js v2.6.11
  * (c) 2014-2019 Evan You
@@ -10,4 +10,4 @@
   * vue-router v3.1.6
   * (c) 2020 Evan You
   * @license MIT
-  */function a(t){return Object.prototype.toString.call(t).indexOf("Error")>-1}function c(t,e){return e instanceof t||e&&(e.name===t.name||e._name===t._name)}function s(t,e){for(var n in e)t[n]=e[n];return t}var u={name:"RouterView",functional:!0,props:{name:{type:String,default:"default"}},render:function(t,e){var n=e.props,r=e.children,o=e.parent,i=e.data;i.routerView=!0;for(var a=o.$createElement,c=n.name,u=o.$route,f=o._routerViewCache||(o._routerViewCache={}),p=0,h=!1;o&&o._routerRo [...]
\ No newline at end of file
+  */function a(t){return Object.prototype.toString.call(t).indexOf("Error")>-1}function c(t,e){return e instanceof t||e&&(e.name===t.name||e._name===t._name)}function s(t,e){for(var n in e)t[n]=e[n];return t}var u={name:"RouterView",functional:!0,props:{name:{type:String,default:"default"}},render:function(t,e){var n=e.props,r=e.children,o=e.parent,i=e.data;i.routerView=!0;for(var a=o.$createElement,c=n.name,u=o.$route,f=o._routerViewCache||(o._routerViewCache={}),p=0,h=!1;o&&o._routerRo [...]
\ No newline at end of file
diff --git a/attestation/index.html b/attestation/index.html
index 7c9fdee..e7dde53 100644
--- a/attestation/index.html
+++ b/attestation/index.html
@@ -16,7 +16,7 @@
     <meta name="twitter:url" content="https://teaclave.apache.org/attestation/">
     <meta name="twitter:card" content="summary_large_image">
     <meta name="twitter:site" content="@ApacheTeaclave">
-    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.2529d1a9.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/19.13c2518f.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.32a29333 [...]
+    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.19b95a1e.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/19.13c2518f.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.2d0a10d6 [...]
     <link rel="stylesheet" href="/assets/css/0.styles.276899be.css">
   </head>
   <body>
@@ -28,9 +28,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -58,9 +60,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -118,6 +122,6 @@ file.</p></div> <footer class="page-edit"><!----> <div class="last-updated"><spa
       </a>
       →
     </span></p></div> </main></div><div class="global-ui"><!----></div></div>
-    <script src="/assets/js/app.2529d1a9.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/19.13c2518f.js" defer></script>
+    <script src="/assets/js/app.19b95a1e.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/19.13c2518f.js" defer></script>
   </body>
 </html>
diff --git a/blog/2019/08/19/apache-incubation-proposal/index.html b/blog/2019/08/19/apache-incubation-proposal/index.html
index 729e1a5..88f5a79 100644
--- a/blog/2019/08/19/apache-incubation-proposal/index.html
+++ b/blog/2019/08/19/apache-incubation-proposal/index.html
@@ -17,7 +17,7 @@
     <meta name="twitter:url" content="https://teaclave.apache.org/blog/2019/08/19/apache-incubation-proposal/">
     <meta name="twitter:card" content="summary_large_image">
     <meta name="twitter:site" content="@ApacheTeaclave">
-    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.2529d1a9.js" as="script"><link rel="preload" href="/assets/js/8.f99d7c80.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/11.76c09ff4.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/12.32a29333.js"><link rel="prefetch" href="/assets/js/13.9be01da2 [...]
+    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.19b95a1e.js" as="script"><link rel="preload" href="/assets/js/8.f99d7c80.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/11.76c09ff4.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/12.2d0a10d6.js"><link rel="prefetch" href="/assets/js/13.2525b58b [...]
     <link rel="stylesheet" href="/assets/css/0.styles.276899be.css">
   </head>
   <body>
@@ -29,9 +29,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link router-link-active">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link router-link-active">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -59,9 +61,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link router-link-active">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link router-link-active">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -478,6 +482,6 @@ The list is sorted alphabetically:
 
 The Incubator PMC
 </code></pre></div></div></article></div> </main></div><div class="global-ui"><!----></div></div>
-    <script src="/assets/js/app.2529d1a9.js" defer></script><script src="/assets/js/8.f99d7c80.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/11.76c09ff4.js" defer></script>
+    <script src="/assets/js/app.19b95a1e.js" defer></script><script src="/assets/js/8.f99d7c80.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/11.76c09ff4.js" defer></script>
   </body>
 </html>
diff --git a/blog/2019/12/31/podling-teaclave-report-january-2020/index.html b/blog/2019/12/31/podling-teaclave-report-january-2020/index.html
index 7ea1793..c8e1519 100644
--- a/blog/2019/12/31/podling-teaclave-report-january-2020/index.html
+++ b/blog/2019/12/31/podling-teaclave-report-january-2020/index.html
@@ -17,7 +17,7 @@
     <meta name="twitter:url" content="https://teaclave.apache.org/blog/2019/12/31/podling-teaclave-report-january-2020/">
     <meta name="twitter:card" content="summary_large_image">
     <meta name="twitter:site" content="@ApacheTeaclave">
-    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.2529d1a9.js" as="script"><link rel="preload" href="/assets/js/8.f99d7c80.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/12.32a29333.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/13.9be01da2 [...]
+    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.19b95a1e.js" as="script"><link rel="preload" href="/assets/js/8.f99d7c80.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/12.2d0a10d6.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/13.2525b58b [...]
     <link rel="stylesheet" href="/assets/css/0.styles.276899be.css">
   </head>
   <body>
@@ -29,9 +29,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link router-link-active">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link router-link-active">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -59,9 +61,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link router-link-active">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link router-link-active">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -93,6 +97,6 @@ lot of changes need to be done. The mentors and infra teams help us a
 lot on the transfer.</p> <h3 id="is-the-ppmc-managing-the-podling-s-brand-trademarks"><a href="#is-the-ppmc-managing-the-podling-s-brand-trademarks" class="header-anchor">#</a> Is the PPMC managing the podling's brand / trademarks?</h3> <p>We don't find any 3rd parties incorrectly using the podling's name and
 brand. The VP, Brand has approve the project name.
 (PODLINGNAMESEARCH-175)</p></div></article></div> </main></div><div class="global-ui"><!----></div></div>
-    <script src="/assets/js/app.2529d1a9.js" defer></script><script src="/assets/js/8.f99d7c80.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/12.32a29333.js" defer></script>
+    <script src="/assets/js/app.19b95a1e.js" defer></script><script src="/assets/js/8.f99d7c80.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/12.2d0a10d6.js" defer></script>
   </body>
 </html>
diff --git a/blog/2020/03/31/podling-teaclave-report-april-2020/index.html b/blog/2020/03/31/podling-teaclave-report-april-2020/index.html
index 88a7f29..b30d4e0 100644
--- a/blog/2020/03/31/podling-teaclave-report-april-2020/index.html
+++ b/blog/2020/03/31/podling-teaclave-report-april-2020/index.html
@@ -17,7 +17,7 @@
     <meta name="twitter:url" content="https://teaclave.apache.org/blog/2020/03/31/podling-teaclave-report-april-2020/">
     <meta name="twitter:card" content="summary_large_image">
     <meta name="twitter:site" content="@ApacheTeaclave">
-    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.2529d1a9.js" as="script"><link rel="preload" href="/assets/js/8.f99d7c80.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/13.9be01da2.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.32a29333 [...]
+    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.19b95a1e.js" as="script"><link rel="preload" href="/assets/js/8.f99d7c80.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/13.2525b58b.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.2d0a10d6 [...]
     <link rel="stylesheet" href="/assets/css/0.styles.276899be.css">
   </head>
   <body>
@@ -29,9 +29,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link router-link-active">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link router-link-active">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -59,9 +61,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link router-link-active">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link router-link-active">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -101,6 +105,6 @@ when main refactoring is done.</li></ul> <h3 id="how-would-you-assess-the-podlin
 work focus on improving the design and documents to make the project more
 approachable for newcomers.</p> <h3 id="have-your-mentors-been-helpful-and-responsive"><a href="#have-your-mentors-been-helpful-and-responsive" class="header-anchor">#</a> Have your mentors been helpful and responsive?</h3> <p>Yes, our mentors help use to resolve the mailing list moderator issues.</p> <h3 id="is-the-ppmc-managing-the-podling-s-brand-trademarks"><a href="#is-the-ppmc-managing-the-podling-s-brand-trademarks" class="header-anchor">#</a> Is the PPMC managing the podling's br [...]
 The VP, Brand has approve the project name. (PODLINGNAMESEARCH-175)</p></div></article></div> </main></div><div class="global-ui"><!----></div></div>
-    <script src="/assets/js/app.2529d1a9.js" defer></script><script src="/assets/js/8.f99d7c80.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/13.9be01da2.js" defer></script>
+    <script src="/assets/js/app.19b95a1e.js" defer></script><script src="/assets/js/8.f99d7c80.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/13.2525b58b.js" defer></script>
   </body>
 </html>
diff --git a/blog/index.html b/blog/index.html
index eb52f35..1aa93ae 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -13,7 +13,7 @@
     <meta name="twitter:url" content="https://teaclave.apache.org/blog/">
     <meta name="twitter:card" content="summary_large_image">
     <meta name="twitter:site" content="@ApacheTeaclave">
-    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.2529d1a9.js" as="script"><link rel="preload" href="/assets/js/10.ad33114f.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/6.396f574a.js" as="script"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.32a29333.js"><link rel="prefetch" href="/assets/js/13.9be01da2 [...]
+    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.19b95a1e.js" as="script"><link rel="preload" href="/assets/js/10.ad33114f.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/6.396f574a.js" as="script"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.2d0a10d6.js"><link rel="prefetch" href="/assets/js/13.2525b58b [...]
     <link rel="stylesheet" href="/assets/css/0.styles.276899be.css">
   </head>
   <body>
@@ -25,9 +25,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link router-link-exact-active router-link-active">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link router-link-exact-active router-link-active">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -55,9 +57,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link router-link-exact-active router-link-active">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link router-link-exact-active router-link-active">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -78,6 +82,6 @@
   <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li class="dropdown-item"><!----> <a hre [...]
   Current Event
   <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></div></div> <!----></nav>  <!----> [...]
-    <script src="/assets/js/app.2529d1a9.js" defer></script><script src="/assets/js/10.ad33114f.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/6.396f574a.js" defer></script>
+    <script src="/assets/js/app.19b95a1e.js" defer></script><script src="/assets/js/10.ad33114f.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/6.396f574a.js" defer></script>
   </body>
 </html>
diff --git a/cli/index.html b/cli/index.html
index 45111dc..16e99d7 100644
--- a/cli/index.html
+++ b/cli/index.html
@@ -16,7 +16,7 @@
     <meta name="twitter:url" content="https://teaclave.apache.org/cli/">
     <meta name="twitter:card" content="summary_large_image">
     <meta name="twitter:site" content="@ApacheTeaclave">
-    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.2529d1a9.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/20.b16a91c8.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.32a29333 [...]
+    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.19b95a1e.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/20.b16a91c8.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.2d0a10d6 [...]
     <link rel="stylesheet" href="/assets/css/0.styles.276899be.css">
   </head>
   <body>
@@ -28,9 +28,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -58,9 +60,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -92,6 +96,6 @@ Teaclave File (128bit).</li></ul></div> <footer class="page-edit"><!----> <div c
       </a>
       →
     </span></p></div> </main></div><div class="global-ui"><!----></div></div>
-    <script src="/assets/js/app.2529d1a9.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/20.b16a91c8.js" defer></script>
+    <script src="/assets/js/app.19b95a1e.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/20.b16a91c8.js" defer></script>
   </body>
 </html>
diff --git a/community/index.html b/community/index.html
index 240c0af..72578cc 100644
--- a/community/index.html
+++ b/community/index.html
@@ -16,7 +16,7 @@
     <meta name="twitter:url" content="https://teaclave.apache.org/community/">
     <meta name="twitter:card" content="summary_large_image">
     <meta name="twitter:site" content="@ApacheTeaclave">
-    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.2529d1a9.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/15.ac144c5e.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.32a29333 [...]
+    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.19b95a1e.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/15.ac144c5e.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.2d0a10d6 [...]
     <link rel="stylesheet" href="/assets/css/0.styles.276899be.css">
   </head>
   <body>
@@ -28,9 +28,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -58,9 +60,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -99,6 +103,6 @@ blockchain-based, open-source protocol that lets anyone perform computations
 on encrypted data, bringing privacy to smart contracts and public
 blockchains.</li> <li><a href="https://github.com/scs/substraTEE" target="_blank" rel="noopener noreferrer">substraTEE<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2  [...]
 Framework for substrate blockchains.</li></ul></div> <footer class="page-edit"><!----> <div class="last-updated"><span class="prefix">Last Updated:</span> <span class="time">6/7/2020, 6:47:18 PM</span></div></footer> <!----> </main></div><div class="global-ui"><!----></div></div>
-    <script src="/assets/js/app.2529d1a9.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/15.ac144c5e.js" defer></script>
+    <script src="/assets/js/app.19b95a1e.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/15.ac144c5e.js" defer></script>
   </body>
 </html>
diff --git a/config/index.html b/config/index.html
index 7f07d1c..380a128 100644
--- a/config/index.html
+++ b/config/index.html
@@ -16,7 +16,7 @@
     <meta name="twitter:url" content="https://teaclave.apache.org/config/">
     <meta name="twitter:card" content="summary_large_image">
     <meta name="twitter:site" content="@ApacheTeaclave">
-    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.2529d1a9.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/23.8391048a.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.32a29333 [...]
+    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.19b95a1e.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/23.8391048a.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.2d0a10d6 [...]
     <link rel="stylesheet" href="/assets/css/0.styles.276899be.css">
   </head>
   <body>
@@ -28,9 +28,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -58,9 +60,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -116,6 +120,6 @@ configuration must be defined as a build config.</p></div> <footer class="page-e
       </a>
       →
     </span></p></div> </main></div><div class="global-ui"><!----></div></div>
-    <script src="/assets/js/app.2529d1a9.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/23.8391048a.js" defer></script>
+    <script src="/assets/js/app.19b95a1e.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/23.8391048a.js" defer></script>
   </body>
 </html>
diff --git a/contributing/index.html b/contributing/index.html
index 50d5764..73d7d8d 100644
--- a/contributing/index.html
+++ b/contributing/index.html
@@ -16,7 +16,7 @@
     <meta name="twitter:url" content="https://teaclave.apache.org/contributing/">
     <meta name="twitter:card" content="summary_large_image">
     <meta name="twitter:site" content="@ApacheTeaclave">
-    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.2529d1a9.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/16.364415a3.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.32a29333 [...]
+    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.19b95a1e.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/16.364415a3.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.2d0a10d6 [...]
     <link rel="stylesheet" href="/assets/css/0.styles.276899be.css">
   </head>
   <body>
@@ -28,9 +28,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -58,9 +60,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -91,6 +95,6 @@ want to propose features.</p> <h2 id="send-pull-requests"><a href="#send-pull-re
 code inplace, and <code>make CLI=1</code> to lint Rust code with Rust clippy.</li> <li>Commit/push the changes and send a pull request on GitHub. Please kindly
 write some background and details for this PR (we also provide a PR template
 to guild you with writing a high-quality pull request).</li></ol></div> <footer class="page-edit"><!----> <div class="last-updated"><span class="prefix">Last Updated:</span> <span class="time">6/7/2020, 6:47:18 PM</span></div></footer> <!----> </main></div><div class="global-ui"><!----></div></div>
-    <script src="/assets/js/app.2529d1a9.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/16.364415a3.js" defer></script>
+    <script src="/assets/js/app.19b95a1e.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/16.364415a3.js" defer></script>
   </body>
 </html>
diff --git a/contributors/index.html b/contributors/index.html
index de13657..020a44e 100644
--- a/contributors/index.html
+++ b/contributors/index.html
@@ -16,7 +16,7 @@
     <meta name="twitter:url" content="https://teaclave.apache.org/contributors/">
     <meta name="twitter:card" content="summary_large_image">
     <meta name="twitter:site" content="@ApacheTeaclave">
-    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.2529d1a9.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/17.fc7db2ef.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.32a29333 [...]
+    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.19b95a1e.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/17.fc7db2ef.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.2d0a10d6 [...]
     <link rel="stylesheet" href="/assets/css/0.styles.276899be.css">
   </head>
   <body>
@@ -28,9 +28,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -58,9 +60,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -89,6 +93,6 @@ being active. In committers, the role of
 oversight of Teaclave. Please contact the community if you'd like to become a
 member of regular committers or PPMC of Teaclave.</p> <ul><li><a href="https://github.com/mssun" target="_blank" rel="noopener noreferrer">Mingshen Sun<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48 [...]
 contributions it receives.</p> <p>List of external contributors of Teaclave and Teaclave SGX SDK (in alphabetical order):</p> <ul><li><a href="https://github.com/akhilles" target="_blank" rel="noopener noreferrer">Akhil Velagapudi<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8, [...]
-    <script src="/assets/js/app.2529d1a9.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/17.fc7db2ef.js" defer></script>
+    <script src="/assets/js/app.19b95a1e.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/17.fc7db2ef.js" defer></script>
   </body>
 </html>
diff --git a/dcap/index.html b/dcap/index.html
index 113aa3a..9fb7fb9 100644
--- a/dcap/index.html
+++ b/dcap/index.html
@@ -16,7 +16,7 @@
     <meta name="twitter:url" content="https://teaclave.apache.org/dcap/">
     <meta name="twitter:card" content="summary_large_image">
     <meta name="twitter:site" content="@ApacheTeaclave">
-    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.2529d1a9.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/24.65d503b2.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.32a29333 [...]
+    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.19b95a1e.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/24.65d503b2.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.2d0a10d6 [...]
     <link rel="stylesheet" href="/assets/css/0.styles.276899be.css">
   </head>
   <body>
@@ -28,9 +28,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -58,9 +60,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -102,6 +106,6 @@ DCAP-enabled application.</p></div> <footer class="page-edit"><!----> <div class
       </a>
       →
     </span></p></div> </main></div><div class="global-ui"><!----></div></div>
-    <script src="/assets/js/app.2529d1a9.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/24.65d503b2.js" defer></script>
+    <script src="/assets/js/app.19b95a1e.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/24.65d503b2.js" defer></script>
   </body>
 </html>
diff --git a/docker/index.html b/docker/index.html
index 5c237a0..a1a2336 100644
--- a/docker/index.html
+++ b/docker/index.html
@@ -16,7 +16,7 @@
     <meta name="twitter:url" content="https://teaclave.apache.org/docker/">
     <meta name="twitter:card" content="summary_large_image">
     <meta name="twitter:site" content="@ApacheTeaclave">
-    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.2529d1a9.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/25.9b17b52a.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.32a29333 [...]
+    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.19b95a1e.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/25.9b17b52a.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.2d0a10d6 [...]
     <link rel="stylesheet" href="/assets/css/0.styles.276899be.css">
   </head>
   <body>
@@ -28,9 +28,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -58,9 +60,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -128,6 +132,6 @@ Attaching to ...
       </a>
       →
     </span></p></div> </main></div><div class="global-ui"><!----></div></div>
-    <script src="/assets/js/app.2529d1a9.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/25.9b17b52a.js" defer></script>
+    <script src="/assets/js/app.19b95a1e.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/25.9b17b52a.js" defer></script>
   </body>
 </html>
diff --git a/docs/access-control/index.html b/docs/access-control/index.html
index 71b08b0..f26b33b 100644
--- a/docs/access-control/index.html
+++ b/docs/access-control/index.html
@@ -16,7 +16,7 @@
     <meta name="twitter:url" content="https://teaclave.apache.org/docs/access-control/">
     <meta name="twitter:card" content="summary_large_image">
     <meta name="twitter:site" content="@ApacheTeaclave">
-    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.2529d1a9.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/27.177d9c43.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.32a29333 [...]
+    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.19b95a1e.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/27.177d9c43.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.2d0a10d6 [...]
     <link rel="stylesheet" href="/assets/css/0.styles.276899be.css">
   </head>
   <body>
@@ -28,9 +28,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -58,9 +60,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -142,6 +146,6 @@ dealing with badly shaped requests. Contributions are welcome!</p></div> <footer
       </a>
       →
     </span></p></div> </main></div><div class="global-ui"><!----></div></div>
-    <script src="/assets/js/app.2529d1a9.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/27.177d9c43.js" defer></script>
+    <script src="/assets/js/app.19b95a1e.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/27.177d9c43.js" defer></script>
   </body>
 </html>
diff --git a/docs/build-system/index.html b/docs/build-system/index.html
index c2b2174..dbbf790 100644
--- a/docs/build-system/index.html
+++ b/docs/build-system/index.html
@@ -16,7 +16,7 @@
     <meta name="twitter:url" content="https://teaclave.apache.org/docs/build-system/">
     <meta name="twitter:card" content="summary_large_image">
     <meta name="twitter:site" content="@ApacheTeaclave">
-    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.2529d1a9.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/28.79b4191e.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.32a29333 [...]
+    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.19b95a1e.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/28.79b4191e.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.2d0a10d6 [...]
     <link rel="stylesheet" href="/assets/css/0.styles.276899be.css">
   </head>
   <body>
@@ -28,9 +28,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -58,9 +60,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -113,6 +117,6 @@ with <code>-DCOV=ON</code>.</li></ul> <h3 id="misc"><a href="#misc" class="heade
       </a>
       →
     </span></p></div> </main></div><div class="global-ui"><!----></div></div>
-    <script src="/assets/js/app.2529d1a9.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/28.79b4191e.js" defer></script>
+    <script src="/assets/js/app.19b95a1e.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/28.79b4191e.js" defer></script>
   </body>
 </html>
diff --git a/docs/client-sdk-python/index.html b/docs/client-sdk-python/index.html
new file mode 100644
index 0000000..e8e65b7
--- /dev/null
+++ b/docs/client-sdk-python/index.html
@@ -0,0 +1 @@
+<meta http-equiv=refresh content=0;url=teaclave.html/index.html>
diff --git a/docs/client-sdk-python/teaclave.html b/docs/client-sdk-python/teaclave.html
new file mode 100644
index 0000000..51fe7c6
--- /dev/null
+++ b/docs/client-sdk-python/teaclave.html
@@ -0,0 +1,1338 @@
+<!doctype html>
+<html lang="en">
+<head>
+<meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1" />
+<meta name="generator" content="pdoc 0.8.1" />
+<title>teaclave API documentation</title>
+<meta name="description" content="Python package `teaclave` is the client SDK for Python developers, providing
+some essential data structures, service, and client classes to establish
+…" />
+<link href='https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.0/normalize.min.css' rel='stylesheet'>
+<link href='https://cdnjs.cloudflare.com/ajax/libs/10up-sanitize.css/8.0.0/sanitize.min.css' rel='stylesheet'>
+<link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/github.min.css" rel="stylesheet">
+<style>.flex{display:flex !important}body{line-height:1.5em}#content{padding:20px}#sidebar{padding:30px;overflow:hidden}#sidebar > *:last-child{margin-bottom:2cm}.http-server-breadcrumbs{font-size:130%;margin:0 0 15px 0}#footer{font-size:.75em;padding:5px 30px;border-top:1px solid #ddd;text-align:right}#footer p{margin:0 0 0 1em;display:inline-block}#footer p:last-child{margin-right:30px}h1,h2,h3,h4,h5{font-weight:300}h1{font-size:2.5em;line-height:1.1em}h2{font-size:1.75em;margin:1em 0  [...]
+<style media="screen and (min-width: 700px)">@media screen and (min-width:700px){#sidebar{width:30%;height:100vh;overflow:auto;position:sticky;top:0}#content{width:70%;max-width:100ch;padding:3em 4em;border-left:1px solid #ddd}pre code{font-size:1em}.item .name{font-size:1em}main{display:flex;flex-direction:row-reverse;justify-content:flex-end}.toc ul ul,#index ul{padding-left:1.5em}.toc > ul > li{margin-top:.5em}}</style>
+<style media="print">@media print{#sidebar h1{page-break-before:always}.source{display:none}}@media print{*{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important}a[href]:after{content:" (" attr(href) ")";font-size:90%}a[href][title]:after{content:none}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thea [...]
+</head>
+<body>
+<main>
+<article id="content">
+<header>
+<h1 class="title">Module <code>teaclave</code></h1>
+</header>
+<section id="section-intro">
+<p>Python package <code><a title="teaclave" href="#teaclave">teaclave</a></code> is the client SDK for Python developers, providing
+some essential data structures, service, and client classes to establish
+trusted TLS channel and communicate with Teaclave services (e.g., the
+authentication service and frontend service) through RPC protocols.</p>
+<details class="source">
+<summary>
+<span>Expand source code</span>
+</summary>
+<pre><code class="python">#!/usr/bin/env python3
+&#34;&#34;&#34;
+Python package `teaclave` is the client SDK for Python developers, providing
+some essential data structures, service, and client classes to establish
+trusted TLS channel and communicate with Teaclave services (e.g., the
+authentication service and frontend service) through RPC protocols.
+&#34;&#34;&#34;
+
+import struct
+import json
+import base64
+import toml
+import os
+import time
+import ssl
+import socket
+
+from typing import Tuple, Dict, List, Any
+
+from cryptography import x509
+from cryptography.hazmat.backends import default_backend
+
+from OpenSSL.crypto import load_certificate, FILETYPE_PEM, FILETYPE_ASN1
+from OpenSSL.crypto import X509Store, X509StoreContext
+from OpenSSL import crypto
+
+__all__ = [
+    &#39;FrontendClient&#39;, &#39;FrontendService&#39;, &#39;AuthenticationClient&#39;,
+    &#39;AuthenticationService&#39;, &#39;FunctionInput&#39;, &#39;FunctionOutput&#39;, &#39;OwnerList&#39;,
+    &#39;DataMap&#39;
+]
+
+Metadata = Dict[str, str]
+
+
+class FunctionInput:
+    &#34;&#34;&#34;Function input for registering.
+
+    Args:
+        name: Name of input data.
+        description: Description of the input data.
+    &#34;&#34;&#34;
+    def __init__(self, name: str, description: str):
+        self.name = name
+        self.description = description
+
+
+class FunctionOutput:
+    &#34;&#34;&#34;Function output for registering.
+
+    Args:
+        name: Name of output data.
+        description: Description of the output data.
+    &#34;&#34;&#34;
+    def __init__(self, name: str, description: str):
+        self.name = name
+        self.description = description
+
+
+class OwnerList:
+    &#34;&#34;&#34;Defines data ownership.
+
+    Args:
+        data_name: Name of output data.
+        uids: A list of user id which own this data.
+    &#34;&#34;&#34;
+    def __init__(self, data_name: str, uids: List[str]):
+        self.data_name = data_name
+        self.uids = uids
+
+
+class DataMap:
+    &#34;&#34;&#34;Assign data id to input or output data.
+
+    Args:
+        data_name: Name of output data.
+        data_id: Id for the data name.
+    &#34;&#34;&#34;
+    def __init__(self, data_name, data_id):
+        self.data_name = data_name
+        self.data_id = data_id
+
+
+class CryptoInfo:
+    &#34;&#34;&#34;Cryptographic information for the input/output data.
+
+    Args:
+        schema: Encryption algorithms for the input/output data.
+        key: Key for encryption and decryption, bytes in list.
+        iv: IV, bytes in list.
+    &#34;&#34;&#34;
+    def __init__(self, schema: str, key: List[int], iv: List[int]):
+        self.schema = schema
+        self.key = key
+        self.iv = iv
+
+
+class UserRegisterReqeust:
+    def __init__(self, user_id: str, user_password: str):
+        self.request = &#34;user_register&#34;
+        self.id = user_id
+        self.password = user_password
+
+
+class UserLoginRequest:
+    def __init__(self, user_id: str, user_password: str):
+        self.request = &#34;user_login&#34;
+        self.id = user_id
+        self.password = user_password
+
+
+class AuthenticationService:
+    &#34;&#34;&#34;
+    Establish trusted channel with the authentication service and provide
+    clients to send request through RPC.
+
+    Args:
+        address: The address of the remote services in tuple.
+        as_root_ca_cert_path: Root CA certification of the attestation services
+            to verify the attestation report.
+        enclave_info_path: Path of enclave info to verify the remote service in
+            the attestation report.
+    &#34;&#34;&#34;
+    _context = ssl._create_unverified_context()
+    _channel = None
+
+    def __init__(self, address: Tuple[str, int], as_root_ca_cert_path: str,
+                 enclave_info_path: str):
+        self.address = address
+        self.as_root_ca_cert_path = as_root_ca_cert_path
+        self.enclave_info_path = enclave_info_path
+
+    def connect(self):
+        &#34;&#34;&#34;Establish trusted connection and verify remote attestation report.
+
+        Returns:
+            AuthenticationService: The original object which can be chained
+                with other methods.
+        &#34;&#34;&#34;
+        sock = socket.create_connection(self.address)
+        channel = self._context.wrap_socket(sock,
+                                            server_hostname=self.address[0])
+        cert = channel.getpeercert(binary_form=True)
+        _verify_report(self.as_root_ca_cert_path, self.enclave_info_path, cert,
+                       &#34;authentication&#34;)
+
+        self._channel = channel
+
+        return self
+
+    def get_client(self):
+        &#34;&#34;&#34;Get a client of authentication service to send RPC requests.
+
+        Returns:
+            AuthenticationClient: Used for send/receive RPC requests.
+        &#34;&#34;&#34;
+        return AuthenticationClient(self._channel)
+
+
+class AuthenticationClient:
+    &#34;&#34;&#34;Client to communicate with the authentication service.
+
+    Args:
+        channel: Trusted TLS socket (verified with remote attestation).
+    &#34;&#34;&#34;
+    def __init__(self, channel: ssl.SSLSocket):
+        self.channel = channel
+
+    def user_register(self, user_id: str, user_password: str):
+        &#34;&#34;&#34;Register a new user.
+
+        Args:
+            user_id: User ID.
+            user_password: Password.
+        &#34;&#34;&#34;
+        request = UserRegisterReqeust(user_id, user_password)
+        _write_message(self.channel, request)
+        _ = _read_message(self.channel)
+
+    def user_login(self, user_id: str, user_password: str) -&gt; str:
+        &#34;&#34;&#34;Login and get a session token.
+
+        Args:
+            user_id: User ID.
+            user_password: Password.
+
+        Returns:
+            str: User login token.
+        &#34;&#34;&#34;
+        request = UserLoginRequest(user_id, user_password)
+        _write_message(self.channel, request)
+        response = _read_message(self.channel)
+        return response[&#34;content&#34;][&#34;token&#34;]
+
+
+class FrontendService:
+    &#34;&#34;&#34;Establish trusted channel with the frontend service and provide
+    clients to send request through RPC.
+
+    Args:
+        address: The address of the remote services in tuple.
+        as_root_ca_cert_path: Root CA certification of the attestation services
+            to verify the attestation report.
+        enclave_info_path: Path of enclave info to verify the remote service in
+            the attestation report.
+    &#34;&#34;&#34;
+    _context = ssl._create_unverified_context()
+    _channel = None
+
+    def __init__(self, address: Tuple[str, int], as_root_ca_cert_path: str,
+                 enclave_info_path: str):
+        self.address = address
+        self.as_root_ca_cert_path = as_root_ca_cert_path
+        self.enclave_info_path = enclave_info_path
+
+    def connect(self):
+        &#34;&#34;&#34;Establish trusted connection and verify remote attestation report.
+
+        Returns:
+            FrontendService: The original object which can be chained
+                with other methods.
+        &#34;&#34;&#34;
+        sock = socket.create_connection(self.address)
+        channel = self._context.wrap_socket(sock,
+                                            server_hostname=self.address[0])
+        cert = channel.getpeercert(binary_form=True)
+        _verify_report(self.as_root_ca_cert_path, self.enclave_info_path, cert,
+                       &#34;frontend&#34;)
+
+        self._channel = channel
+        return self
+
+    def get_client(self):
+        &#34;&#34;&#34;Get a client of frontend service to send RPC requests.
+
+        Returns:
+            FrontendClient: Used for send/receive RPC requests.
+        &#34;&#34;&#34;
+        return FrontendClient(self._channel)
+
+
+class RegisterFunctionRequest:
+    def __init__(self, metadata: Metadata, name: str, description: str,
+                 executor_type: str, public: bool, payload: List[int],
+                 arguments: List[str], inputs: List[FunctionInput],
+                 outputs: List[FunctionOutput]):
+        self.request = &#34;register_function&#34;
+        self.metadata = metadata
+        self.name = name
+        self.description = description
+        self.executor_type = executor_type
+        self.public = public
+        self.payload = payload
+        self.arguments = arguments
+        self.inputs = inputs
+        self.outputs = outputs
+
+
+class RegisterInputFileRequest:
+    def __init__(self, metadata: Metadata, url: str, cmac: str,
+                 crypto_info: CryptoInfo):
+        self.request = &#34;register_input_file&#34;
+        self.metadata = metadata
+        self.url = url
+        self.cmac = cmac
+        self.crypto_info = crypto_info
+
+
+class RegisterOutputFileRequest:
+    def __init__(self, metadata: Metadata, url: str, crypto_info: CryptoInfo):
+        self.request = &#34;register_output_file&#34;
+        self.metadata = metadata
+        self.url = url
+        self.crypto_info = crypto_info
+
+
+class UpdateInputFileRequest:
+    def __init__(self, metadata: Metadata, data_id: str, url: str):
+        self.request = &#34;update_input_file&#34;
+        self.metadata = metadata
+        self.data_id = data_id
+        self.url = url
+
+
+class UpdateOutputFileRequest:
+    def __init__(self, metadata: Metadata, data_id: str, url: str):
+        self.request = &#34;update_output_file&#34;
+        self.metadata = metadata
+        self.data_id = data_id
+        self.url = url
+
+
+class CreateTaskRequest:
+    def __init__(self, metadata: Metadata, function_id: str,
+                 function_arguments: Dict[str, Any], executor: str,
+                 inputs_ownership: List[OwnerList],
+                 outputs_ownership: List[OwnerList]):
+        self.request = &#34;create_task&#34;
+        self.metadata = metadata
+        self.function_id = function_id
+        self.function_arguments = function_arguments
+        self.executor = executor
+        self.inputs_ownership = inputs_ownership
+        self.outputs_ownership = outputs_ownership
+
+
+class AssignDataRequest:
+    def __init__(self, metadata: Metadata, task_id: str, inputs: List[DataMap],
+                 outputs: List[DataMap]):
+        self.request = &#34;assign_data&#34;
+        self.metadata = metadata
+        self.task_id = task_id
+        self.inputs = inputs
+        self.outputs = outputs
+
+
+class ApproveTaskRequest:
+    def __init__(self, metadata: Metadata, task_id: str):
+        self.request = &#34;approve_task&#34;
+        self.metadata = metadata
+        self.task_id = task_id
+
+
+class InvokeTaskRequest:
+    def __init__(self, metadata: Metadata, task_id: str):
+        self.request = &#34;invoke_task&#34;
+        self.metadata = metadata
+        self.task_id = task_id
+
+
+class GetTaskRequest:
+    def __init__(self, metadata: Metadata, task_id: str):
+        self.request = &#34;get_task&#34;
+        self.metadata = metadata
+        self.task_id = task_id
+
+
+class FrontendClient:
+    def __init__(self, channel: ssl.SSLSocket, metadata: Metadata = None):
+        self.channel = channel
+        self.metadata = metadata
+
+    def register_function(self,
+                          name: str,
+                          description: str,
+                          executor_type: str,
+                          public: bool = True,
+                          payload: List[int] = [],
+                          arguments: List[str] = [],
+                          inputs: List[FunctionInput] = [],
+                          outputs: List[FunctionOutput] = []):
+        request = RegisterFunctionRequest(self.metadata, name, description,
+                                          executor_type, public, payload,
+                                          arguments, inputs, outputs)
+        _write_message(self.channel, request)
+        response = _read_message(self.channel)
+        return response[&#34;content&#34;][&#34;function_id&#34;]
+
+    def register_input_file(self, url: str, schema: str, key: List[int],
+                            iv: List[int], cmac: str):
+        request = RegisterInputFileRequest(self.metadata, url, cmac,
+                                           CryptoInfo(schema, key, iv))
+        _write_message(self.channel, request)
+        response = _read_message(self.channel)
+        return response[&#34;content&#34;][&#34;data_id&#34;]
+
+    def register_output_file(self, url: str, schema: str, key: List[int],
+                             iv: List[int]):
+        request = RegisterOutputFileRequest(self.metadata, url,
+                                            CryptoInfo(schema, key, iv))
+        _write_message(self.channel, request)
+        response = _read_message(self.channel)
+        return response[&#34;content&#34;][&#34;data_id&#34;]
+
+    def create_task(self,
+                    function_id: str,
+                    function_arguments: Dict[str, Any],
+                    executor: str,
+                    inputs_ownership: List[OwnerList] = [],
+                    outputs_ownership: List[OwnerList] = []):
+        function_arguments = json.dumps(function_arguments)
+        request = CreateTaskRequest(self.metadata, function_id,
+                                    function_arguments, executor,
+                                    inputs_ownership, outputs_ownership)
+        _write_message(self.channel, request)
+        response = _read_message(self.channel)
+        return response[&#34;content&#34;][&#34;task_id&#34;]
+
+    def assign_data_to_task(self, task_id: str, inputs: List[DataMap],
+                            outputs: List[DataMap]):
+        request = AssignDataRequest(self.metadata, task_id, inputs, outputs)
+        _write_message(self.channel, request)
+        _ = _read_message(self.channel)
+        return
+
+    def approve_task(self, task_id: str):
+        request = ApproveTaskRequest(self.metadata, task_id)
+        _write_message(self.channel, request)
+        _ = _read_message(self.channel)
+        return
+
+    def invoke_task(self, task_id: str):
+        request = InvokeTaskRequest(self.metadata, task_id)
+        _write_message(self.channel, request)
+        response = _read_message(self.channel)
+        assert (response[&#34;result&#34;] == &#34;ok&#34;)
+
+    def get_task_result(self, task_id: str):
+        request = GetTaskRequest(self.metadata, task_id)
+
+        while True:
+            _write_message(self.channel, request)
+            response = _read_message(self.channel)
+            time.sleep(1)
+            if response[&#34;content&#34;][&#34;status&#34;] == 10:
+                break
+
+        return response[&#34;content&#34;][&#34;result&#34;][&#34;result&#34;][&#34;Ok&#34;][&#34;return_value&#34;]
+
+
+def _write_message(sock: ssl.SSLSocket, message: Any):
+    class RequestEncoder(json.JSONEncoder):
+        def default(self, o):
+            return o.__dict__
+
+    message = json.dumps(message, cls=RequestEncoder).encode()
+    sock.write(struct.pack(&#34;&gt;Q&#34;, len(message)))
+    sock.write(message)
+
+
+def _read_message(sock: ssl.SSLSocket):
+    response_len = struct.unpack(&#34;&gt;Q&#34;, sock.read(8))
+    response = sock.read(response_len[0])
+    response = json.loads(response)
+    return response
+
+
+def _verify_report(as_root_ca_cert_path: str, enclave_info_path: str,
+                   cert: Dict[str, Any], endpoint_name: str):
+    if os.environ.get(&#39;SGX_MODE&#39;) == &#39;SW&#39;:
+        return
+
+    cert = x509.load_der_x509_certificate(cert, default_backend())
+    ext = json.loads(cert.extensions[0].value.value)
+
+    report = bytes(ext[&#34;report&#34;])
+    signature = bytes(ext[&#34;signature&#34;])
+    signing_cert = bytes(ext[&#34;signing_cert&#34;])
+    signing_cert = load_certificate(FILETYPE_ASN1, signing_cert)
+
+    # verify signing cert with AS root cert
+    with open(as_root_ca_cert_path) as f:
+        as_root_ca_cert = f.read()
+    as_root_ca_cert = load_certificate(FILETYPE_PEM, as_root_ca_cert)
+    store = X509Store()
+    store.add_cert(as_root_ca_cert)
+    store.add_cert(signing_cert)
+    store_ctx = X509StoreContext(store, as_root_ca_cert)
+    store_ctx.verify_certificate()
+
+    # verify report&#39;s signature
+    crypto.verify(signing_cert, signature, bytes(ext[&#34;report&#34;]), &#39;sha256&#39;)
+
+    report = json.loads(report)
+    quote = report[&#39;isvEnclaveQuoteBody&#39;]
+    quote = base64.b64decode(quote)
+
+    # get mr_enclave and mr_signer from the quote
+    mr_enclave = quote[112:112 + 32].hex()
+    mr_signer = quote[176:176 + 32].hex()
+
+    # get enclave_info
+    enclave_info = toml.load(enclave_info_path)
+
+    # verify mr_enclave and mr_signer
+    enclave_name = &#34;teaclave_&#34; + endpoint_name + &#34;_service&#34;
+    if mr_enclave != enclave_info[enclave_name][&#34;mr_enclave&#34;]:
+        raise Exception(&#34;mr_enclave error&#34;)
+
+    if mr_signer != enclave_info[enclave_name][&#34;mr_signer&#34;]:
+        raise Exception(&#34;mr_signer error&#34;)</code></pre>
+</details>
+</section>
+<section>
+</section>
+<section>
+</section>
+<section>
+</section>
+<section>
+<h2 class="section-title" id="header-classes">Classes</h2>
+<dl>
+<dt id="teaclave.AuthenticationClient"><code class="flex name class">
+<span>class <span class="ident">AuthenticationClient</span></span>
+<span>(</span><span>channel: ssl.SSLSocket)</span>
+</code></dt>
+<dd>
+<div class="desc"><p>Client to communicate with the authentication service.</p>
+<h2 id="args">Args</h2>
+<dl>
+<dt><strong><code>channel</code></strong></dt>
+<dd>Trusted TLS socket (verified with remote attestation).</dd>
+</dl></div>
+<details class="source">
+<summary>
+<span>Expand source code</span>
+</summary>
+<pre><code class="python">class AuthenticationClient:
+    &#34;&#34;&#34;Client to communicate with the authentication service.
+
+    Args:
+        channel: Trusted TLS socket (verified with remote attestation).
+    &#34;&#34;&#34;
+    def __init__(self, channel: ssl.SSLSocket):
+        self.channel = channel
+
+    def user_register(self, user_id: str, user_password: str):
+        &#34;&#34;&#34;Register a new user.
+
+        Args:
+            user_id: User ID.
+            user_password: Password.
+        &#34;&#34;&#34;
+        request = UserRegisterReqeust(user_id, user_password)
+        _write_message(self.channel, request)
+        _ = _read_message(self.channel)
+
+    def user_login(self, user_id: str, user_password: str) -&gt; str:
+        &#34;&#34;&#34;Login and get a session token.
+
+        Args:
+            user_id: User ID.
+            user_password: Password.
+
+        Returns:
+            str: User login token.
+        &#34;&#34;&#34;
+        request = UserLoginRequest(user_id, user_password)
+        _write_message(self.channel, request)
+        response = _read_message(self.channel)
+        return response[&#34;content&#34;][&#34;token&#34;]</code></pre>
+</details>
+<h3>Methods</h3>
+<dl>
+<dt id="teaclave.AuthenticationClient.user_login"><code class="name flex">
+<span>def <span class="ident">user_login</span></span>(<span>self, user_id: str, user_password: str) -> str</span>
+</code></dt>
+<dd>
+<div class="desc"><p>Login and get a session token.</p>
+<h2 id="args">Args</h2>
+<dl>
+<dt><strong><code>user_id</code></strong></dt>
+<dd>User ID.</dd>
+<dt><strong><code>user_password</code></strong></dt>
+<dd>Password.</dd>
+</dl>
+<h2 id="returns">Returns</h2>
+<dl>
+<dt><code>str</code></dt>
+<dd>User login token.</dd>
+</dl></div>
+<details class="source">
+<summary>
+<span>Expand source code</span>
+</summary>
+<pre><code class="python">def user_login(self, user_id: str, user_password: str) -&gt; str:
+    &#34;&#34;&#34;Login and get a session token.
+
+    Args:
+        user_id: User ID.
+        user_password: Password.
+
+    Returns:
+        str: User login token.
+    &#34;&#34;&#34;
+    request = UserLoginRequest(user_id, user_password)
+    _write_message(self.channel, request)
+    response = _read_message(self.channel)
+    return response[&#34;content&#34;][&#34;token&#34;]</code></pre>
+</details>
+</dd>
+<dt id="teaclave.AuthenticationClient.user_register"><code class="name flex">
+<span>def <span class="ident">user_register</span></span>(<span>self, user_id: str, user_password: str)</span>
+</code></dt>
+<dd>
+<div class="desc"><p>Register a new user.</p>
+<h2 id="args">Args</h2>
+<dl>
+<dt><strong><code>user_id</code></strong></dt>
+<dd>User ID.</dd>
+<dt><strong><code>user_password</code></strong></dt>
+<dd>Password.</dd>
+</dl></div>
+<details class="source">
+<summary>
+<span>Expand source code</span>
+</summary>
+<pre><code class="python">def user_register(self, user_id: str, user_password: str):
+    &#34;&#34;&#34;Register a new user.
+
+    Args:
+        user_id: User ID.
+        user_password: Password.
+    &#34;&#34;&#34;
+    request = UserRegisterReqeust(user_id, user_password)
+    _write_message(self.channel, request)
+    _ = _read_message(self.channel)</code></pre>
+</details>
+</dd>
+</dl>
+</dd>
+<dt id="teaclave.AuthenticationService"><code class="flex name class">
+<span>class <span class="ident">AuthenticationService</span></span>
+<span>(</span><span>address: Tuple[str, int], as_root_ca_cert_path: str, enclave_info_path: str)</span>
+</code></dt>
+<dd>
+<div class="desc"><p>Establish trusted channel with the authentication service and provide
+clients to send request through RPC.</p>
+<h2 id="args">Args</h2>
+<dl>
+<dt><strong><code>address</code></strong></dt>
+<dd>The address of the remote services in tuple.</dd>
+<dt><strong><code>as_root_ca_cert_path</code></strong></dt>
+<dd>Root CA certification of the attestation services
+to verify the attestation report.</dd>
+<dt><strong><code>enclave_info_path</code></strong></dt>
+<dd>Path of enclave info to verify the remote service in
+the attestation report.</dd>
+</dl></div>
+<details class="source">
+<summary>
+<span>Expand source code</span>
+</summary>
+<pre><code class="python">class AuthenticationService:
+    &#34;&#34;&#34;
+    Establish trusted channel with the authentication service and provide
+    clients to send request through RPC.
+
+    Args:
+        address: The address of the remote services in tuple.
+        as_root_ca_cert_path: Root CA certification of the attestation services
+            to verify the attestation report.
+        enclave_info_path: Path of enclave info to verify the remote service in
+            the attestation report.
+    &#34;&#34;&#34;
+    _context = ssl._create_unverified_context()
+    _channel = None
+
+    def __init__(self, address: Tuple[str, int], as_root_ca_cert_path: str,
+                 enclave_info_path: str):
+        self.address = address
+        self.as_root_ca_cert_path = as_root_ca_cert_path
+        self.enclave_info_path = enclave_info_path
+
+    def connect(self):
+        &#34;&#34;&#34;Establish trusted connection and verify remote attestation report.
+
+        Returns:
+            AuthenticationService: The original object which can be chained
+                with other methods.
+        &#34;&#34;&#34;
+        sock = socket.create_connection(self.address)
+        channel = self._context.wrap_socket(sock,
+                                            server_hostname=self.address[0])
+        cert = channel.getpeercert(binary_form=True)
+        _verify_report(self.as_root_ca_cert_path, self.enclave_info_path, cert,
+                       &#34;authentication&#34;)
+
+        self._channel = channel
+
+        return self
+
+    def get_client(self):
+        &#34;&#34;&#34;Get a client of authentication service to send RPC requests.
+
+        Returns:
+            AuthenticationClient: Used for send/receive RPC requests.
+        &#34;&#34;&#34;
+        return AuthenticationClient(self._channel)</code></pre>
+</details>
+<h3>Methods</h3>
+<dl>
+<dt id="teaclave.AuthenticationService.connect"><code class="name flex">
+<span>def <span class="ident">connect</span></span>(<span>self)</span>
+</code></dt>
+<dd>
+<div class="desc"><p>Establish trusted connection and verify remote attestation report.</p>
+<h2 id="returns">Returns</h2>
+<dl>
+<dt><code><a title="teaclave.AuthenticationService" href="#teaclave.AuthenticationService">AuthenticationService</a></code></dt>
+<dd>The original object which can be chained
+with other methods.</dd>
+</dl></div>
+<details class="source">
+<summary>
+<span>Expand source code</span>
+</summary>
+<pre><code class="python">def connect(self):
+    &#34;&#34;&#34;Establish trusted connection and verify remote attestation report.
+
+    Returns:
+        AuthenticationService: The original object which can be chained
+            with other methods.
+    &#34;&#34;&#34;
+    sock = socket.create_connection(self.address)
+    channel = self._context.wrap_socket(sock,
+                                        server_hostname=self.address[0])
+    cert = channel.getpeercert(binary_form=True)
+    _verify_report(self.as_root_ca_cert_path, self.enclave_info_path, cert,
+                   &#34;authentication&#34;)
+
+    self._channel = channel
+
+    return self</code></pre>
+</details>
+</dd>
+<dt id="teaclave.AuthenticationService.get_client"><code class="name flex">
+<span>def <span class="ident">get_client</span></span>(<span>self)</span>
+</code></dt>
+<dd>
+<div class="desc"><p>Get a client of authentication service to send RPC requests.</p>
+<h2 id="returns">Returns</h2>
+<dl>
+<dt><code><a title="teaclave.AuthenticationClient" href="#teaclave.AuthenticationClient">AuthenticationClient</a></code></dt>
+<dd>Used for send/receive RPC requests.</dd>
+</dl></div>
+<details class="source">
+<summary>
+<span>Expand source code</span>
+</summary>
+<pre><code class="python">def get_client(self):
+    &#34;&#34;&#34;Get a client of authentication service to send RPC requests.
+
+    Returns:
+        AuthenticationClient: Used for send/receive RPC requests.
+    &#34;&#34;&#34;
+    return AuthenticationClient(self._channel)</code></pre>
+</details>
+</dd>
+</dl>
+</dd>
+<dt id="teaclave.DataMap"><code class="flex name class">
+<span>class <span class="ident">DataMap</span></span>
+<span>(</span><span>data_name, data_id)</span>
+</code></dt>
+<dd>
+<div class="desc"><p>Assign data id to input or output data.</p>
+<h2 id="args">Args</h2>
+<dl>
+<dt><strong><code>data_name</code></strong></dt>
+<dd>Name of output data.</dd>
+<dt><strong><code>data_id</code></strong></dt>
+<dd>Id for the data name.</dd>
+</dl></div>
+<details class="source">
+<summary>
+<span>Expand source code</span>
+</summary>
+<pre><code class="python">class DataMap:
+    &#34;&#34;&#34;Assign data id to input or output data.
+
+    Args:
+        data_name: Name of output data.
+        data_id: Id for the data name.
+    &#34;&#34;&#34;
+    def __init__(self, data_name, data_id):
+        self.data_name = data_name
+        self.data_id = data_id</code></pre>
+</details>
+</dd>
+<dt id="teaclave.FrontendClient"><code class="flex name class">
+<span>class <span class="ident">FrontendClient</span></span>
+<span>(</span><span>channel: ssl.SSLSocket, metadata: Dict[str, str] = None)</span>
+</code></dt>
+<dd>
+<div class="desc"></div>
+<details class="source">
+<summary>
+<span>Expand source code</span>
+</summary>
+<pre><code class="python">class FrontendClient:
+    def __init__(self, channel: ssl.SSLSocket, metadata: Metadata = None):
+        self.channel = channel
+        self.metadata = metadata
+
+    def register_function(self,
+                          name: str,
+                          description: str,
+                          executor_type: str,
+                          public: bool = True,
+                          payload: List[int] = [],
+                          arguments: List[str] = [],
+                          inputs: List[FunctionInput] = [],
+                          outputs: List[FunctionOutput] = []):
+        request = RegisterFunctionRequest(self.metadata, name, description,
+                                          executor_type, public, payload,
+                                          arguments, inputs, outputs)
+        _write_message(self.channel, request)
+        response = _read_message(self.channel)
+        return response[&#34;content&#34;][&#34;function_id&#34;]
+
+    def register_input_file(self, url: str, schema: str, key: List[int],
+                            iv: List[int], cmac: str):
+        request = RegisterInputFileRequest(self.metadata, url, cmac,
+                                           CryptoInfo(schema, key, iv))
+        _write_message(self.channel, request)
+        response = _read_message(self.channel)
+        return response[&#34;content&#34;][&#34;data_id&#34;]
+
+    def register_output_file(self, url: str, schema: str, key: List[int],
+                             iv: List[int]):
+        request = RegisterOutputFileRequest(self.metadata, url,
+                                            CryptoInfo(schema, key, iv))
+        _write_message(self.channel, request)
+        response = _read_message(self.channel)
+        return response[&#34;content&#34;][&#34;data_id&#34;]
+
+    def create_task(self,
+                    function_id: str,
+                    function_arguments: Dict[str, Any],
+                    executor: str,
+                    inputs_ownership: List[OwnerList] = [],
+                    outputs_ownership: List[OwnerList] = []):
+        function_arguments = json.dumps(function_arguments)
+        request = CreateTaskRequest(self.metadata, function_id,
+                                    function_arguments, executor,
+                                    inputs_ownership, outputs_ownership)
+        _write_message(self.channel, request)
+        response = _read_message(self.channel)
+        return response[&#34;content&#34;][&#34;task_id&#34;]
+
+    def assign_data_to_task(self, task_id: str, inputs: List[DataMap],
+                            outputs: List[DataMap]):
+        request = AssignDataRequest(self.metadata, task_id, inputs, outputs)
+        _write_message(self.channel, request)
+        _ = _read_message(self.channel)
+        return
+
+    def approve_task(self, task_id: str):
+        request = ApproveTaskRequest(self.metadata, task_id)
+        _write_message(self.channel, request)
+        _ = _read_message(self.channel)
+        return
+
+    def invoke_task(self, task_id: str):
+        request = InvokeTaskRequest(self.metadata, task_id)
+        _write_message(self.channel, request)
+        response = _read_message(self.channel)
+        assert (response[&#34;result&#34;] == &#34;ok&#34;)
+
+    def get_task_result(self, task_id: str):
+        request = GetTaskRequest(self.metadata, task_id)
+
+        while True:
+            _write_message(self.channel, request)
+            response = _read_message(self.channel)
+            time.sleep(1)
+            if response[&#34;content&#34;][&#34;status&#34;] == 10:
+                break
+
+        return response[&#34;content&#34;][&#34;result&#34;][&#34;result&#34;][&#34;Ok&#34;][&#34;return_value&#34;]</code></pre>
+</details>
+<h3>Methods</h3>
+<dl>
+<dt id="teaclave.FrontendClient.approve_task"><code class="name flex">
+<span>def <span class="ident">approve_task</span></span>(<span>self, task_id: str)</span>
+</code></dt>
+<dd>
+<div class="desc"></div>
+<details class="source">
+<summary>
+<span>Expand source code</span>
+</summary>
+<pre><code class="python">def approve_task(self, task_id: str):
+    request = ApproveTaskRequest(self.metadata, task_id)
+    _write_message(self.channel, request)
+    _ = _read_message(self.channel)
+    return</code></pre>
+</details>
+</dd>
+<dt id="teaclave.FrontendClient.assign_data_to_task"><code class="name flex">
+<span>def <span class="ident">assign_data_to_task</span></span>(<span>self, task_id: str, inputs: List[<a title="teaclave.DataMap" href="#teaclave.DataMap">DataMap</a>], outputs: List[<a title="teaclave.DataMap" href="#teaclave.DataMap">DataMap</a>])</span>
+</code></dt>
+<dd>
+<div class="desc"></div>
+<details class="source">
+<summary>
+<span>Expand source code</span>
+</summary>
+<pre><code class="python">def assign_data_to_task(self, task_id: str, inputs: List[DataMap],
+                        outputs: List[DataMap]):
+    request = AssignDataRequest(self.metadata, task_id, inputs, outputs)
+    _write_message(self.channel, request)
+    _ = _read_message(self.channel)
+    return</code></pre>
+</details>
+</dd>
+<dt id="teaclave.FrontendClient.create_task"><code class="name flex">
+<span>def <span class="ident">create_task</span></span>(<span>self, function_id: str, function_arguments: Dict[str, Any], executor: str, inputs_ownership: List[<a title="teaclave.OwnerList" href="#teaclave.OwnerList">OwnerList</a>] = [], outputs_ownership: List[<a title="teaclave.OwnerList" href="#teaclave.OwnerList">OwnerList</a>] = [])</span>
+</code></dt>
+<dd>
+<div class="desc"></div>
+<details class="source">
+<summary>
+<span>Expand source code</span>
+</summary>
+<pre><code class="python">def create_task(self,
+                function_id: str,
+                function_arguments: Dict[str, Any],
+                executor: str,
+                inputs_ownership: List[OwnerList] = [],
+                outputs_ownership: List[OwnerList] = []):
+    function_arguments = json.dumps(function_arguments)
+    request = CreateTaskRequest(self.metadata, function_id,
+                                function_arguments, executor,
+                                inputs_ownership, outputs_ownership)
+    _write_message(self.channel, request)
+    response = _read_message(self.channel)
+    return response[&#34;content&#34;][&#34;task_id&#34;]</code></pre>
+</details>
+</dd>
+<dt id="teaclave.FrontendClient.get_task_result"><code class="name flex">
+<span>def <span class="ident">get_task_result</span></span>(<span>self, task_id: str)</span>
+</code></dt>
+<dd>
+<div class="desc"></div>
+<details class="source">
+<summary>
+<span>Expand source code</span>
+</summary>
+<pre><code class="python">def get_task_result(self, task_id: str):
+    request = GetTaskRequest(self.metadata, task_id)
+
+    while True:
+        _write_message(self.channel, request)
+        response = _read_message(self.channel)
+        time.sleep(1)
+        if response[&#34;content&#34;][&#34;status&#34;] == 10:
+            break
+
+    return response[&#34;content&#34;][&#34;result&#34;][&#34;result&#34;][&#34;Ok&#34;][&#34;return_value&#34;]</code></pre>
+</details>
+</dd>
+<dt id="teaclave.FrontendClient.invoke_task"><code class="name flex">
+<span>def <span class="ident">invoke_task</span></span>(<span>self, task_id: str)</span>
+</code></dt>
+<dd>
+<div class="desc"></div>
+<details class="source">
+<summary>
+<span>Expand source code</span>
+</summary>
+<pre><code class="python">def invoke_task(self, task_id: str):
+    request = InvokeTaskRequest(self.metadata, task_id)
+    _write_message(self.channel, request)
+    response = _read_message(self.channel)
+    assert (response[&#34;result&#34;] == &#34;ok&#34;)</code></pre>
+</details>
+</dd>
+<dt id="teaclave.FrontendClient.register_function"><code class="name flex">
+<span>def <span class="ident">register_function</span></span>(<span>self, name: str, description: str, executor_type: str, public: bool = True, payload: List[int] = [], arguments: List[str] = [], inputs: List[<a title="teaclave.FunctionInput" href="#teaclave.FunctionInput">FunctionInput</a>] = [], outputs: List[<a title="teaclave.FunctionOutput" href="#teaclave.FunctionOutput">FunctionOutput</a>] = [])</span>
+</code></dt>
+<dd>
+<div class="desc"></div>
+<details class="source">
+<summary>
+<span>Expand source code</span>
+</summary>
+<pre><code class="python">def register_function(self,
+                      name: str,
+                      description: str,
+                      executor_type: str,
+                      public: bool = True,
+                      payload: List[int] = [],
+                      arguments: List[str] = [],
+                      inputs: List[FunctionInput] = [],
+                      outputs: List[FunctionOutput] = []):
+    request = RegisterFunctionRequest(self.metadata, name, description,
+                                      executor_type, public, payload,
+                                      arguments, inputs, outputs)
+    _write_message(self.channel, request)
+    response = _read_message(self.channel)
+    return response[&#34;content&#34;][&#34;function_id&#34;]</code></pre>
+</details>
+</dd>
+<dt id="teaclave.FrontendClient.register_input_file"><code class="name flex">
+<span>def <span class="ident">register_input_file</span></span>(<span>self, url: str, schema: str, key: List[int], iv: List[int], cmac: str)</span>
+</code></dt>
+<dd>
+<div class="desc"></div>
+<details class="source">
+<summary>
+<span>Expand source code</span>
+</summary>
+<pre><code class="python">def register_input_file(self, url: str, schema: str, key: List[int],
+                        iv: List[int], cmac: str):
+    request = RegisterInputFileRequest(self.metadata, url, cmac,
+                                       CryptoInfo(schema, key, iv))
+    _write_message(self.channel, request)
+    response = _read_message(self.channel)
+    return response[&#34;content&#34;][&#34;data_id&#34;]</code></pre>
+</details>
+</dd>
+<dt id="teaclave.FrontendClient.register_output_file"><code class="name flex">
+<span>def <span class="ident">register_output_file</span></span>(<span>self, url: str, schema: str, key: List[int], iv: List[int])</span>
+</code></dt>
+<dd>
+<div class="desc"></div>
+<details class="source">
+<summary>
+<span>Expand source code</span>
+</summary>
+<pre><code class="python">def register_output_file(self, url: str, schema: str, key: List[int],
+                         iv: List[int]):
+    request = RegisterOutputFileRequest(self.metadata, url,
+                                        CryptoInfo(schema, key, iv))
+    _write_message(self.channel, request)
+    response = _read_message(self.channel)
+    return response[&#34;content&#34;][&#34;data_id&#34;]</code></pre>
+</details>
+</dd>
+</dl>
+</dd>
+<dt id="teaclave.FrontendService"><code class="flex name class">
+<span>class <span class="ident">FrontendService</span></span>
+<span>(</span><span>address: Tuple[str, int], as_root_ca_cert_path: str, enclave_info_path: str)</span>
+</code></dt>
+<dd>
+<div class="desc"><p>Establish trusted channel with the frontend service and provide
+clients to send request through RPC.</p>
+<h2 id="args">Args</h2>
+<dl>
+<dt><strong><code>address</code></strong></dt>
+<dd>The address of the remote services in tuple.</dd>
+<dt><strong><code>as_root_ca_cert_path</code></strong></dt>
+<dd>Root CA certification of the attestation services
+to verify the attestation report.</dd>
+<dt><strong><code>enclave_info_path</code></strong></dt>
+<dd>Path of enclave info to verify the remote service in
+the attestation report.</dd>
+</dl></div>
+<details class="source">
+<summary>
+<span>Expand source code</span>
+</summary>
+<pre><code class="python">class FrontendService:
+    &#34;&#34;&#34;Establish trusted channel with the frontend service and provide
+    clients to send request through RPC.
+
+    Args:
+        address: The address of the remote services in tuple.
+        as_root_ca_cert_path: Root CA certification of the attestation services
+            to verify the attestation report.
+        enclave_info_path: Path of enclave info to verify the remote service in
+            the attestation report.
+    &#34;&#34;&#34;
+    _context = ssl._create_unverified_context()
+    _channel = None
+
+    def __init__(self, address: Tuple[str, int], as_root_ca_cert_path: str,
+                 enclave_info_path: str):
+        self.address = address
+        self.as_root_ca_cert_path = as_root_ca_cert_path
+        self.enclave_info_path = enclave_info_path
+
+    def connect(self):
+        &#34;&#34;&#34;Establish trusted connection and verify remote attestation report.
+
+        Returns:
+            FrontendService: The original object which can be chained
+                with other methods.
+        &#34;&#34;&#34;
+        sock = socket.create_connection(self.address)
+        channel = self._context.wrap_socket(sock,
+                                            server_hostname=self.address[0])
+        cert = channel.getpeercert(binary_form=True)
+        _verify_report(self.as_root_ca_cert_path, self.enclave_info_path, cert,
+                       &#34;frontend&#34;)
+
+        self._channel = channel
+        return self
+
+    def get_client(self):
+        &#34;&#34;&#34;Get a client of frontend service to send RPC requests.
+
+        Returns:
+            FrontendClient: Used for send/receive RPC requests.
+        &#34;&#34;&#34;
+        return FrontendClient(self._channel)</code></pre>
+</details>
+<h3>Methods</h3>
+<dl>
+<dt id="teaclave.FrontendService.connect"><code class="name flex">
+<span>def <span class="ident">connect</span></span>(<span>self)</span>
+</code></dt>
+<dd>
+<div class="desc"><p>Establish trusted connection and verify remote attestation report.</p>
+<h2 id="returns">Returns</h2>
+<dl>
+<dt><code><a title="teaclave.FrontendService" href="#teaclave.FrontendService">FrontendService</a></code></dt>
+<dd>The original object which can be chained
+with other methods.</dd>
+</dl></div>
+<details class="source">
+<summary>
+<span>Expand source code</span>
+</summary>
+<pre><code class="python">def connect(self):
+    &#34;&#34;&#34;Establish trusted connection and verify remote attestation report.
+
+    Returns:
+        FrontendService: The original object which can be chained
+            with other methods.
+    &#34;&#34;&#34;
+    sock = socket.create_connection(self.address)
+    channel = self._context.wrap_socket(sock,
+                                        server_hostname=self.address[0])
+    cert = channel.getpeercert(binary_form=True)
+    _verify_report(self.as_root_ca_cert_path, self.enclave_info_path, cert,
+                   &#34;frontend&#34;)
+
+    self._channel = channel
+    return self</code></pre>
+</details>
+</dd>
+<dt id="teaclave.FrontendService.get_client"><code class="name flex">
+<span>def <span class="ident">get_client</span></span>(<span>self)</span>
+</code></dt>
+<dd>
+<div class="desc"><p>Get a client of frontend service to send RPC requests.</p>
+<h2 id="returns">Returns</h2>
+<dl>
+<dt><code><a title="teaclave.FrontendClient" href="#teaclave.FrontendClient">FrontendClient</a></code></dt>
+<dd>Used for send/receive RPC requests.</dd>
+</dl></div>
+<details class="source">
+<summary>
+<span>Expand source code</span>
+</summary>
+<pre><code class="python">def get_client(self):
+    &#34;&#34;&#34;Get a client of frontend service to send RPC requests.
+
+    Returns:
+        FrontendClient: Used for send/receive RPC requests.
+    &#34;&#34;&#34;
+    return FrontendClient(self._channel)</code></pre>
+</details>
+</dd>
+</dl>
+</dd>
+<dt id="teaclave.FunctionInput"><code class="flex name class">
+<span>class <span class="ident">FunctionInput</span></span>
+<span>(</span><span>name: str, description: str)</span>
+</code></dt>
+<dd>
+<div class="desc"><p>Function input for registering.</p>
+<h2 id="args">Args</h2>
+<dl>
+<dt><strong><code>name</code></strong></dt>
+<dd>Name of input data.</dd>
+<dt><strong><code>description</code></strong></dt>
+<dd>Description of the input data.</dd>
+</dl></div>
+<details class="source">
+<summary>
+<span>Expand source code</span>
+</summary>
+<pre><code class="python">class FunctionInput:
+    &#34;&#34;&#34;Function input for registering.
+
+    Args:
+        name: Name of input data.
+        description: Description of the input data.
+    &#34;&#34;&#34;
+    def __init__(self, name: str, description: str):
+        self.name = name
+        self.description = description</code></pre>
+</details>
+</dd>
+<dt id="teaclave.FunctionOutput"><code class="flex name class">
+<span>class <span class="ident">FunctionOutput</span></span>
+<span>(</span><span>name: str, description: str)</span>
+</code></dt>
+<dd>
+<div class="desc"><p>Function output for registering.</p>
+<h2 id="args">Args</h2>
+<dl>
+<dt><strong><code>name</code></strong></dt>
+<dd>Name of output data.</dd>
+<dt><strong><code>description</code></strong></dt>
+<dd>Description of the output data.</dd>
+</dl></div>
+<details class="source">
+<summary>
+<span>Expand source code</span>
+</summary>
+<pre><code class="python">class FunctionOutput:
+    &#34;&#34;&#34;Function output for registering.
+
+    Args:
+        name: Name of output data.
+        description: Description of the output data.
+    &#34;&#34;&#34;
+    def __init__(self, name: str, description: str):
+        self.name = name
+        self.description = description</code></pre>
+</details>
+</dd>
+<dt id="teaclave.OwnerList"><code class="flex name class">
+<span>class <span class="ident">OwnerList</span></span>
+<span>(</span><span>data_name: str, uids: List[str])</span>
+</code></dt>
+<dd>
+<div class="desc"><p>Defines data ownership.</p>
+<h2 id="args">Args</h2>
+<dl>
+<dt><strong><code>data_name</code></strong></dt>
+<dd>Name of output data.</dd>
+<dt><strong><code>uids</code></strong></dt>
+<dd>A list of user id which own this data.</dd>
+</dl></div>
+<details class="source">
+<summary>
+<span>Expand source code</span>
+</summary>
+<pre><code class="python">class OwnerList:
+    &#34;&#34;&#34;Defines data ownership.
+
+    Args:
+        data_name: Name of output data.
+        uids: A list of user id which own this data.
+    &#34;&#34;&#34;
+    def __init__(self, data_name: str, uids: List[str]):
+        self.data_name = data_name
+        self.uids = uids</code></pre>
+</details>
+</dd>
+</dl>
+</section>
+</article>
+<nav id="sidebar">
+<h1>Index</h1>
+<div class="toc">
+<ul></ul>
+</div>
+<ul id="index">
+<li><h3><a href="#header-classes">Classes</a></h3>
+<ul>
+<li>
+<h4><code><a title="teaclave.AuthenticationClient" href="#teaclave.AuthenticationClient">AuthenticationClient</a></code></h4>
+<ul class="">
+<li><code><a title="teaclave.AuthenticationClient.user_login" href="#teaclave.AuthenticationClient.user_login">user_login</a></code></li>
+<li><code><a title="teaclave.AuthenticationClient.user_register" href="#teaclave.AuthenticationClient.user_register">user_register</a></code></li>
+</ul>
+</li>
+<li>
+<h4><code><a title="teaclave.AuthenticationService" href="#teaclave.AuthenticationService">AuthenticationService</a></code></h4>
+<ul class="">
+<li><code><a title="teaclave.AuthenticationService.connect" href="#teaclave.AuthenticationService.connect">connect</a></code></li>
+<li><code><a title="teaclave.AuthenticationService.get_client" href="#teaclave.AuthenticationService.get_client">get_client</a></code></li>
+</ul>
+</li>
+<li>
+<h4><code><a title="teaclave.DataMap" href="#teaclave.DataMap">DataMap</a></code></h4>
+</li>
+<li>
+<h4><code><a title="teaclave.FrontendClient" href="#teaclave.FrontendClient">FrontendClient</a></code></h4>
+<ul class="">
+<li><code><a title="teaclave.FrontendClient.approve_task" href="#teaclave.FrontendClient.approve_task">approve_task</a></code></li>
+<li><code><a title="teaclave.FrontendClient.assign_data_to_task" href="#teaclave.FrontendClient.assign_data_to_task">assign_data_to_task</a></code></li>
+<li><code><a title="teaclave.FrontendClient.create_task" href="#teaclave.FrontendClient.create_task">create_task</a></code></li>
+<li><code><a title="teaclave.FrontendClient.get_task_result" href="#teaclave.FrontendClient.get_task_result">get_task_result</a></code></li>
+<li><code><a title="teaclave.FrontendClient.invoke_task" href="#teaclave.FrontendClient.invoke_task">invoke_task</a></code></li>
+<li><code><a title="teaclave.FrontendClient.register_function" href="#teaclave.FrontendClient.register_function">register_function</a></code></li>
+<li><code><a title="teaclave.FrontendClient.register_input_file" href="#teaclave.FrontendClient.register_input_file">register_input_file</a></code></li>
+<li><code><a title="teaclave.FrontendClient.register_output_file" href="#teaclave.FrontendClient.register_output_file">register_output_file</a></code></li>
+</ul>
+</li>
+<li>
+<h4><code><a title="teaclave.FrontendService" href="#teaclave.FrontendService">FrontendService</a></code></h4>
+<ul class="">
+<li><code><a title="teaclave.FrontendService.connect" href="#teaclave.FrontendService.connect">connect</a></code></li>
+<li><code><a title="teaclave.FrontendService.get_client" href="#teaclave.FrontendService.get_client">get_client</a></code></li>
+</ul>
+</li>
+<li>
+<h4><code><a title="teaclave.FunctionInput" href="#teaclave.FunctionInput">FunctionInput</a></code></h4>
+</li>
+<li>
+<h4><code><a title="teaclave.FunctionOutput" href="#teaclave.FunctionOutput">FunctionOutput</a></code></h4>
+</li>
+<li>
+<h4><code><a title="teaclave.OwnerList" href="#teaclave.OwnerList">OwnerList</a></code></h4>
+</li>
+</ul>
+</li>
+</ul>
+</nav>
+</main>
+<footer id="footer">
+<p>Generated by <a href="https://pdoc3.github.io/pdoc"><cite>pdoc</cite> 0.8.1</a>.</p>
+</footer>
+<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script>
+<script>hljs.initHighlightingOnLoad()</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/index.html b/docs/index.html
index 9ae9d31..089fa48 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -16,7 +16,7 @@
     <meta name="twitter:url" content="https://teaclave.apache.org/docs/">
     <meta name="twitter:card" content="summary_large_image">
     <meta name="twitter:site" content="@ApacheTeaclave">
-    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.2529d1a9.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/26.84ce272c.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.32a29333 [...]
+    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.19b95a1e.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/26.84ce272c.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.2d0a10d6 [...]
     <link rel="stylesheet" href="/assets/css/0.styles.276899be.css">
   </head>
   <body>
@@ -28,9 +28,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -58,9 +60,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -81,6 +85,6 @@
   <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li class="dropdown-item"><!----> <a hre [...]
   Current Event
   <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></div></div> <!----></nav>  <ul cla [...]
-    <script src="/assets/js/app.2529d1a9.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/26.84ce272c.js" defer></script>
+    <script src="/assets/js/app.19b95a1e.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/26.84ce272c.js" defer></script>
   </body>
 </html>
diff --git a/docs/mutual-attestation/index.html b/docs/mutual-attestation/index.html
index 088b6a3..41170f0 100644
--- a/docs/mutual-attestation/index.html
+++ b/docs/mutual-attestation/index.html
@@ -16,7 +16,7 @@
     <meta name="twitter:url" content="https://teaclave.apache.org/docs/mutual-attestation/">
     <meta name="twitter:card" content="summary_large_image">
     <meta name="twitter:site" content="@ApacheTeaclave">
-    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.2529d1a9.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/29.0924bd56.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.32a29333 [...]
+    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.19b95a1e.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/29.0924bd56.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.2d0a10d6 [...]
     <link rel="stylesheet" href="/assets/css/0.styles.276899be.css">
   </head>
   <body>
@@ -28,9 +28,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -58,9 +60,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -119,6 +123,6 @@ public keys, enclave identities, and the signatures directly from the auditors.<
       </a>
       →
     </span></p></div> </main></div><div class="global-ui"><!----></div></div>
-    <script src="/assets/js/app.2529d1a9.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/29.0924bd56.js" defer></script>
+    <script src="/assets/js/app.19b95a1e.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/29.0924bd56.js" defer></script>
   </body>
 </html>
diff --git a/docs/my-first-function/index.html b/docs/my-first-function/index.html
index c99dfff..b6fa8be 100644
--- a/docs/my-first-function/index.html
+++ b/docs/my-first-function/index.html
@@ -16,7 +16,7 @@
     <meta name="twitter:url" content="https://teaclave.apache.org/docs/my-first-function/">
     <meta name="twitter:card" content="summary_large_image">
     <meta name="twitter:site" content="@ApacheTeaclave">
-    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.2529d1a9.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/30.95a6f7db.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.32a29333 [...]
+    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.19b95a1e.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/30.95a6f7db.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.2d0a10d6 [...]
     <link rel="stylesheet" href="/assets/css/0.styles.276899be.css">
   </head>
   <body>
@@ -28,9 +28,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link router-link-exact-active router-link-active">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -58,9 +60,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link router-link-exact-active router-link-active">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -187,6 +191,6 @@ $ SGX_MODE=SW PYTHONPATH=../../sdk/python python3 builtin_echo.py 'Hello, Teacla
       </a>
       →
     </span></p></div> </main></div><div class="global-ui"><!----></div></div>
-    <script src="/assets/js/app.2529d1a9.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/30.95a6f7db.js" defer></script>
+    <script src="/assets/js/app.19b95a1e.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/30.95a6f7db.js" defer></script>
   </body>
 </html>
diff --git a/docs/rust-guildeline/index.html b/docs/rust-guildeline/index.html
index aa02f5c..95312b0 100644
--- a/docs/rust-guildeline/index.html
+++ b/docs/rust-guildeline/index.html
@@ -16,7 +16,7 @@
     <meta name="twitter:url" content="https://teaclave.apache.org/docs/rust-guildeline/">
     <meta name="twitter:card" content="summary_large_image">
     <meta name="twitter:site" content="@ApacheTeaclave">
-    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.2529d1a9.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/31.a92227f6.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.32a29333 [...]
+    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.19b95a1e.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/31.a92227f6.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.2d0a10d6 [...]
     <link rel="stylesheet" href="/assets/css/0.styles.276899be.css">
   </head>
   <body>
@@ -28,9 +28,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -58,9 +60,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -114,6 +118,6 @@ crates.</p></div> <footer class="page-edit"><!----> <div class="last-updated"><s
       </a>
       →
     </span></p></div> </main></div><div class="global-ui"><!----></div></div>
-    <script src="/assets/js/app.2529d1a9.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/31.a92227f6.js" defer></script>
+    <script src="/assets/js/app.19b95a1e.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/31.a92227f6.js" defer></script>
   </body>
 </html>
diff --git a/docs/threat-model/index.html b/docs/threat-model/index.html
index 9a91762..eab7880 100644
--- a/docs/threat-model/index.html
+++ b/docs/threat-model/index.html
@@ -16,7 +16,7 @@
     <meta name="twitter:url" content="https://teaclave.apache.org/docs/threat-model/">
     <meta name="twitter:card" content="summary_large_image">
     <meta name="twitter:site" content="@ApacheTeaclave">
-    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.2529d1a9.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/32.2b5e3431.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.32a29333 [...]
+    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.19b95a1e.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/32.2b5e3431.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.2d0a10d6 [...]
     <link rel="stylesheet" href="/assets/css/0.styles.276899be.css">
   </head>
   <body>
@@ -28,9 +28,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -58,9 +60,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -121,6 +125,6 @@ software hardening.</p></div> <footer class="page-edit"><!----> <div class="last
       </a>
       →
     </span></p></div> </main></div><div class="global-ui"><!----></div></div>
-    <script src="/assets/js/app.2529d1a9.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/32.2b5e3431.js" defer></script>
+    <script src="/assets/js/app.19b95a1e.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/32.2b5e3431.js" defer></script>
   </body>
 </html>
diff --git a/examples/index.html b/examples/index.html
index b827c34..c29062e 100644
--- a/examples/index.html
+++ b/examples/index.html
@@ -16,7 +16,7 @@
     <meta name="twitter:url" content="https://teaclave.apache.org/examples/">
     <meta name="twitter:card" content="summary_large_image">
     <meta name="twitter:site" content="@ApacheTeaclave">
-    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.2529d1a9.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/33.43b1de2c.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.32a29333 [...]
+    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.19b95a1e.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/33.43b1de2c.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.2d0a10d6 [...]
     <link rel="stylesheet" href="/assets/css/0.styles.276899be.css">
   </head>
   <body>
@@ -28,9 +28,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -58,9 +60,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -96,6 +100,6 @@ invoking a function in Teaclave.</p></div> <footer class="page-edit"><!----> <di
       </a>
       →
     </span></p></div> </main></div><div class="global-ui"><!----></div></div>
-    <script src="/assets/js/app.2529d1a9.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/33.43b1de2c.js" defer></script>
+    <script src="/assets/js/app.19b95a1e.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/33.43b1de2c.js" defer></script>
   </body>
 </html>
diff --git a/executor/index.html b/executor/index.html
index ccec9b1..9bcf10b 100644
--- a/executor/index.html
+++ b/executor/index.html
@@ -16,7 +16,7 @@
     <meta name="twitter:url" content="https://teaclave.apache.org/executor/">
     <meta name="twitter:card" content="summary_large_image">
     <meta name="twitter:site" content="@ApacheTeaclave">
-    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.2529d1a9.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/34.e582f3e4.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.32a29333 [...]
+    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.19b95a1e.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/34.e582f3e4.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.2d0a10d6 [...]
     <link rel="stylesheet" href="/assets/css/0.styles.276899be.css">
   </head>
   <body>
@@ -28,9 +28,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -58,9 +60,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -103,6 +107,6 @@ executor.</p></div> <footer class="page-edit"><!----> <div class="last-updated">
       </a>
       →
     </span></p></div> </main></div><div class="global-ui"><!----></div></div>
-    <script src="/assets/js/app.2529d1a9.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/34.e582f3e4.js" defer></script>
+    <script src="/assets/js/app.19b95a1e.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/34.e582f3e4.js" defer></script>
   </body>
 </html>
diff --git a/file-agent/index.html b/file-agent/index.html
index f63c00b..7f5d561 100644
--- a/file-agent/index.html
+++ b/file-agent/index.html
@@ -16,7 +16,7 @@
     <meta name="twitter:url" content="https://teaclave.apache.org/file-agent/">
     <meta name="twitter:card" content="summary_large_image">
     <meta name="twitter:site" content="@ApacheTeaclave">
-    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.2529d1a9.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/35.623637d9.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.32a29333 [...]
+    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.19b95a1e.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/35.623637d9.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.2d0a10d6 [...]
     <link rel="stylesheet" href="/assets/css/0.styles.276899be.css">
   </head>
   <body>
@@ -28,9 +28,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -58,9 +60,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -97,6 +101,6 @@ a remote file storage like S3.</p></div> <footer class="page-edit"><!----> <div
       </a>
       →
     </span></p></div> </main></div><div class="global-ui"><!----></div></div>
-    <script src="/assets/js/app.2529d1a9.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/35.623637d9.js" defer></script>
+    <script src="/assets/js/app.19b95a1e.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/35.623637d9.js" defer></script>
   </body>
 </html>
diff --git a/function/index.html b/function/index.html
index a63f80f..fcb2705 100644
--- a/function/index.html
+++ b/function/index.html
@@ -16,7 +16,7 @@
     <meta name="twitter:url" content="https://teaclave.apache.org/function/">
     <meta name="twitter:card" content="summary_large_image">
     <meta name="twitter:site" content="@ApacheTeaclave">
-    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.2529d1a9.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/36.b25281da.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.32a29333 [...]
+    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.19b95a1e.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/36.b25281da.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.2d0a10d6 [...]
     <link rel="stylesheet" href="/assets/css/0.styles.276899be.css">
   </head>
   <body>
@@ -28,9 +28,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -58,9 +60,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -97,6 +101,6 @@ of a specific built-in function.</p></div> <footer class="page-edit"><!----> <di
       </a>
       →
     </span></p></div> </main></div><div class="global-ui"><!----></div></div>
-    <script src="/assets/js/app.2529d1a9.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/36.b25281da.js" defer></script>
+    <script src="/assets/js/app.19b95a1e.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/36.b25281da.js" defer></script>
   </body>
 </html>
diff --git a/index.html b/index.html
index f1d1abc..2246b17 100644
--- a/index.html
+++ b/index.html
@@ -18,7 +18,7 @@
     <meta name="twitter:url" content="https://teaclave.apache.org/">
     <meta name="twitter:card" content="summary_large_image">
     <meta name="twitter:site" content="@ApacheTeaclave">
-    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.2529d1a9.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/14.a6de7586.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.32a29333 [...]
+    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.19b95a1e.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/14.a6de7586.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.2d0a10d6 [...]
     <link rel="stylesheet" href="/assets/css/0.styles.276899be.css">
   </head>
   <body>
@@ -30,9 +30,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -60,9 +62,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -119,6 +123,6 @@ purposes.</li></ul></div> <div class="footer">
     Apache Teaclave, Apache, the Apache feather, and the Apache Teaclave project logo are either
     trademarks or registered trademarks of the Apache Software Foundation.
   </div></main></div><div class="global-ui"><!----></div></div>
-    <script src="/assets/js/app.2529d1a9.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/14.a6de7586.js" defer></script>
+    <script src="/assets/js/app.19b95a1e.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/14.a6de7586.js" defer></script>
   </body>
 </html>
diff --git a/keys/index.html b/keys/index.html
index e66b8b7..956a02f 100644
--- a/keys/index.html
+++ b/keys/index.html
@@ -16,7 +16,7 @@
     <meta name="twitter:url" content="https://teaclave.apache.org/keys/">
     <meta name="twitter:card" content="summary_large_image">
     <meta name="twitter:site" content="@ApacheTeaclave">
-    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.2529d1a9.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/37.73adc0b1.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.32a29333 [...]
+    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.19b95a1e.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/37.73adc0b1.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.2d0a10d6 [...]
     <link rel="stylesheet" href="/assets/css/0.styles.276899be.css">
   </head>
   <body>
@@ -28,9 +28,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -58,9 +60,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -95,6 +99,6 @@ attestation</li></ul></div> <footer class="page-edit"><!----> <div class="last-u
       </a>
       →
     </span></p></div> </main></div><div class="global-ui"><!----></div></div>
-    <script src="/assets/js/app.2529d1a9.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/37.73adc0b1.js" defer></script>
+    <script src="/assets/js/app.19b95a1e.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/37.73adc0b1.js" defer></script>
   </body>
 </html>
diff --git a/rpc/index.html b/rpc/index.html
index 13cfb40..6541c9c 100644
--- a/rpc/index.html
+++ b/rpc/index.html
@@ -16,7 +16,7 @@
     <meta name="twitter:url" content="https://teaclave.apache.org/rpc/">
     <meta name="twitter:card" content="summary_large_image">
     <meta name="twitter:site" content="@ApacheTeaclave">
-    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.2529d1a9.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/38.65cdc673.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.32a29333 [...]
+    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.19b95a1e.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/38.65cdc673.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.2d0a10d6 [...]
     <link rel="stylesheet" href="/assets/css/0.styles.276899be.css">
   </head>
   <body>
@@ -28,9 +28,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -58,9 +60,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -107,6 +111,6 @@ requests (in big endian) and a json serialized request.</p></div> <footer class=
       </a>
       →
     </span></p></div> </main></div><div class="global-ui"><!----></div></div>
-    <script src="/assets/js/app.2529d1a9.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/38.65cdc673.js" defer></script>
+    <script src="/assets/js/app.19b95a1e.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/38.65cdc673.js" defer></script>
   </body>
 </html>
diff --git a/runtime/index.html b/runtime/index.html
index b1e0bcc..7a6b349 100644
--- a/runtime/index.html
+++ b/runtime/index.html
@@ -16,7 +16,7 @@
     <meta name="twitter:url" content="https://teaclave.apache.org/runtime/">
     <meta name="twitter:card" content="summary_large_image">
     <meta name="twitter:site" content="@ApacheTeaclave">
-    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.2529d1a9.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/39.70607589.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.32a29333 [...]
+    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.19b95a1e.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/39.70607589.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.2d0a10d6 [...]
     <link rel="stylesheet" href="/assets/css/0.styles.276899be.css">
   </head>
   <body>
@@ -28,9 +28,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -58,9 +60,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -96,6 +100,6 @@ our secure file system implementation (i.e., <em>protected file</em>). While
       </a>
       →
     </span></p></div> </main></div><div class="global-ui"><!----></div></div>
-    <script src="/assets/js/app.2529d1a9.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/39.70607589.js" defer></script>
+    <script src="/assets/js/app.19b95a1e.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/39.70607589.js" defer></script>
   </body>
 </html>
diff --git a/sdk/index.html b/sdk/index.html
index 65f30cf..d2c2ec6 100644
--- a/sdk/index.html
+++ b/sdk/index.html
@@ -16,7 +16,7 @@
     <meta name="twitter:url" content="https://teaclave.apache.org/sdk/">
     <meta name="twitter:card" content="summary_large_image">
     <meta name="twitter:site" content="@ApacheTeaclave">
-    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.2529d1a9.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/40.dd5708c5.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.32a29333 [...]
+    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.19b95a1e.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/40.dd5708c5.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.2d0a10d6 [...]
     <link rel="stylesheet" href="/assets/css/0.styles.276899be.css">
   </head>
   <body>
@@ -28,9 +28,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -58,9 +60,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -92,6 +96,6 @@ requests via RPC, etc. Please refer to the
       </a>
       →
     </span></p></div> </main></div><div class="global-ui"><!----></div></div>
-    <script src="/assets/js/app.2529d1a9.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/40.dd5708c5.js" defer></script>
+    <script src="/assets/js/app.19b95a1e.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/40.dd5708c5.js" defer></script>
   </body>
 </html>
diff --git a/services/index.html b/services/index.html
index 5ceeab5..7c9e513 100644
--- a/services/index.html
+++ b/services/index.html
@@ -16,7 +16,7 @@
     <meta name="twitter:url" content="https://teaclave.apache.org/services/">
     <meta name="twitter:card" content="summary_large_image">
     <meta name="twitter:site" content="@ApacheTeaclave">
-    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.2529d1a9.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/41.b71d9742.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.32a29333 [...]
+    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.19b95a1e.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/41.b71d9742.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.2d0a10d6 [...]
     <link rel="stylesheet" href="/assets/css/0.styles.276899be.css">
   </head>
   <body>
@@ -28,9 +28,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -58,9 +60,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -139,6 +143,6 @@ system through the attested authentication and frontend services.</p></div> <foo
       </a>
       →
     </span></p></div> </main></div><div class="global-ui"><!----></div></div>
-    <script src="/assets/js/app.2529d1a9.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/41.b71d9742.js" defer></script>
+    <script src="/assets/js/app.19b95a1e.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/41.b71d9742.js" defer></script>
   </body>
 </html>
diff --git a/teaclave/common/protected_fs_rs/index.html b/teaclave/common/protected_fs_rs/index.html
index 9edff32..6530f34 100644
--- a/teaclave/common/protected_fs_rs/index.html
+++ b/teaclave/common/protected_fs_rs/index.html
@@ -16,7 +16,7 @@
     <meta name="twitter:url" content="https://teaclave.apache.org/teaclave/common/protected_fs_rs/">
     <meta name="twitter:card" content="summary_large_image">
     <meta name="twitter:site" content="@ApacheTeaclave">
-    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.2529d1a9.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/21.560d5663.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.32a29333 [...]
+    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.19b95a1e.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/21.560d5663.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.2d0a10d6 [...]
     <link rel="stylesheet" href="/assets/css/0.styles.276899be.css">
   </head>
   <body>
@@ -28,9 +28,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -58,9 +60,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -86,6 +90,6 @@ from the Intel SGX Linux SDK.</p> <p>Beyond the original SGX-only implementation
 <em><strong>running in both SGX and Non-SGX environment</strong></em>. We ported the <a href="https://github.com/intel/linux-sgx/tree/master/sdk/protected_fs" target="_blank" rel="noopener noreferrer">original C
 implementations<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a> in  <code>protected_fs_c</code> [...]
 CMake. Please refer to <code>build.rs</code> for more information.</p></div> <footer class="page-edit"><!----> <div class="last-updated"><span class="prefix">Last Updated:</span> <span class="time">1/3/2020, 3:07:34 PM</span></div></footer> <!----> </main></div><div class="global-ui"><!----></div></div>
-    <script src="/assets/js/app.2529d1a9.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/21.560d5663.js" defer></script>
+    <script src="/assets/js/app.19b95a1e.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/21.560d5663.js" defer></script>
   </body>
 </html>
diff --git a/teaclave/common/rusty_leveldb_sgx/index.html b/teaclave/common/rusty_leveldb_sgx/index.html
index 2ab6400..cfc3cdf 100644
--- a/teaclave/common/rusty_leveldb_sgx/index.html
+++ b/teaclave/common/rusty_leveldb_sgx/index.html
@@ -16,7 +16,7 @@
     <meta name="twitter:url" content="https://teaclave.apache.org/teaclave/common/rusty_leveldb_sgx/">
     <meta name="twitter:card" content="summary_large_image">
     <meta name="twitter:site" content="@ApacheTeaclave">
-    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.2529d1a9.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/22.f23872f0.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.32a29333 [...]
+    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.19b95a1e.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/22.f23872f0.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.2d0a10d6 [...]
     <link rel="stylesheet" href="/assets/css/0.styles.276899be.css">
   </head>
   <body>
@@ -28,9 +28,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -58,9 +60,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -96,6 +100,6 @@ as slice).</li> <li>Correctness -- self-checking implementation, good test cover
 like the original implementation.</li> <li>Clarity; commented code, clear structure (hopefully doing a better job than
 the original implementation).</li> <li>Coming close-ish to the original implementation; clarifying the translation of
 typical C++ constructs to Rust.</li></ul></div> <footer class="page-edit"><!----> <div class="last-updated"><span class="prefix">Last Updated:</span> <span class="time">1/3/2020, 3:07:34 PM</span></div></footer> <!----> </main></div><div class="global-ui"><!----></div></div>
-    <script src="/assets/js/app.2529d1a9.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/22.f23872f0.js" defer></script>
+    <script src="/assets/js/app.19b95a1e.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/22.f23872f0.js" defer></script>
   </body>
 </html>
diff --git a/teaclave/index.html b/teaclave/index.html
index 30ee0ed..690002e 100644
--- a/teaclave/index.html
+++ b/teaclave/index.html
@@ -16,7 +16,7 @@
     <meta name="twitter:url" content="https://teaclave.apache.org/teaclave/">
     <meta name="twitter:card" content="summary_large_image">
     <meta name="twitter:site" content="@ApacheTeaclave">
-    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.2529d1a9.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/18.f0ff1c20.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.32a29333 [...]
+    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.19b95a1e.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/18.f0ff1c20.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.2d0a10d6 [...]
     <link rel="stylesheet" href="/assets/css/0.styles.276899be.css">
   </head>
   <body>
@@ -28,9 +28,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -58,9 +60,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -102,6 +106,6 @@ purposes.</li></ul> <h2 id="getting-started"><a href="#getting-started" class="h
 we aim to create a project that is maintained and owned by the community. All
 kinds of contributions are welcome. Read this <a href="/teaclave/CONTRIBUTING.html">document</a> to
 learn more about how to contribute. Thanks to our <a href="/teaclave/CONTRIBUTORS.html">contributors</a>.</p> <h2 id="community"><a href="#community" class="header-anchor">#</a> Community</h2> <ul><li>Join us on our <a href="https://lists.apache.org/list.html?dev@teaclave.apache.org" target="_blank" rel="noopener noreferrer">mailing list<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill= [...]
-    <script src="/assets/js/app.2529d1a9.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/18.f0ff1c20.js" defer></script>
+    <script src="/assets/js/app.19b95a1e.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/18.f0ff1c20.js" defer></script>
   </body>
 </html>
diff --git a/tests/index.html b/tests/index.html
index ba8cdb5..1f51db7 100644
--- a/tests/index.html
+++ b/tests/index.html
@@ -16,7 +16,7 @@
     <meta name="twitter:url" content="https://teaclave.apache.org/tests/">
     <meta name="twitter:card" content="summary_large_image">
     <meta name="twitter:site" content="@ApacheTeaclave">
-    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.2529d1a9.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/42.08507412.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.32a29333 [...]
+    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.19b95a1e.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/42.08507412.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.2d0a10d6 [...]
     <link rel="stylesheet" href="/assets/css/0.styles.276899be.css">
   </head>
   <body>
@@ -28,9 +28,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -58,9 +60,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -110,6 +114,6 @@ Common utilities for test drivers.</li></ul></div> <footer class="page-edit"><!-
       </a>
       →
     </span></p></div> </main></div><div class="global-ui"><!----></div></div>
-    <script src="/assets/js/app.2529d1a9.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/42.08507412.js" defer></script>
+    <script src="/assets/js/app.19b95a1e.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/42.08507412.js" defer></script>
   </body>
 </html>
diff --git a/third-party/index.html b/third-party/index.html
index 4aa043b..56e3f21 100644
--- a/third-party/index.html
+++ b/third-party/index.html
@@ -16,7 +16,7 @@
     <meta name="twitter:url" content="https://teaclave.apache.org/third-party/">
     <meta name="twitter:card" content="summary_large_image">
     <meta name="twitter:site" content="@ApacheTeaclave">
-    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.2529d1a9.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/43.b0b0e28b.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.32a29333 [...]
+    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.19b95a1e.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/43.b0b0e28b.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.2d0a10d6 [...]
     <link rel="stylesheet" href="/assets/css/0.styles.276899be.css">
   </head>
   <body>
@@ -28,9 +28,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -58,9 +60,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -97,6 +101,6 @@ SGX libraries.</li></ul></div> <footer class="page-edit"><!----> <div class="las
       </a>
       →
     </span></p></div> </main></div><div class="global-ui"><!----></div></div>
-    <script src="/assets/js/app.2529d1a9.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/43.b0b0e28b.js" defer></script>
+    <script src="/assets/js/app.19b95a1e.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/43.b0b0e28b.js" defer></script>
   </body>
 </html>
diff --git a/worker/index.html b/worker/index.html
index 9b6ea75..0d17d96 100644
--- a/worker/index.html
+++ b/worker/index.html
@@ -16,7 +16,7 @@
     <meta name="twitter:url" content="https://teaclave.apache.org/worker/">
     <meta name="twitter:card" content="summary_large_image">
     <meta name="twitter:site" content="@ApacheTeaclave">
-    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.2529d1a9.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/44.182a03f7.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.32a29333 [...]
+    <link rel="preload" href="/assets/css/0.styles.276899be.css" as="style"><link rel="preload" href="/assets/js/app.19b95a1e.js" as="script"><link rel="preload" href="/assets/js/5.01b3f575.js" as="script"><link rel="preload" href="/assets/js/1.0d0c1f71.js" as="script"><link rel="preload" href="/assets/js/44.182a03f7.js" as="script"><link rel="prefetch" href="/assets/js/10.ad33114f.js"><link rel="prefetch" href="/assets/js/11.76c09ff4.js"><link rel="prefetch" href="/assets/js/12.2d0a10d6 [...]
     <link rel="stylesheet" href="/assets/css/0.styles.276899be.css">
   </head>
   <body>
@@ -28,9 +28,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -58,9 +60,11 @@
   Contributors
 </a></div><div class="nav-item"><a href="/docs/my-first-function/" class="nav-link">
   Documentation
-</a></div><div class="nav-item"><a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
-  SGX SDK
-  <!----></a></div><div class="nav-item"><a href="/blog/" class="nav-link">
+</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="SDK" class="dropdown-title"><span class="title">SDK</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/client-sdk-python/" target="_self" rel="" class="nav-link external">
+  Teaclave Client SDK (Python)
+  <!----></a></li><li class="dropdown-item"><!----> <a href="https://teaclave.apache.org/docs/sgx-sdk/" target="_self" rel="" class="nav-link external">
+  Teaclave SGX SDK
+  <!----></a></li></ul></div></div><div class="nav-item"><a href="/blog/" class="nav-link">
   Blog
 </a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Repository" class="dropdown-title"><span class="title">Repository</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/apache/incubator-teaclave" target="_blank" rel="noopener noreferrer" class="nav-link external">
   Teaclave
@@ -105,6 +109,6 @@ to the docs of executor and runtime for more details.</p></div> <footer class="p
       <a href="/third-party/" class="prev">
         Third-Party Dependency Vendoring
       </a></span> <!----></p></div> </main></div><div class="global-ui"><!----></div></div>
-    <script src="/assets/js/app.2529d1a9.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/44.182a03f7.js" defer></script>
+    <script src="/assets/js/app.19b95a1e.js" defer></script><script src="/assets/js/5.01b3f575.js" defer></script><script src="/assets/js/1.0d0c1f71.js" defer></script><script src="/assets/js/44.182a03f7.js" defer></script>
   </body>
 </html>


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@teaclave.apache.org
For additional commands, e-mail: commits-help@teaclave.apache.org


Mime
View raw message