diff --git a/website/docs/services/atomicserver.mdx b/website/docs/services/atomicserver.mdx
new file mode 100644
index 000000000000..f2b65d503f68
--- /dev/null
+++ b/website/docs/services/atomicserver.mdx
@@ -0,0 +1,69 @@
+---
+title: AtomicServer
+---
+
+[Atomic-Server](https://docs.atomicdata.dev/) services support.
+
+import Docs from '../../../core/src/services/atomicserver/docs.md'
+
+
+
+### Via Config
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+
+
+
+```rust
+use anyhow::Result;
+use opendal::services::Sqlite;
+use opendal::Operator;
+
+#[tokio::main]
+async fn main() -> Result<()> {
+
+ let mut map = HashMap::new();
+ map.insert("endpoint".to_string(), "http://localhost:9883".to_string());
+ map.insert("private_key".to_string(), "your_private_key".to_string());
+ map.insert("public_key".to_string(), "your_public_key".to_string());
+ map.insert("parent_resource_id".to_string(), "your_resource_id".to_string());
+
+ let op: Operator = Operator::via_map(Scheme::Atomicserver, map)?;
+ Ok(())
+}
+```
+
+
+
+
+```javascript
+import { Operator } from require('opendal');
+
+async function main() {
+ const op = new Operator("atomicserver", {
+ endpoint: 'http://localhost:9883',
+ private_key: 'your_private_key',
+ public_key: 'your_public_key',
+ parent_resource_id: 'your_resource_id',
+ });
+}
+```
+
+
+
+
+```python
+import opendal
+
+op = opendal.Operator("atomicserver", {
+ "connection_string": "http://localhost:9883",
+ "private_key": "your_private_key",
+ "public_key": "your_public_key",
+ "parent_resource_id": "your_resource_id",
+})
+```
+
+
+
\ No newline at end of file