Skip to content

Commit 7a61748

Browse files
bracesproulOpenSWE Bot
andauthored
Sync OpenSWE Documentation Files (#190)
This PR syncs documentation files from the OpenSWE repository. **Changes:** - Updated MDX files from `apps/docs/` - Target directory: `src/labs/swe/` - Updated images from `apps/docs/images/` - Target directory: `src/images/` - Source commit: f316685de3a4ad48a4d113662405b5868fae3aa1 - Synced at 2025-08-19 23:54:13 UTC **Auto-generated by:** OpenSWE Documentation Sync Workflow Co-authored-by: OpenSWE Bot <[email protected]>
1 parent f73ca42 commit 7a61748

File tree

4 files changed

+90
-46
lines changed

4 files changed

+90
-46
lines changed

src/labs/swe/faq.mdx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,15 @@ description: Frequently Asked Questions
1616
Yes. When using Anthropic models, all input tokens are cached on Anthropic's servers.
1717
</Accordion>
1818

19+
<Accordion title="Can I disable Open SWE from creating an issue when I submit a request?">
20+
Yes. There's two ways to disable Open SWE from creating an issue when you submit a request:
21+
22+
1. Toggle the 'eye' icon in the main chat area when submitting a request.
23+
2. In the configuration tab in settings, toggle the 'Should Create Issue' switch.
24+
25+
By default, it's set to `true`. By modifying this setting in the configuration tab, all runs will default to that setting. You may override this setting on a per-run basis by toggling the 'eye' icon in the main chat area.
26+
</Accordion>
27+
1928
<Accordion title="My run failed midway through. What now?">
2029
We're sorry you're experiencing this! Open SWE will automatically commit any changes it makes to a draft pull request. Please check the draft pull request and make any necessary changes.
2130

src/labs/swe/index.mdx

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,7 @@ The agent can be used through a web interface or triggered automatically via Git
2121
<Card title="Setup" icon="robot" href="/labs/swe/setup/intro">
2222
How to set up Open SWE for development
2323
</Card>
24-
<Card title="FAQ" icon="question" href="/labs/swe/faq">
25-
Frequently asked questions
26-
</Card>
27-
<Card title="Examples" icon="database" href="/labs/swe/usage/examples">
24+
<Card title="Examples" icon="database" href="/labs/swe/examples">
2825
Examples of tasks you can try out
2926
</Card>
3027
<Card title="Usage" icon="database" href="/labs/swe/usage/intro">

src/labs/swe/secrets.mdx

Lines changed: 78 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -3,73 +3,111 @@ title: "Secrets"
33
description: "Environment variables & secrets access in dev environments"
44
---
55

6-
Open-SWE securely manages your API keys and environment variables with AES-256-GCM encryption.
6+
Open-SWE implements a secure, encrypted way to share user environment variables with the agent and pass them to the development server.
77

8-
## How Your API Keys Are Protected
8+
## Environment Variables & API Keys
99

10-
Your API keys are encrypted both in transit and at rest:
10+
### How API Keys Are Protected
1111

12-
1. **Frontend**: Temporarily stored in browser localStorage
13-
2. **Transit**: Encrypted before sending to backend
14-
3. **Backend**: Stored encrypted in database
15-
4. **Runtime**: Decrypted only when needed
12+
Your API keys are protected with industry-standard AES-256-GCM encryption both in transit and at rest.
13+
14+
**Storage Process:**
15+
1. **Frontend**: Temporarily stored in browser localStorage (plain text)
16+
2. **Transit**: Encrypted with AES-256-GCM before sending to backend
17+
3. **Backend**: Stored encrypted in LangGraph's database
18+
4. **Runtime**: Decrypted when necessary using server-side encryption keys
1619

1720
<Accordion title="Technical Encryption Details">
21+
**Encryption Details:**
1822
- **Algorithm**: [AES-256-GCM](https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38d.pdf) (authenticated encryption)
1923
- **Key Derivation**: SHA-256 hash of system `SECRETS_ENCRYPTION_KEY`
2024
- **IV Generation**: Random 12-byte initialization vector per encryption
2125
- **Authentication**: 16-byte authentication tag prevents tampering
2226
</Accordion>
2327

24-
## Types of Environment Variables
28+
### System vs User Environment Variables
2529

26-
**System Variables** (for self-hosting):
27-
- Examples: `DAYTONA_API_KEY`, `SECRETS_ENCRYPTION_KEY`, `GITHUB_APP_PRIVATE_KEY`
28-
- Access: Server-side only, never exposed to users or sandboxes
30+
Open-SWE handles two types of environment variables:
2931

30-
**User Variables** (your personal keys):
31-
- Examples: `ANTHROPIC_API_KEY`, `MY_DATABASE_URL`, `STRIPE_TEST_KEY`
32-
- Access: Controlled via settings page, encrypted storage
32+
**System Environment Variables:**
33+
- **Purpose**: Environment variables required to run Open-SWE. If you're self-hosting, you can set LLM, infrastructure, and authentication keys
34+
- **Examples**: `DAYTONA_API_KEY`, `SECRETS_ENCRYPTION_KEY`, `GITHUB_APP_PRIVATE_KEY`
35+
- **Access**: Server-side only via `process.env`
36+
- **Security**: Never exposed to users or sandboxes
3337

34-
## Sandbox Access Control
38+
**User-Defined Environment Variables:**
39+
- **Purpose**: Personal API keys and custom development variables
40+
- **Examples**: `ANTHROPIC_API_KEY`, `MY_DATABASE_URL`, `STRIPE_TEST_KEY`
41+
- **Access**: User-controlled via settings page in UI
42+
- **Security**: AES-256-GCM encrypted + explicit user consent required to pass them to the development server
3543

36-
**By default, your API keys are never exposed to sandbox environments.** They're only used for LLM initialization and system setup.
44+
### When API Keys Are Exposed to Sandbox Environments
3745

38-
To enable keys in development servers (for testing LangGraph agents, Next.js apps, etc.):
46+
Your API keys are **never automatically exposed** to sandbox environments. Exposure requires explicit user consent.
3947

40-
1. Manually toggle "Include in Dev Server" for each key
41-
2. Key becomes available as environment variable in sandbox
42-
3. You control which keys are exposed
48+
You may wonder, why does the sandbox environment even need API keys? We've designed Open-SWE to be your junior dev. Part of development is testing code in real-time. **Open-SWE has the ability to spin up development servers that can run your LangGraph agents, Next.js apps, Flask servers, and more, all within the sandbox its running in.** If you think this option can be useful, please review what it means to pass your keys to the sandbox.
4349

4450
<Note>
45-
Use separate development API keys with limited permissions instead of production keys when enabling sandbox access.
51+
Consider using separate development API keys with limited permissions instead of your production keys when enabling sandbox access. This reduces the impact of potential exposure while maintaining functionality.
4652
</Note>
4753

48-
## Security & Isolation
54+
**Default Behavior (Secure):**
55+
- API keys are only used for LLM model initialization & setting up Daytona using your own key, if you passed it
56+
- Keys are NOT available as environment variables in sandboxes or accessible to LLMs
57+
- Each key has `allowedInDev: false` by default
58+
59+
**When You Enable "Include in Dev Server":**
60+
- You manually toggle the switch for each API key
61+
- Key becomes available as an environment variable in sandbox
62+
- You maintain control over which keys are exposed
63+
64+
## Sandbox Security & Isolation
65+
66+
### Container Isolation
67+
68+
Each user session runs in a completely isolated Daytona container with multiple security boundaries. These containers can modify the code in your repo on a new branch and don't exchange information across sessions.
69+
70+
<Accordion title="Isolation Details">
71+
**Container Isolation:**
72+
- Separate container per user session
73+
- No shared file systems between containers
74+
- Container-level resource limits and quotas
75+
76+
**Process Isolation:**
77+
- User environment variables vs system environment variables
78+
- Sandboxed processes cannot access host system or code
4979

50-
Each session runs in an isolated Daytona container that:
51-
- Cannot access other user sessions
52-
- Automatically deletes after 15 minutes of inactivity
53-
- Has no persistent storage across sessions
80+
**Temporal Isolation:**
81+
- Automatic deletion after 15 minutes of inactivity
82+
- No persistent storage across sessions
83+
- Fresh environment for each new session
5484

55-
<Accordion title="Detailed Isolation Features">
56-
- **Container**: Separate container per user session
57-
- **File System**: No shared file systems between containers
58-
- **Process**: Sandboxed processes cannot access host system
59-
- **Network**: Containers cannot communicate with each other
60-
- **Temporal**: Fresh environment for each session
85+
**Network Isolation:**
86+
- Containers cannot communicate with each other
6187
</Accordion>
6288

89+
## Data Handling & Access Control
90+
6391
<Warning>
64-
When enabling "Include in Dev Server", the AI agent may inadvertently expose environment variables in generated code or logs. Only enable when necessary.
92+
When enabling "Include in Dev Server" for API keys, you're expanding the attack surface of your credentials. AI agent may inadvertently expose environment variables in generated code or logs. Only use this feature when necessary for development server monitoring.
6593
</Warning>
6694

67-
## Best Practices
95+
### Development Environment Exposure Risks
96+
97+
You should only use this feature if you find it useful to monitor development servers. We recommend not using your main keys and having access control for keys that you pass to sandbox environments.
98+
99+
While the Open-SWE UI and agent exchange these using encryption, **LLM may leave environment variables exposed in the code.**
68100

69-
- Use minimum required permissions for each API key
101+
## Security Best Practices
102+
103+
Our team loves using Open-SWE internally and we recommend the following best practices:
104+
105+
- Use the minimum required permissions for each API key
70106
- Regularly rotate your API keys
71-
- Use separate development keys instead of production keys for sandbox access
72-
- Only enable "Include in Dev Server" when necessary
73-
- Never enable sandbox access for production database credentials
74-
- Review generated code for exposed environment variables before deploying
75-
- Monitor "Last Used" timestamps in settings
107+
- Only enable "Include in Dev Server" when necessary for specific tools
108+
- Monitor the "Last Used" timestamps in settings
109+
- Consider using separate development keys instead of production keys for sandbox environments
110+
- Never enable sandbox access for production database credentials or high-privilege API keys
111+
- Review generated code for accidentally exposed environment variables before deploying
112+
113+
---

src/labs/swe/usage/intro.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Open SWE provides two primary ways to interact with the coding agent, each desig
1414
Interactive chat interface with manual and auto modes for direct agent
1515
communication
1616
</Card>
17-
<Card title="GitHub Webhooks" icon="webhook" href="/labs/swe/usage/github#github-webhook-integration">
17+
<Card title="GitHub Webhooks" icon="webhook" href="/labs/swe/usage/webhook">
1818
Automated triggers through GitHub issue labels for seamless repository
1919
integration
2020
</Card>
@@ -42,7 +42,7 @@ You can explore Open SWE's capabilities using our hosted demo at [swe.langchain.
4242
<Tip>
4343
Start with the [Web Interface guide](/labs/swe/usage/ui) to understand Open
4444
SWE's core capabilities, then explore [GitHub
45-
Webhooks](/labs/swe/usage/github#github-webhook-integration) for automated integration into your
45+
Webhooks](/labs/swe/usage/webhook) for automated integration into your
4646
development workflow.
4747
</Tip>
4848

0 commit comments

Comments
 (0)