docs: update sandbox docs for Daytona backend, backends CLI, and praisonai-sandbox package#2121
Conversation
…sonai-sandbox package (fixes #2107) Co-authored-by: MervinPraison <MervinPraison@users.noreply.github.com>
|
@coderabbitai review |
|
/review |
|
@gemini review this PR |
Qodo reviews are paused for this user.Troubleshooting steps vary by plan Learn more → On a Teams plan? Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center? |
There was a problem hiding this comment.
Code Review
This pull request introduces documentation for the new standalone praisonai-sandbox package, which houses the sandbox backends and can be installed independently of the main framework. It also documents the new backends CLI command and updates the Daytona backend status to implemented. The review feedback highlights a potential ModuleNotFoundError in the standalone code example due to an incorrect import path, and suggests using canonical documentation paths for several internal links to avoid redirects.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
| ### Standalone sandbox execution | ||
|
|
||
| ```python | ||
| from praisonaiagents.sandbox import SandboxManager, SandboxConfig |
There was a problem hiding this comment.
Since this section demonstrates standalone sandbox execution using the praisonai-sandbox package without the rest of the framework, importing from praisonaiagents.sandbox will fail with a ModuleNotFoundError if the user has only installed praisonai-sandbox. It should import from praisonai_sandbox instead.
from praisonai_sandbox import SandboxManager, SandboxConfig
| The `--sandbox` flag enables secure command execution with validation and restrictions. The `praisonai sandbox` command manages sandbox containers. | ||
|
|
||
| <Info> | ||
| A dedicated `praisonai-sandbox` binary ships with the standalone [`praisonai-sandbox`](/features/praisonai-sandbox-package) package for when you want sandboxing without the rest of the framework. Both CLIs share the same commands. |
There was a problem hiding this comment.
Use the canonical path /docs/features/praisonai-sandbox-package instead of /features/praisonai-sandbox-package to maintain consistency with other links in the documentation and avoid relying on redirects.
A dedicated `praisonai-sandbox` binary ships with the standalone [`praisonai-sandbox`](/docs/features/praisonai-sandbox-package) package for when you want sandboxing without the rest of the framework. Both CLIs share the same commands.
| ``` | ||
|
|
||
| <Tip> | ||
| Unavailable backends need their optional extra installed (for example `pip install "praisonai[daytona]"`). Selecting an unavailable backend with `--type X` exits with code 2 and prints an install hint — see [Installing Optional Backends](/features/sandbox-backends#installing-optional-backends). |
There was a problem hiding this comment.
Use the canonical path /docs/features/sandbox-backends instead of /features/sandbox-backends to maintain consistency with other links in the documentation and avoid relying on redirects.
Unavailable backends need their optional extra installed (for example `pip install "praisonai[daytona]"`). Selecting an unavailable backend with `--type X` exits with code 2 and prints an install hint — see [Installing Optional Backends](/docs/features/sandbox-backends#installing-optional-backends).
| ``` | ||
|
|
||
| <Info> | ||
| **Package layout.** Sandbox backends live in the standalone **`praisonai-sandbox`** package. `pip install praisonai` pulls it in transitively; you can also install it alone with `pip install praisonai-sandbox` when you don't need the rest of the framework. All `praisonai.sandbox.*` imports keep working via a compatibility shim, so existing agent code does not need to change. See [The praisonai-sandbox Package](/features/praisonai-sandbox-package) for details. |
There was a problem hiding this comment.
Use the canonical path /docs/features/praisonai-sandbox-package instead of /features/praisonai-sandbox-package to maintain consistency with other links in the documentation and avoid relying on redirects.
**Package layout.** Sandbox backends live in the standalone **`praisonai-sandbox`** package. `pip install praisonai` pulls it in transitively; you can also install it alone with `pip install praisonai-sandbox` when you don't need the rest of the framework. All `praisonai.sandbox.*` imports keep working via a compatibility shim, so existing agent code does not need to change. See [The praisonai-sandbox Package](/docs/features/praisonai-sandbox-package) for details.
|
Merge gate scan — eligible for assessment. Claude merge gate will assess and may auto-merge if |
|
Merge gate scan — eligible for assessment. Claude merge gate will assess and may auto-merge if |
|
MERGE_GATE_VERDICT: APPROVE Docs-only PR, 4 files / 239 lines — within docs-primary limits. New page correctly placed in |
|
Merged by Claude PR merge gate ( |
|
Merge gate scan — not eligible for auto-merge.
Actions: wait for CI and the Claude review chain, or add label |
Fixes #2107
Summary
Updates sandbox documentation to reflect the merged PraisonAI PRs #3132 (real Daytona backend +
sandbox backendsCLI) and #3129 (standalonepraisonai-sandboxpackage).Changes
daytonarow "Not implemented" copy with "Daytona cloud sandboxes (via daytona-sdk)"; added a "Using the Daytona backend" subsection with an agent-centric example andDAYTONA_API_KEYcallout; added a "Package layout" Info note about the standalone package and thepraisonai.sandbox.*compatibility shim; added a Related card.backendsto the commands table and a dedicated "Backends" section with sample output and install-hint callout; added a note about the standalonepraisonai-sandboxCLI.SDK ground truth
All snippets verified against synced source and PR #3132 / #3129 diffs. Note: there is no
SandboxConfig.daytona()factory in the SDK — Daytona is selected viaSandboxConfig(sandbox_type="daytona")or--type daytona, so docs use those real paths instead of the factory suggested in the issue.Generated with Claude Code