diff --git a/website/docs/services/persy.mdx b/website/docs/services/persy.mdx
new file mode 100644
index 000000000000..15ffd92e5700
--- /dev/null
+++ b/website/docs/services/persy.mdx
@@ -0,0 +1,69 @@
+---
+title: Persy
+---
+
+[Persy](https://persy.rs/) service support.
+
+import Docs from '../../../core/src/services/persy/docs.md'
+
+
+
+### Via Config
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+
+
+
+```rust
+use anyhow::Result;
+use opendal::Operator;
+use opendal::Scheme;
+use std::collections::HashMap;
+
+#[tokio::main]
+async fn main() -> Result<()> {
+ let mut config = HashMap::new();
+ config.insert("datafile".to_string(), "./test.persy".to_string());
+ config.insert("segment".to_string(), "data".to_string());
+ config.insert("index".to_string(), "index".to_string());
+
+ let op: Operator = Operator::via_map(Scheme::Persy, config)?;
+ Ok(())
+}
+```
+
+
+
+
+```javascript
+import { Operator } from "opendal";
+
+async function main() {
+ const config = {
+ datafile: "./test.persy",
+ segment: "data",
+ index: "index"
+ };
+ const op = new Operator("persy", config);
+}
+```
+
+
+
+
+```python
+import opendal
+
+config = {
+ "datafile": "./test.persy",
+ "segment": "data",
+ "index": "index"
+}
+
+op = opendal.Operator("persy", **config)
+```
+
+
+