` | سرد الملفات والمجلدات | FileNode[] |
+| `GET` | `/file/content?path=` | قراءة ملف | FileContent |
+| `GET` | `/file/status` | الحصول على حالة الملفات المتعقّبة | File[] |
+
+#### معلمات الاستعلام لـ `/find/file`
+
+- `query` (مطلوب) — سلسلة البحث (مطابقة ضبابية)
+- `type` (اختياري) — حصر النتائج في `"file"` أو `"directory"`
+- `directory` (اختياري) — تجاوز جذر المشروع لأجل البحث
+- `limit` (اختياري) — الحد الأقصى للنتائج (1–200)
+- `dirs` (اختياري) — خيار قديم (إرجاع `"false"` يعيد الملفات فقط)
+
+---
+
+### الأدوات (تجريبية)
+
+| الطريقة | المسار | الوصف | الاستجابة |
+| ------- | ------------------------------------------- | --------------------------------- | -------------------------------------------- |
+| `GET` | `/experimental/tool/ids` | سرد جميع معرّفات الأدوات | ToolIDs |
+| `GET` | `/experimental/tool?provider=
&model=` | سرد الأدوات مع مخططات JSON لنموذج | ToolList |
+
+---
+
+### LSP والمنسّقات و MCP
+
+| الطريقة | المسار | الوصف | الاستجابة |
+| ------- | ------------ | ------------------------- | -------------------------------------------------------- |
+| `GET` | `/lsp` | الحصول على حالة خادم LSP | LSPStatus[] |
+| `GET` | `/formatter` | الحصول على حالة المنسّقات | FormatterStatus[] |
+| `GET` | `/mcp` | الحصول على حالة خادم MCP | `{ [name: string]: `MCPStatus` }` |
+| `POST` | `/mcp` | إضافة خادم MCP ديناميكيا | المتن: `{ name, config }`، يعيد كائن حالة MCP |
+
+---
+
+### الوكلاء
+
+| الطريقة | المسار | الوصف | الاستجابة |
+| ------- | -------- | ------------------------- | ------------------------------------------- |
+| `GET` | `/agent` | سرد جميع الوكلاء المتاحين | Agent[] |
+
+---
+
+### التسجيل
+
+| الطريقة | المسار | الوصف | الاستجابة |
+| ------- | ------ | ------------------------------------------------------------- | --------- |
+| `POST` | `/log` | كتابة إدخال سجل. المتن: `{ service, level, message, extra? }` | `boolean` |
+
+---
+
+### TUI
+
+| الطريقة | المسار | الوصف | الاستجابة |
+| ------- | ----------------------- | ------------------------------------------ | ------------- |
+| `POST` | `/tui/append-prompt` | إلحاق نص بالموجّه | `boolean` |
+| `POST` | `/tui/open-help` | فتح مربع حوار المساعدة | `boolean` |
+| `POST` | `/tui/open-sessions` | فتح محدد الجلسات | `boolean` |
+| `POST` | `/tui/open-themes` | فتح محدد السمات | `boolean` |
+| `POST` | `/tui/open-models` | فتح محدد النماذج | `boolean` |
+| `POST` | `/tui/submit-prompt` | إرسال الموجّه الحالي | `boolean` |
+| `POST` | `/tui/clear-prompt` | مسح الموجّه | `boolean` |
+| `POST` | `/tui/execute-command` | تنفيذ أمر (`{ command }`) | `boolean` |
+| `POST` | `/tui/show-toast` | عرض toast (`{ title?, message, variant }`) | `boolean` |
+| `GET` | `/tui/control/next` | الانتظار لطلب التحكم التالي | كائن طلب تحكم |
+| `POST` | `/tui/control/response` | الاستجابة لطلب تحكم (`{ body }`) | `boolean` |
+
+---
+
+### المصادقة
+
+| الطريقة | المسار | الوصف | الاستجابة |
+| ------- | ----------- | ------------------------------------------------------------- | --------- |
+| `PUT` | `/auth/:id` | تعيين بيانات اعتماد المصادقة. يجب أن يطابق المتن مخطط المزوّد | `boolean` |
+
+---
+
+### الأحداث
+
+| الطريقة | المسار | الوصف | الاستجابة |
+| ------- | -------- | -------------------------------------------------------------------------------- | -------------------------- |
+| `GET` | `/event` | تدفق أحداث مرسلة من الخادم (SSE). أول حدث هو `server.connected` ثم أحداث الحافلة | تدفق أحداث مرسلة من الخادم |
+
+---
+
+### التوثيق
+
+| الطريقة | المسار | الوصف | الاستجابة |
+| ------- | ------ | ------------------ | ------------------------------ |
+| `GET` | `/doc` | مواصفة OpenAPI 3.1 | صفحة HTML تتضمن مواصفة OpenAPI |
diff --git a/packages/web/src/content/docs/ar/share.mdx b/packages/web/src/content/docs/ar/share.mdx
new file mode 100644
index 000000000..535d44dad
--- /dev/null
+++ b/packages/web/src/content/docs/ar/share.mdx
@@ -0,0 +1,127 @@
+---
+title: المشاركة
+description: شارك محادثات OpenCode الخاصة بك.
+---
+
+تتيح لك ميزة المشاركة في OpenCode إنشاء روابط عامة لمحادثات OpenCode الخاصة بك، بحيث يمكنك التعاون مع زملائك أو الحصول على المساعدة من الآخرين.
+
+:::note
+المحادثات المشتركة متاحة للعامة لأي شخص لديه الرابط.
+:::
+
+---
+
+## كيف تعمل
+
+عند مشاركة محادثة، يقوم OpenCode بما يلي:
+
+1. ينشئ عنوان URL عاما فريدا لجلستك
+2. يزامن سجل محادثتك مع خوادمنا
+3. يجعل المحادثة متاحة عبر رابط قابل للمشاركة — `opncd.ai/s/`
+
+---
+
+## المشاركة
+
+يدعم OpenCode ثلاثة أوضاع للمشاركة تتحكم في كيفية مشاركة المحادثات:
+
+---
+
+### يدوي (افتراضي)
+
+افتراضيا، يستخدم OpenCode وضع المشاركة اليدوي. لا تتم مشاركة الجلسات تلقائيا، لكن يمكنك مشاركتها يدويا باستخدام الأمر `/share`:
+
+```
+/share
+```
+
+سيُنشئ هذا عنوان URL فريدا وسيُنسخ إلى الحافظة.
+
+لضبط الوضع اليدوي صراحة في [ملف الإعدادات](/docs/config):
+
+```json title="opencode.json"
+{
+ "$schema": "https://opncd.ai/config.json",
+ "share": "manual"
+}
+```
+
+---
+
+### المشاركة التلقائية
+
+يمكنك تفعيل المشاركة التلقائية لجميع المحادثات الجديدة عبر ضبط خيار `share` إلى `"auto"` في [ملف الإعدادات](/docs/config):
+
+```json title="opencode.json"
+{
+ "$schema": "https://opncd.ai/config.json",
+ "share": "auto"
+}
+```
+
+عند تفعيل المشاركة التلقائية، ستتم مشاركة كل محادثة جديدة تلقائيا وسيتم إنشاء رابط لها.
+
+---
+
+### معطلة
+
+يمكنك تعطيل المشاركة بالكامل عبر ضبط خيار `share` إلى `"disabled"` في [ملف الإعدادات](/docs/config):
+
+```json title="opencode.json"
+{
+ "$schema": "https://opncd.ai/config.json",
+ "share": "disabled"
+}
+```
+
+لفرض ذلك على مستوى فريقك لمشروع معين، أضفه إلى ملف `opencode.json` في مشروعك ثم قم بإدراجه في Git.
+
+---
+
+## إلغاء المشاركة
+
+لإيقاف مشاركة محادثة وإزالتها من الوصول العام:
+
+```
+/unshare
+```
+
+سيؤدي ذلك إلى إزالة رابط المشاركة وحذف البيانات المتعلقة بالمحادثة.
+
+---
+
+## الخصوصية
+
+هناك بعض الأمور التي ينبغي وضعها في الاعتبار عند مشاركة محادثة.
+
+---
+
+### الاحتفاظ بالبيانات
+
+تظل المحادثات المشتركة متاحة حتى تقوم بإلغاء مشاركتها صراحة. يشمل ذلك:
+
+- سجل المحادثة كاملا
+- جميع الرسائل والردود
+- بيانات تعريف الجلسة
+
+---
+
+### توصيات
+
+- شارك فقط المحادثات التي لا تتضمن معلومات حساسة.
+- راجع محتوى المحادثة قبل مشاركتها.
+- ألغِ مشاركة المحادثات عند اكتمال التعاون.
+- تجنب مشاركة المحادثات التي تتضمن شيفرة مملوكة أو بيانات سرية.
+- للمشاريع الحساسة، عطّل المشاركة بالكامل.
+
+---
+
+## للمؤسسات
+
+في عمليات النشر الخاصة بالمؤسسات، يمكن أن تكون ميزة المشاركة:
+
+- **معطلة** بالكامل للامتثال الأمني
+- **مقيدة** على المستخدمين الموثقين عبر SSO فقط
+- **مستضافة ذاتيا** على بنيتك التحتية الخاصة
+
+[تعرّف على المزيد](/docs/enterprise) حول استخدام OpenCode في مؤسستك.
diff --git a/packages/web/src/content/docs/ar/skills.mdx b/packages/web/src/content/docs/ar/skills.mdx
new file mode 100644
index 000000000..b658e7d94
--- /dev/null
+++ b/packages/web/src/content/docs/ar/skills.mdx
@@ -0,0 +1,222 @@
+---
+title: "مهارات الوكيل"
+description: "عرّف سلوكاً قابلاً لإعادة الاستخدام عبر تعريفات SKILL.md"
+---
+
+تتيح مهارات الوكيل لـ OpenCode اكتشاف تعليمات قابلة لإعادة الاستخدام من مستودعك أو من دليل المنزل.
+تُحمَّل المهارات عند الطلب عبر أداة `skill` المدمجة — يرى الوكلاء المهارات المتاحة ويمكنهم تحميل المحتوى الكامل عند الحاجة.
+
+---
+
+## وضع الملفات
+
+أنشئ مجلداً واحداً لكل اسم مهارة وضع بداخله ملف `SKILL.md`.
+يبحث OpenCode في هذه المواقع:
+
+- إعدادات المشروع: `.opencode/skills//SKILL.md`
+- إعدادات عامة: `~/.config/opencode/skills//SKILL.md`
+- مشروع متوافق مع Claude: `.claude/skills//SKILL.md`
+- عام متوافق مع Claude: `~/.claude/skills//SKILL.md`
+- مشروع متوافق مع الوكلاء: `.agents/skills//SKILL.md`
+- عام متوافق مع الوكلاء: `~/.agents/skills//SKILL.md`
+
+---
+
+## فهم الاكتشاف
+
+بالنسبة لمسارات المشروع المحلية، يتدرج OpenCode صعوداً من دليل العمل الحالي حتى يصل إلى `git worktree`.
+ويحمّل أي ملفات مطابقة لـ `skills/*/SKILL.md` داخل `.opencode/` وأي ملفات مطابقة لـ `.claude/skills/*/SKILL.md` أو `.agents/skills/*/SKILL.md` على طول الطريق.
+
+كما تُحمَّل التعريفات العامة أيضاً من `~/.config/opencode/skills/*/SKILL.md` و `~/.claude/skills/*/SKILL.md` و `~/.agents/skills/*/SKILL.md`.
+
+---
+
+## كتابة بيانات `frontmatter`
+
+يجب أن يبدأ كل ملف `SKILL.md` بـ `frontmatter` بتنسيق YAML.
+لا يتم التعرف إلا على الحقول التالية:
+
+- `name` (مطلوب)
+- `description` (مطلوب)
+- `license` (اختياري)
+- `compatibility` (اختياري)
+- `metadata` (اختياري، خريطة من سلسلة إلى سلسلة)
+
+يتم تجاهل أي حقول `frontmatter` غير معروفة.
+
+---
+
+## التحقق من الأسماء
+
+يجب أن يكون `name`:
+
+- بطول 1–64 حرفاً
+- أحرفاً وأرقاماً بحروف صغيرة مع فواصل شرطة مفردة
+- لا يبدأ ولا ينتهي بـ `-`
+- لا يحتوي على `--` متتالية
+- يطابق اسم الدليل الذي يحتوي على `SKILL.md`
+
+التعبير النمطي المكافئ:
+
+```text
+^[a-z0-9]+(-[a-z0-9]+)*$
+```
+
+---
+
+## اتباع قواعد الطول
+
+يجب أن يكون `description` بطول 1-1024 حرفاً.
+اجعله محدداً بما يكفي كي يختار الوكيل بشكل صحيح.
+
+---
+
+## استخدم مثالاً
+
+أنشئ `.opencode/skills/git-release/SKILL.md` بهذا الشكل:
+
+```markdown
+---
+name: git-release
+description: Create consistent releases and changelogs
+license: MIT
+compatibility: opencode
+metadata:
+ audience: maintainers
+ workflow: github
+---
+
+## What I do
+
+- Draft release notes from merged PRs
+- Propose a version bump
+- Provide a copy-pasteable `gh release create` command
+
+## When to use me
+
+Use this when you are preparing a tagged release.
+Ask clarifying questions if the target versioning scheme is unclear.
+```
+
+---
+
+## التعرّف على وصف الأداة
+
+يعرض OpenCode المهارات المتاحة في وصف أداة `skill`.
+يتضمن كل إدخال اسم المهارة ووصفها:
+
+```xml
+
+
+ git-release
+ Create consistent releases and changelogs
+
+
+```
+
+يقوم الوكيل بتحميل مهارة عبر استدعاء الأداة:
+
+```
+skill({ name: "git-release" })
+```
+
+---
+
+## تهيئة الصلاحيات
+
+تحكم في المهارات التي يمكن للوكلاء الوصول إليها باستخدام صلاحيات مبنية على أنماط داخل `opencode.json`:
+
+```json
+{
+ "permission": {
+ "skill": {
+ "*": "allow",
+ "pr-review": "allow",
+ "internal-*": "deny",
+ "experimental-*": "ask"
+ }
+ }
+}
+```
+
+| الصلاحية | السلوك |
+| -------- | -------------------------------------- |
+| `allow` | تُحمَّل المهارة فوراً |
+| `deny` | تُخفى المهارة عن الوكيل ويُرفض الوصول |
+| `ask` | يُطلب من المستخدم الموافقة قبل التحميل |
+
+تدعم الأنماط أحرف البدل: يطابق `internal-*` كلاً من `internal-docs` و `internal-tools` وغير ذلك.
+
+---
+
+## تجاوز الإعدادات لكل وكيل
+
+امنح وكلاء محددين صلاحيات مختلفة عن الإعدادات الافتراضية العامة.
+
+**للوكلاء المخصصين** (في `frontmatter` الخاص بالوكيل):
+
+```yaml
+---
+permission:
+ skill:
+ "documents-*": "allow"
+---
+```
+
+**للوكلاء المدمجين** (في `opencode.json`):
+
+```json
+{
+ "agent": {
+ "plan": {
+ "permission": {
+ "skill": {
+ "internal-*": "allow"
+ }
+ }
+ }
+ }
+}
+```
+
+---
+
+## تعطيل أداة skill
+
+عطّل المهارات بالكامل للوكلاء الذين لا ينبغي أن يستخدموها:
+
+**للوكلاء المخصصين**:
+
+```yaml
+---
+tools:
+ skill: false
+---
+```
+
+**للوكلاء المدمجين**:
+
+```json
+{
+ "agent": {
+ "plan": {
+ "tools": {
+ "skill": false
+ }
+ }
+ }
+}
+```
+
+عند تعطيلها، يتم حذف قسم `` بالكامل.
+
+---
+
+## استكشاف أخطاء التحميل
+
+إذا لم تظهر مهارة:
+
+1. تحقّق من أن `SKILL.md` مكتوب بأحرف كبيرة بالكامل
+2. تحقّق من أن `frontmatter` تتضمن `name` و `description`
+3. تأكد من أن أسماء المهارات فريدة عبر جميع المواقع
+4. تحقّق من الصلاحيات — المهارات ذات `deny` تكون مخفية عن الوكلاء
diff --git a/packages/web/src/content/docs/ar/themes.mdx b/packages/web/src/content/docs/ar/themes.mdx
new file mode 100644
index 000000000..ffd4126ce
--- /dev/null
+++ b/packages/web/src/content/docs/ar/themes.mdx
@@ -0,0 +1,369 @@
+---
+title: السمات
+description: اختر سمة مدمجة أو عرّف سمة خاصة بك.
+---
+
+مع OpenCode يمكنك الاختيار من بين عدة سمات مدمجة، أو استخدام سمة تتكيّف مع سمة طرفيتك، أو تعريف سمة مخصصة خاصة بك.
+
+افتراضيًا، يستخدم OpenCode سمتنا `opencode`.
+
+---
+
+## متطلبات الطرفية
+
+لكي تُعرض السمات بشكل صحيح مع لوحة ألوانها الكاملة، يجب أن تدعم طرفيتك **truecolor** (ألوان 24-بت). تدعم معظم الطرفيات الحديثة ذلك افتراضيًا، لكن قد تحتاج إلى تفعيله:
+
+- **التحقق من الدعم**: شغّل `echo $COLORTERM` - يجب أن يطبع `truecolor` أو `24bit`
+- **تفعيل truecolor**: اضبط متغير البيئة `COLORTERM=truecolor` في ملف إعدادات الصدفة
+- **توافق الطرفية**: تأكد من أن محاكي الطرفية يدعم ألوان 24-بت (معظم الطرفيات الحديثة مثل iTerm2 وAlacritty وKitty وWindows Terminal والإصدارات الحديثة من GNOME Terminal تدعم ذلك)
+
+بدون دعم truecolor، قد تظهر السمات بدقة ألوان أقل أو تعود إلى أقرب تقريب ضمن 256 لونًا.
+
+---
+
+## السمات المدمجة
+
+يأتي OpenCode مع عدة سمات مدمجة.
+
+| الاسم | الوصف |
+| ---------------------- | --------------------------------------------------------------------------- |
+| `system` | يتكيّف مع لون خلفية طرفيتك |
+| `tokyonight` | مبني على سمة [Tokyonight](https://github.com/folke/tokyonight.nvim) |
+| `everforest` | مبني على سمة [Everforest](https://github.com/sainnhe/everforest) |
+| `ayu` | مبني على السمة الداكنة [Ayu](https://github.com/ayu-theme) |
+| `catppuccin` | مبني على سمة [Catppuccin](https://github.com/catppuccin) |
+| `catppuccin-macchiato` | مبني على سمة [Catppuccin](https://github.com/catppuccin) |
+| `gruvbox` | مبني على سمة [Gruvbox](https://github.com/morhetz/gruvbox) |
+| `kanagawa` | مبني على سمة [Kanagawa](https://github.com/rebelot/kanagawa.nvim) |
+| `nord` | مبني على سمة [Nord](https://github.com/nordtheme/nord) |
+| `matrix` | سمة خضراء على أسود بأسلوب الهاكر |
+| `one-dark` | مبني على السمة الداكنة [Atom One](https://github.com/Th3Whit3Wolf/one-nvim) |
+
+وغير ذلك؛ نضيف سمات جديدة باستمرار.
+
+---
+
+## سمة النظام
+
+صُممت سمة `system` لتتكيّف تلقائيًا مع مخطط ألوان طرفيتك. وعلى عكس السمات التقليدية التي تستخدم ألوانًا ثابتة، فإن سمة _system_:
+
+- **توليد تدرج رمادي**: تنشئ تدرجًا رماديًا مخصصًا اعتمادًا على لون خلفية طرفيتك، بما يضمن أفضل تباين.
+- **استخدام ألوان ANSI**: تستفيد من ألوان ANSI القياسية (0-15) لإبراز الصياغة وعناصر الواجهة، والتي تحترم لوحة ألوان طرفيتك.
+- **الحفاظ على افتراضيات الطرفية**: تستخدم `none` لألوان النص والخلفية للحفاظ على مظهر طرفيتك الأصلي.
+
+سمة النظام مناسبة للمستخدمين الذين:
+
+- يريدون أن يطابق OpenCode مظهر طرفيتهم
+- يستخدمون مخططات ألوان مخصصة للطرفية
+- يفضلون مظهرًا متسقًا عبر جميع تطبيقات الطرفية
+
+---
+
+## استخدام سمة
+
+يمكنك اختيار سمة بفتح منتقي السمات باستخدام الأمر `/theme`. أو يمكنك تحديدها في [الضبط](/docs/config).
+
+```json title="opencode.json" {3}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "theme": "tokyonight"
+}
+```
+
+---
+
+## سمات مخصصة
+
+يدعم OpenCode نظام سمات مرنًا قائمًا على JSON يتيح للمستخدمين إنشاء السمات وتخصيصها بسهولة.
+
+---
+
+### التسلسل الهرمي
+
+تُحمَّل السمات من عدة مجلدات بالترتيب التالي، حيث تتجاوز المجلدات اللاحقة المجلدات السابقة:
+
+1. **السمات المدمجة** - تكون مضمنة داخل الملف التنفيذي
+2. **مجلد ضبط المستخدم** - معرّف في `~/.config/opencode/themes/*.json` أو `$XDG_CONFIG_HOME/opencode/themes/*.json`
+3. **مجلد جذر المشروع** - معرّف في `/.opencode/themes/*.json`
+4. **مجلد العمل الحالي** - معرّف في `./.opencode/themes/*.json`
+
+إذا احتوت عدة مجلدات على سمة بالاسم نفسه، فستُستخدم السمة من المجلد ذي الأولوية الأعلى.
+
+---
+
+### إنشاء سمة
+
+لإنشاء سمة مخصصة، أنشئ ملف JSON في أحد مجلدات السمات.
+
+للسمات على مستوى المستخدم:
+
+```bash no-frame
+mkdir -p ~/.config/opencode/themes
+vim ~/.config/opencode/themes/my-theme.json
+```
+
+وللسمات الخاصة بالمشروع:
+
+```bash no-frame
+mkdir -p .opencode/themes
+vim .opencode/themes/my-theme.json
+```
+
+---
+
+### تنسيق JSON
+
+تستخدم السمات تنسيق JSON مرنًا مع دعم لـ:
+
+- **ألوان سداسية عشرية**: `"#ffffff"`
+- **ألوان ANSI**: `3` (0-255)
+- **مراجع الألوان**: `"primary"` أو تعريفات مخصصة
+- **متغيرات داكن/فاتح**: `{"dark": "#000", "light": "#fff"}`
+- **بدون لون**: `"none"` - يستخدم اللون الافتراضي للطرفية أو يكون شفافًا
+
+---
+
+### تعريفات الألوان
+
+قسم `defs` اختياري، ويتيح لك تعريف ألوان قابلة لإعادة الاستخدام يمكن الإشارة إليها داخل السمة.
+
+---
+
+### افتراضيات الطرفية
+
+يمكن استخدام القيمة الخاصة `"none"` لأي لون لوراثة اللون الافتراضي للطرفية. هذا مفيد خصوصًا لإنشاء سمات تمتزج بسلاسة مع مخطط ألوان طرفيتك:
+
+- `"text": "none"` - يستخدم لون المقدمة الافتراضي للطرفية
+- `"background": "none"` - يستخدم لون الخلفية الافتراضي للطرفية
+
+---
+
+### مثال
+
+إليك مثالًا على سمة مخصصة:
+
+```json title="my-theme.json"
+{
+ "$schema": "https://opencode.ai/theme.json",
+ "defs": {
+ "nord0": "#2E3440",
+ "nord1": "#3B4252",
+ "nord2": "#434C5E",
+ "nord3": "#4C566A",
+ "nord4": "#D8DEE9",
+ "nord5": "#E5E9F0",
+ "nord6": "#ECEFF4",
+ "nord7": "#8FBCBB",
+ "nord8": "#88C0D0",
+ "nord9": "#81A1C1",
+ "nord10": "#5E81AC",
+ "nord11": "#BF616A",
+ "nord12": "#D08770",
+ "nord13": "#EBCB8B",
+ "nord14": "#A3BE8C",
+ "nord15": "#B48EAD"
+ },
+ "theme": {
+ "primary": {
+ "dark": "nord8",
+ "light": "nord10"
+ },
+ "secondary": {
+ "dark": "nord9",
+ "light": "nord9"
+ },
+ "accent": {
+ "dark": "nord7",
+ "light": "nord7"
+ },
+ "error": {
+ "dark": "nord11",
+ "light": "nord11"
+ },
+ "warning": {
+ "dark": "nord12",
+ "light": "nord12"
+ },
+ "success": {
+ "dark": "nord14",
+ "light": "nord14"
+ },
+ "info": {
+ "dark": "nord8",
+ "light": "nord10"
+ },
+ "text": {
+ "dark": "nord4",
+ "light": "nord0"
+ },
+ "textMuted": {
+ "dark": "nord3",
+ "light": "nord1"
+ },
+ "background": {
+ "dark": "nord0",
+ "light": "nord6"
+ },
+ "backgroundPanel": {
+ "dark": "nord1",
+ "light": "nord5"
+ },
+ "backgroundElement": {
+ "dark": "nord1",
+ "light": "nord4"
+ },
+ "border": {
+ "dark": "nord2",
+ "light": "nord3"
+ },
+ "borderActive": {
+ "dark": "nord3",
+ "light": "nord2"
+ },
+ "borderSubtle": {
+ "dark": "nord2",
+ "light": "nord3"
+ },
+ "diffAdded": {
+ "dark": "nord14",
+ "light": "nord14"
+ },
+ "diffRemoved": {
+ "dark": "nord11",
+ "light": "nord11"
+ },
+ "diffContext": {
+ "dark": "nord3",
+ "light": "nord3"
+ },
+ "diffHunkHeader": {
+ "dark": "nord3",
+ "light": "nord3"
+ },
+ "diffHighlightAdded": {
+ "dark": "nord14",
+ "light": "nord14"
+ },
+ "diffHighlightRemoved": {
+ "dark": "nord11",
+ "light": "nord11"
+ },
+ "diffAddedBg": {
+ "dark": "#3B4252",
+ "light": "#E5E9F0"
+ },
+ "diffRemovedBg": {
+ "dark": "#3B4252",
+ "light": "#E5E9F0"
+ },
+ "diffContextBg": {
+ "dark": "nord1",
+ "light": "nord5"
+ },
+ "diffLineNumber": {
+ "dark": "nord2",
+ "light": "nord4"
+ },
+ "diffAddedLineNumberBg": {
+ "dark": "#3B4252",
+ "light": "#E5E9F0"
+ },
+ "diffRemovedLineNumberBg": {
+ "dark": "#3B4252",
+ "light": "#E5E9F0"
+ },
+ "markdownText": {
+ "dark": "nord4",
+ "light": "nord0"
+ },
+ "markdownHeading": {
+ "dark": "nord8",
+ "light": "nord10"
+ },
+ "markdownLink": {
+ "dark": "nord9",
+ "light": "nord9"
+ },
+ "markdownLinkText": {
+ "dark": "nord7",
+ "light": "nord7"
+ },
+ "markdownCode": {
+ "dark": "nord14",
+ "light": "nord14"
+ },
+ "markdownBlockQuote": {
+ "dark": "nord3",
+ "light": "nord3"
+ },
+ "markdownEmph": {
+ "dark": "nord12",
+ "light": "nord12"
+ },
+ "markdownStrong": {
+ "dark": "nord13",
+ "light": "nord13"
+ },
+ "markdownHorizontalRule": {
+ "dark": "nord3",
+ "light": "nord3"
+ },
+ "markdownListItem": {
+ "dark": "nord8",
+ "light": "nord10"
+ },
+ "markdownListEnumeration": {
+ "dark": "nord7",
+ "light": "nord7"
+ },
+ "markdownImage": {
+ "dark": "nord9",
+ "light": "nord9"
+ },
+ "markdownImageText": {
+ "dark": "nord7",
+ "light": "nord7"
+ },
+ "markdownCodeBlock": {
+ "dark": "nord4",
+ "light": "nord0"
+ },
+ "syntaxComment": {
+ "dark": "nord3",
+ "light": "nord3"
+ },
+ "syntaxKeyword": {
+ "dark": "nord9",
+ "light": "nord9"
+ },
+ "syntaxFunction": {
+ "dark": "nord8",
+ "light": "nord8"
+ },
+ "syntaxVariable": {
+ "dark": "nord7",
+ "light": "nord7"
+ },
+ "syntaxString": {
+ "dark": "nord14",
+ "light": "nord14"
+ },
+ "syntaxNumber": {
+ "dark": "nord15",
+ "light": "nord15"
+ },
+ "syntaxType": {
+ "dark": "nord7",
+ "light": "nord7"
+ },
+ "syntaxOperator": {
+ "dark": "nord9",
+ "light": "nord9"
+ },
+ "syntaxPunctuation": {
+ "dark": "nord4",
+ "light": "nord0"
+ }
+ }
+}
+```
diff --git a/packages/web/src/content/docs/ar/tools.mdx b/packages/web/src/content/docs/ar/tools.mdx
new file mode 100644
index 000000000..beab5bffb
--- /dev/null
+++ b/packages/web/src/content/docs/ar/tools.mdx
@@ -0,0 +1,379 @@
+---
+title: الأدوات
+description: إدارة الأدوات التي يمكن لـ LLM استخدامها.
+---
+
+تتيح الأدوات لـ LLM تنفيذ إجراءات داخل قاعدة الشفرة الخاصة بك. يأتي OpenCode مع مجموعة من الأدوات المدمجة، لكن يمكنك توسيعه عبر [أدوات مخصصة](/docs/custom-tools) أو [خوادم MCP](/docs/mcp-servers).
+
+افتراضيا، تكون جميع الأدوات **مفعلة** ولا تحتاج إلى إذن للتشغيل. يمكنك التحكم في سلوك الأدوات عبر [الأذونات](/docs/permissions).
+
+---
+
+## التهيئة
+
+استخدم الحقل `permission` للتحكم في سلوك الأدوات. يمكنك السماح أو الرفض أو طلب الموافقة لكل أداة.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "edit": "deny",
+ "bash": "ask",
+ "webfetch": "allow"
+ }
+}
+```
+
+يمكنك أيضا استخدام أحرف البدل للتحكم في عدة أدوات دفعة واحدة. على سبيل المثال، لطلب الموافقة على جميع الأدوات القادمة من خادم MCP:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "mymcp_*": "ask"
+ }
+}
+```
+
+[اعرف المزيد](/docs/permissions) حول تهيئة الأذونات.
+
+---
+
+## المدمجة
+
+فيما يلي جميع الأدوات المدمجة المتاحة في OpenCode.
+
+---
+
+### bash
+
+نفذ أوامر الصدفة (Shell) في بيئة مشروعك.
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "bash": "allow"
+ }
+}
+```
+
+تتيح هذه الأداة لـ LLM تشغيل أوامر الطرفية مثل `npm install` و`git status` أو أي أمر صدفة آخر.
+
+---
+
+### edit
+
+عدّل الملفات الموجودة باستخدام استبدال نصي مطابق تماما.
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "edit": "allow"
+ }
+}
+```
+
+تجري هذه الأداة تعديلات دقيقة على الملفات عبر استبدال مقاطع نصية متطابقة. وهي الطريقة الأساسية التي يعدّل بها LLM الشفرة.
+
+---
+
+### write
+
+أنشئ ملفات جديدة أو اكتب فوق الملفات الموجودة.
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "edit": "allow"
+ }
+}
+```
+
+استخدم هذا للسماح لـ LLM بإنشاء ملفات جديدة. سيكتب فوق الملفات الموجودة إذا كانت موجودة بالفعل.
+
+:::note
+تُدار أداة `write` عبر إذن `edit`، والذي يشمل جميع تعديلات الملفات (`edit` و`write` و`patch` و`multiedit`).
+:::
+
+---
+
+### read
+
+اقرأ محتويات الملفات من قاعدة الشفرة الخاصة بك.
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "read": "allow"
+ }
+}
+```
+
+تقرأ هذه الأداة الملفات وتعيد محتوياتها. وتدعم قراءة نطاقات محددة من الأسطر للملفات الكبيرة.
+
+---
+
+### grep
+
+ابحث في محتوى الملفات باستخدام التعابير النمطية (Regex).
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "grep": "allow"
+ }
+}
+```
+
+بحث سريع في المحتوى عبر قاعدة الشفرة الخاصة بك. يدعم صياغة Regex الكاملة وتصفية الملفات عبر أنماط المسارات.
+
+---
+
+### glob
+
+اعثر على الملفات عبر مطابقة الأنماط.
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "glob": "allow"
+ }
+}
+```
+
+ابحث عن الملفات باستخدام أنماط glob مثل `**/*.js` أو `src/**/*.ts`. يعيد مسارات الملفات المطابقة مرتبة حسب وقت التعديل.
+
+---
+
+### list
+
+اعرض قائمة بالملفات والمجلدات في مسار محدد.
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "list": "allow"
+ }
+}
+```
+
+تعرض هذه الأداة محتويات المجلد. وتقبل أنماط glob لتصفية النتائج.
+
+---
+
+### lsp (experimental)
+
+تفاعل مع خوادم LSP التي قمت بتهيئتها للحصول على ميزات ذكاء الشفرة مثل التعاريف والمراجع ومعلومات التحويم وتسلسل الاستدعاءات.
+
+:::note
+هذه الأداة متاحة فقط عند ضبط `OPENCODE_EXPERIMENTAL_LSP_TOOL=true` (أو `OPENCODE_EXPERIMENTAL=true`).
+:::
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "lsp": "allow"
+ }
+}
+```
+
+تتضمن العمليات المدعومة: `goToDefinition` و`findReferences` و`hover` و`documentSymbol` و`workspaceSymbol` و`goToImplementation` و`prepareCallHierarchy` و`incomingCalls` و`outgoingCalls`.
+
+لتهيئة خوادم LSP المتاحة لمشروعك، راجع [خوادم LSP](/docs/lsp).
+
+---
+
+### patch
+
+طبّق الرقع (Patches) على الملفات.
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "edit": "allow"
+ }
+}
+```
+
+تطبق هذه الأداة ملفات الرقع على قاعدة الشفرة الخاصة بك. وهي مفيدة لتطبيق الفروقات (Diffs) والرقع من مصادر متعددة.
+
+:::note
+تُدار أداة `patch` عبر إذن `edit`، والذي يشمل جميع تعديلات الملفات (`edit` و`write` و`patch` و`multiedit`).
+:::
+
+---
+
+### skill
+
+حمّل [مهارة](/docs/skills) (ملف `SKILL.md`) وأعد محتواها ضمن المحادثة.
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "skill": "allow"
+ }
+}
+```
+
+---
+
+### todowrite
+
+أدِر قوائم المهام أثناء جلسات البرمجة.
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "todowrite": "allow"
+ }
+}
+```
+
+تنشئ هذه الأداة قوائم المهام وتحدّثها لتتبع التقدم أثناء العمليات المعقدة. يستخدمها LLM لتنظيم المهام متعددة الخطوات.
+
+:::note
+هذه الأداة معطلة للوكلاء الفرعيين افتراضيا، لكن يمكنك تفعيلها يدويا. [اعرف المزيد](/docs/agents/#permissions)
+:::
+
+---
+
+### todoread
+
+اقرأ قوائم المهام الموجودة.
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "todoread": "allow"
+ }
+}
+```
+
+تقرأ هذه الأداة الحالة الحالية لقائمة المهام. يستخدمها LLM لتتبع المهام المعلقة أو المكتملة.
+
+:::note
+هذه الأداة معطلة للوكلاء الفرعيين افتراضيا، لكن يمكنك تفعيلها يدويا. [اعرف المزيد](/docs/agents/#permissions)
+:::
+
+---
+
+### webfetch
+
+اجلب محتوى الويب.
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "webfetch": "allow"
+ }
+}
+```
+
+تتيح هذه الأداة لـ LLM جلب صفحات الويب وقراءتها. وهي مفيدة للبحث عن التوثيق أو لاستكشاف موارد عبر الإنترنت.
+
+---
+
+### websearch
+
+ابحث في الويب عن معلومات.
+
+:::note
+هذه الأداة متاحة فقط عند استخدام مزود OpenCode أو عند ضبط متغير البيئة `OPENCODE_ENABLE_EXA` على أي قيمة منطقية صحيحة (مثل `true` أو `1`).
+
+للتفعيل عند تشغيل OpenCode:
+
+```bash
+OPENCODE_ENABLE_EXA=1 opencode
+```
+
+:::
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "websearch": "allow"
+ }
+}
+```
+
+تجري عمليات بحث على الويب باستخدام Exa AI للعثور على معلومات ذات صلة عبر الإنترنت. وهي مفيدة للبحث في المواضيع، والعثور على أحداث جارية، أو جمع معلومات تتجاوز حد بيانات التدريب.
+
+لا يلزم مفتاح API - إذ تتصل الأداة مباشرة بخدمة MCP المستضافة لدى Exa AI دون مصادقة.
+
+:::tip
+استخدم `websearch` عندما تحتاج إلى العثور على معلومات (Discovery)، واستخدم `webfetch` عندما تحتاج إلى جلب محتوى من رابط محدد (Retrieval).
+:::
+
+---
+
+### question
+
+اطرح على المستخدم أسئلة أثناء التنفيذ.
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "question": "allow"
+ }
+}
+```
+
+تتيح هذه الأداة لـ LLM طرح أسئلة على المستخدم أثناء المهمة. وهي مفيدة من أجل:
+
+- جمع تفضيلات المستخدم أو متطلباته
+- توضيح التعليمات غير الواضحة
+- الحصول على قرارات حول خيارات التنفيذ
+- تقديم خيارات حول الاتجاه الذي يجب اتباعه
+
+يتضمن كل سؤال عنوانا ونص السؤال وقائمة بالخيارات. يمكن للمستخدمين الاختيار من الخيارات المتاحة أو كتابة إجابة مخصصة. وعند وجود عدة أسئلة، يمكن للمستخدمين التنقل بينها قبل إرسال جميع الإجابات.
+
+---
+
+## أدوات مخصصة
+
+تتيح لك الأدوات المخصصة تعريف دوالك الخاصة التي يمكن لـ LLM استدعاؤها. تُعرّف هذه الأدوات في ملف التهيئة ويمكنها تنفيذ شفرة عشوائية.
+
+[اعرف المزيد](/docs/custom-tools) حول إنشاء أدوات مخصصة.
+
+---
+
+## خوادم MCP
+
+تتيح لك خوادم MCP (Model Context Protocol) دمج أدوات وخدمات خارجية. يشمل ذلك الوصول إلى قواعد البيانات وتكاملات API وخدمات الجهات الخارجية.
+
+[اعرف المزيد](/docs/mcp-servers) حول تهيئة خوادم MCP.
+
+---
+
+## التفاصيل الداخلية
+
+داخليا، تستخدم أدوات مثل `grep` و`glob` و`list` أداة [ripgrep](https://github.com/BurntSushi/ripgrep) في الخلفية. افتراضيا، يحترم ripgrep أنماط `.gitignore`، ما يعني أن الملفات والمجلدات المدرجة في `.gitignore` ستُستبعد من عمليات البحث وعرض القوائم.
+
+---
+
+### Ignore patterns
+
+لتضمين ملفات يتم تجاهلها عادة، أنشئ ملف `.ignore` في جذر المشروع. يمكن لهذا الملف السماح صراحة بمسارات محددة.
+
+```text title=".ignore"
+!node_modules/
+!dist/
+!build/
+```
+
+على سبيل المثال، يسمح ملف `.ignore` هذا لـ ripgrep بالبحث داخل مجلدات `node_modules/` و`dist/` و`build/` حتى لو كانت مدرجة في `.gitignore`.
diff --git a/packages/web/src/content/docs/ar/troubleshooting.mdx b/packages/web/src/content/docs/ar/troubleshooting.mdx
new file mode 100644
index 000000000..1ee7cbfbd
--- /dev/null
+++ b/packages/web/src/content/docs/ar/troubleshooting.mdx
@@ -0,0 +1,299 @@
+---
+title: استكشاف الأخطاء وإصلاحها
+description: المشكلات الشائعة وكيفية حلها.
+---
+
+لاستكشاف المشكلات في OpenCode وإصلاحها، ابدأ بالتحقق من السجلات والبيانات المحلية التي يخزنها على القرص.
+
+---
+
+## السجلات
+
+يتم حفظ ملفات السجل في:
+
+- **macOS/Linux**: `~/.local/share/opencode/log/`
+- **Windows**: اضغط `WIN+R` والصق `%USERPROFILE%\.local\share\opencode\log`
+
+تتم تسمية ملفات السجل بطوابع زمنية (مثل `2025-01-09T123456.log`) ويتم الاحتفاظ بأحدث 10 ملفات سجل.
+
+يمكنك ضبط مستوى السجل باستخدام خيار سطر الأوامر `--log-level` للحصول على معلومات تصحيح أكثر تفصيلا. على سبيل المثال: `opencode --log-level DEBUG`.
+
+---
+
+## التخزين
+
+يخزن opencode بيانات الجلسات وبيانات التطبيق الأخرى على القرص في:
+
+- **macOS/Linux**: `~/.local/share/opencode/`
+- **Windows**: اضغط `WIN+R` والصق `%USERPROFILE%\.local\share\opencode`
+
+يحتوي هذا الدليل على:
+
+- `auth.json` - بيانات المصادقة مثل مفاتيح API ورموز OAuth
+- `log/` - سجلات التطبيق
+- `project/` - بيانات خاصة بالمشروع مثل بيانات الجلسة والرسائل
+ - إذا كان المشروع داخل مستودع Git، فسيتم تخزينه في `.//storage/`
+ - إذا لم يكن داخل مستودع Git، فسيتم تخزينه في `./global/storage/`
+
+---
+
+## تطبيق سطح المكتب
+
+يشغل OpenCode Desktop خادما محليا لـ OpenCode (العملية الجانبية `opencode-cli`) في الخلفية. معظم المشكلات سببها إضافة لا تعمل بشكل صحيح، أو ذاكرة تخزين مؤقت تالفة، أو إعداد خادم غير صحيح.
+
+### فحوصات سريعة
+
+- أغلق التطبيق تماما ثم أعد تشغيله.
+- إذا عرض التطبيق شاشة خطأ، انقر **Restart** وانسخ تفاصيل الخطأ.
+- على macOS فقط: قائمة `OpenCode` -> **Reload Webview** (يفيد إذا كانت الواجهة فارغة/متجمدة).
+
+---
+
+### تعطيل الإضافات
+
+إذا كان تطبيق سطح المكتب يتعطل عند التشغيل، أو يتوقف عن الاستجابة، أو يتصرف بشكل غريب، فابدأ بتعطيل الإضافات.
+
+#### تحقق من الإعدادات العامة
+
+افتح ملف الإعدادات العام وابحث عن المفتاح `plugin`.
+
+- **macOS/Linux**: `~/.config/opencode/opencode.jsonc` (أو `~/.config/opencode/opencode.json`)
+- **macOS/Linux** (عمليات تثبيت أقدم): `~/.local/share/opencode/opencode.jsonc`
+- **Windows**: اضغط `WIN+R` والصق `%USERPROFILE%\.config\opencode\opencode.jsonc`
+
+إذا كانت لديك إضافات مضبوطة، فقم بتعطيلها مؤقتا بإزالة المفتاح أو ضبطه على مصفوفة فارغة:
+
+```jsonc
+{
+ "$schema": "https://opencode.ai/config.json",
+ "plugin": [],
+}
+```
+
+#### تحقق من أدلة الإضافات
+
+يمكن لـ OpenCode أيضا تحميل إضافات محلية من القرص. انقلها مؤقتا إلى مكان آخر (أو أعد تسمية المجلد) ثم أعد تشغيل تطبيق سطح المكتب:
+
+- **إضافات عامة**
+ - **macOS/Linux**: `~/.config/opencode/plugins/`
+ - **Windows**: اضغط `WIN+R` والصق `%USERPROFILE%\.config\opencode\plugins`
+- **إضافات المشروع** (فقط إذا كنت تستخدم إعدادات لكل مشروع)
+ - `/.opencode/plugins/`
+
+إذا عاد التطبيق للعمل، فأعد تفعيل الإضافات واحدة تلو الأخرى لمعرفة أيها يسبب المشكلة.
+
+---
+
+### مسح ذاكرة التخزين المؤقت
+
+إذا لم يساعد تعطيل الإضافات (أو كانت عملية تثبيت إضافة عالقة)، فامسح ذاكرة التخزين المؤقت حتى يتمكن OpenCode من إعادة بنائها.
+
+1. أغلق OpenCode Desktop تماما.
+2. احذف دليل ذاكرة التخزين المؤقت:
+
+- **macOS**: Finder -> `Cmd+Shift+G` -> الصق `~/.cache/opencode`
+- **Linux**: احذف `~/.cache/opencode` (أو شغّل `rm -rf ~/.cache/opencode`)
+- **Windows**: اضغط `WIN+R` والصق `%USERPROFILE%\.cache\opencode`
+
+3. أعد تشغيل OpenCode Desktop.
+
+---
+
+### إصلاح مشكلات اتصال الخادم
+
+يمكن لـ OpenCode Desktop إما تشغيل خادمه المحلي (افتراضيا) أو الاتصال بعنوان URL لخادم قمت بتهيئته.
+
+إذا ظهرت نافذة **"Connection Failed"** (أو لم يتجاوز التطبيق شاشة البداية)، فتحقق مما إذا كان هناك عنوان URL مخصص للخادم.
+
+#### مسح عنوان URL الافتراضي لخادم سطح المكتب
+
+من شاشة Home، انقر اسم الخادم (مع نقطة الحالة) لفتح محدد الخوادم. في قسم **Default server**، انقر **Clear**.
+
+#### إزالة `server.port` / `server.hostname` من الإعدادات
+
+إذا كان `opencode.json(c)` يحتوي على قسم `server`، فأزله مؤقتا ثم أعد تشغيل تطبيق سطح المكتب.
+
+#### تحقق من متغيرات البيئة
+
+إذا كان `OPENCODE_PORT` مضبوطا في بيئتك، فسيحاول تطبيق سطح المكتب استخدام ذلك المنفذ للخادم المحلي.
+
+- أزل ضبط `OPENCODE_PORT` (أو اختر منفذا متاحا) ثم أعد التشغيل.
+
+---
+
+### Linux: مشكلات Wayland / X11
+
+على Linux، قد تتسبب بعض إعدادات Wayland في نوافذ فارغة أو أخطاء في مدير التركيب (compositor).
+
+- إذا كنت تستخدم Wayland وكانت نافذة التطبيق فارغة/يتعطل، فجرّب التشغيل مع `OC_ALLOW_WAYLAND=1`.
+- إذا جعل ذلك الأمور أسوأ، فأزل هذا المتغير وجرّب التشغيل ضمن جلسة X11 بدلا من ذلك.
+
+---
+
+### Windows: بيئة تشغيل WebView2
+
+على Windows، يتطلب OpenCode Desktop وجود **WebView2 Runtime** الخاصة بـ Microsoft Edge. إذا فتح التطبيق نافذة فارغة أو لم يبدأ، فقم بتثبيت/تحديث WebView2 ثم جرّب مجددا.
+
+---
+
+### Windows: مشكلات الأداء العامة
+
+إذا كنت تواجه بطءا في الأداء، أو مشكلات في الوصول إلى الملفات، أو مشكلات في الطرفية على Windows، فجرّب استخدام [WSL (نظام Windows الفرعي لـ Linux)](/docs/windows-wsl). يوفر WSL بيئة Linux تعمل بسلاسة أكبر مع ميزات OpenCode.
+
+---
+
+### الإشعارات لا تظهر
+
+لا يعرض OpenCode Desktop إشعارات النظام إلا عندما:
+
+- تكون الإشعارات مفعلة لـ OpenCode في إعدادات نظام التشغيل، و
+- تكون نافذة التطبيق غير نشطة.
+
+---
+
+### إعادة تعيين تخزين تطبيق سطح المكتب (كحل أخير)
+
+إذا لم يبدأ التطبيق ولم تتمكن من مسح الإعدادات من داخل الواجهة، فأعد تعيين الحالة المحفوظة لتطبيق سطح المكتب.
+
+1. أغلق OpenCode Desktop.
+2. اعثر على هذه الملفات واحذفها (توجد في دليل بيانات تطبيق OpenCode Desktop):
+
+- `opencode.settings.dat` (عنوان URL الافتراضي لخادم سطح المكتب)
+- `opencode.global.dat` و `opencode.workspace.*.dat` (حالة الواجهة مثل الخوادم/المشاريع الأخيرة)
+
+للعثور على الدليل بسرعة:
+
+- **macOS**: Finder -> `Cmd+Shift+G` -> `~/Library/Application Support` (ثم ابحث عن أسماء الملفات أعلاه)
+- **Linux**: ابحث ضمن `~/.local/share` عن أسماء الملفات أعلاه
+- **Windows**: اضغط `WIN+R` -> `%APPDATA%` (ثم ابحث عن أسماء الملفات أعلاه)
+
+---
+
+## الحصول على المساعدة
+
+إذا كنت تواجه مشكلات مع OpenCode:
+
+1. **الإبلاغ عن المشكلات على GitHub**
+
+ أفضل طريقة للإبلاغ عن الأخطاء أو طلب الميزات هي عبر مستودعنا على GitHub:
+
+ [**github.com/anomalyco/opencode/issues**](https://github.com/anomalyco/opencode/issues)
+
+ قبل إنشاء مشكلة جديدة، ابحث في المشكلات الموجودة لمعرفة ما إذا كانت مشكلتك قد تم الإبلاغ عنها بالفعل.
+
+2. **انضم إلى Discord**
+
+ للحصول على مساعدة فورية ونقاشات المجتمع، انضم إلى خادم Discord الخاص بنا:
+
+ [**opencode.ai/discord**](https://opencode.ai/discord)
+
+---
+
+## مشكلات شائعة
+
+فيما يلي بعض المشكلات الشائعة وكيفية حلها.
+
+---
+
+### OpenCode لا يبدأ
+
+1. تحقق من السجلات بحثا عن رسائل الخطأ
+2. جرّب التشغيل مع `--print-logs` لرؤية المخرجات في الطرفية
+3. تأكد من أنك تستخدم أحدث إصدار عبر `opencode upgrade`
+
+---
+
+### مشكلات المصادقة
+
+1. جرّب إعادة المصادقة باستخدام الأمر `/connect` في واجهة TUI
+2. تحقق من أن مفاتيح API الخاصة بك صالحة
+3. تأكد من أن شبكتك تسمح بالاتصال بواجهة API الخاصة بالمزوّد
+
+---
+
+### النموذج غير متاح
+
+1. تحقق من أنك قمت بالمصادقة مع المزوّد
+2. تأكد من أن اسم النموذج في الإعدادات صحيح
+3. قد تتطلب بعض النماذج صلاحيات وصول محددة أو اشتراكات
+
+إذا واجهت `ProviderModelNotFoundError` فمن المرجح أنك تشير إلى نموذج بشكل غير صحيح في مكان ما.
+يجب الإشارة إلى النماذج بهذه الصيغة: `/`
+
+أمثلة:
+
+- `openai/gpt-4.1`
+- `openrouter/google/gemini-2.5-flash`
+- `opencode/kimi-k2`
+
+لمعرفة النماذج التي لديك صلاحية الوصول إليها، شغّل `opencode models`
+
+---
+
+### ProviderInitError
+
+إذا واجهت ProviderInitError، فمن المحتمل أن إعداداتك غير صالحة أو تالفة.
+
+لحل ذلك:
+
+1. أولا، تحقق من أن المزوّد مضبوط بشكل صحيح باتباع [دليل المزوّدين](/docs/providers)
+2. إذا استمرت المشكلة، فجرّب مسح الإعدادات المخزنة لديك:
+
+ ```bash
+ rm -rf ~/.local/share/opencode
+ ```
+
+ على Windows، اضغط `WIN+R` واحذف: `%USERPROFILE%\.local\share\opencode`
+
+3. أعد المصادقة مع المزوّد باستخدام الأمر `/connect` في واجهة TUI.
+
+---
+
+### AI_APICallError ومشكلات حزم المزوّد
+
+إذا واجهت أخطاء في استدعاءات API، فقد يكون السبب حزم مزوّد قديمة. يقوم opencode بتثبيت حزم المزوّد (OpenAI و Anthropic و Google وغير ذلك) ديناميكيا عند الحاجة ويقوم بتخزينها مؤقتا محليا.
+
+لحل مشكلات حزم المزوّد:
+
+1. امسح ذاكرة التخزين المؤقت لحزم المزوّد:
+
+ ```bash
+ rm -rf ~/.cache/opencode
+ ```
+
+ على Windows، اضغط `WIN+R` واحذف: `%USERPROFILE%\.cache\opencode`
+
+2. أعد تشغيل opencode لإعادة تثبيت أحدث حزم المزوّد
+
+سيجبر ذلك opencode على تنزيل أحدث إصدارات حزم المزوّد، وهو ما يحل غالبا مشكلات التوافق مع معاملات النماذج وتغييرات API.
+
+---
+
+### النسخ/اللصق لا يعمل على Linux
+
+يحتاج مستخدمو Linux إلى تثبيت إحدى أدوات الحافظة التالية حتى تعمل ميزة النسخ/اللصق:
+
+**لأنظمة X11:**
+
+```bash
+apt install -y xclip
+# or
+apt install -y xsel
+```
+
+**لأنظمة Wayland:**
+
+```bash
+apt install -y wl-clipboard
+```
+
+**للبيئات بدون واجهة رسومية (Headless):**
+
+```bash
+apt install -y xvfb
+# and run:
+Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
+export DISPLAY=:99.0
+```
+
+سيكتشف opencode ما إذا كنت تستخدم Wayland ويفضل `wl-clipboard`، وإلا فسيحاول العثور على أدوات الحافظة بالترتيب التالي: `xclip` ثم `xsel`.
diff --git a/packages/web/src/content/docs/ar/tui.mdx b/packages/web/src/content/docs/ar/tui.mdx
new file mode 100644
index 000000000..8ea206db5
--- /dev/null
+++ b/packages/web/src/content/docs/ar/tui.mdx
@@ -0,0 +1,386 @@
+---
+title: TUI
+description: استخدام واجهة المستخدم الطرفية (TUI) في OpenCode.
+---
+
+import { Tabs, TabItem } from "@astrojs/starlight/components"
+
+يوفّر OpenCode واجهة طرفية تفاعلية (TUI) للعمل على مشاريعك باستخدام نموذج لغوي كبير.
+
+يؤدي تشغيل OpenCode إلى بدء واجهة TUI للدليل الحالي.
+
+```bash
+opencode
+```
+
+أو يمكنك تشغيلها لدليل عمل محدد.
+
+```bash
+opencode /path/to/project
+```
+
+بعد الدخول إلى واجهة TUI، يمكنك إرسال رسالة كطلب.
+
+```text
+Give me a quick summary of the codebase.
+```
+
+---
+
+## مراجع الملفات
+
+يمكنك الإشارة إلى الملفات في رسائلك باستخدام `@`. يُجري ذلك بحثا ضبابيا عن الملفات ضمن دليل العمل الحالي.
+
+:::tip
+يمكنك أيضا استخدام `@` للإشارة إلى الملفات في رسائلك.
+:::
+
+```text "@packages/functions/src/api/index.ts"
+How is auth handled in @packages/functions/src/api/index.ts?
+```
+
+تُضاف محتويات الملف إلى المحادثة تلقائيا.
+
+---
+
+## أوامر Bash
+
+ابدأ الرسالة بـ `!` لتشغيل أمر في الصدفة.
+
+```bash frame="none"
+!ls -la
+```
+
+يُضاف خرج الأمر إلى المحادثة كنتيجة أداة.
+
+---
+
+## الأوامر
+
+عند استخدام واجهة OpenCode الطرفية، يمكنك كتابة `/` متبوعة باسم أمر لتنفيذ الإجراءات بسرعة. مثلا:
+
+```bash frame="none"
+/help
+```
+
+تملك معظم الأوامر أيضا اختصارا باستخدام `ctrl+x` كمفتاح قائد، حيث إن `ctrl+x` هو المفتاح القائد الافتراضي. [اعرف المزيد](/docs/keybinds).
+
+فيما يلي جميع أوامر الشرطة المائلة المتاحة:
+
+---
+
+### connect
+
+أضف موفّرا إلى OpenCode. يتيح لك اختيار أحد الموفّرين المتاحين وإضافة مفاتيح API الخاصة بهم.
+
+```bash frame="none"
+/connect
+```
+
+---
+
+### compact
+
+قم بضغط الجلسة الحالية. _الاسم المستعار_: `/summarize`
+
+```bash frame="none"
+/compact
+```
+
+**اختصار لوحة المفاتيح:** `ctrl+x c`
+
+---
+
+### details
+
+بدّل عرض تفاصيل تنفيذ الأدوات.
+
+```bash frame="none"
+/details
+```
+
+**اختصار لوحة المفاتيح:** `ctrl+x d`
+
+---
+
+### editor
+
+افتح محررا خارجيا لكتابة الرسائل. يستخدم المحرر المحدد في متغير البيئة `EDITOR`. [اعرف المزيد](#editor-setup).
+
+```bash frame="none"
+/editor
+```
+
+**اختصار لوحة المفاتيح:** `ctrl+x e`
+
+---
+
+### exit
+
+اخرج من OpenCode. _الأسماء المستعارة_: `/quit`, `/q`
+
+```bash frame="none"
+/exit
+```
+
+**اختصار لوحة المفاتيح:** `ctrl+x q`
+
+---
+
+### export
+
+صدّر المحادثة الحالية إلى Markdown وافتحها في المحرر الافتراضي لديك. يستخدم المحرر المحدد في متغير البيئة `EDITOR`. [اعرف المزيد](#editor-setup).
+
+```bash frame="none"
+/export
+```
+
+**اختصار لوحة المفاتيح:** `ctrl+x x`
+
+---
+
+### help
+
+اعرض مربع حوار المساعدة.
+
+```bash frame="none"
+/help
+```
+
+**اختصار لوحة المفاتيح:** `ctrl+x h`
+
+---
+
+### init
+
+أنشئ ملف `AGENTS.md` أو حدّثه. [اعرف المزيد](/docs/rules).
+
+```bash frame="none"
+/init
+```
+
+**اختصار لوحة المفاتيح:** `ctrl+x i`
+
+---
+
+### models
+
+اعرض النماذج المتاحة.
+
+```bash frame="none"
+/models
+```
+
+**اختصار لوحة المفاتيح:** `ctrl+x m`
+
+---
+
+### new
+
+ابدأ جلسة جديدة. _الاسم المستعار_: `/clear`
+
+```bash frame="none"
+/new
+```
+
+**اختصار لوحة المفاتيح:** `ctrl+x n`
+
+---
+
+### redo
+
+أعِد تنفيذ رسالة تم التراجع عنها سابقا. متاح فقط بعد استخدام `/undo`.
+
+:::tip
+ستتم أيضا استعادة أي تغييرات على الملفات.
+:::
+
+داخليا، يستخدم هذا Git لإدارة تغييرات الملفات. لذلك يجب أن يكون مشروعك **مستودع Git**.
+
+```bash frame="none"
+/redo
+```
+
+**اختصار لوحة المفاتيح:** `ctrl+x r`
+
+---
+
+### sessions
+
+اعرض الجلسات وبدّل بينها. _الأسماء المستعارة_: `/resume`, `/continue`
+
+```bash frame="none"
+/sessions
+```
+
+**اختصار لوحة المفاتيح:** `ctrl+x l`
+
+---
+
+### share
+
+شارك الجلسة الحالية. [اعرف المزيد](/docs/share).
+
+```bash frame="none"
+/share
+```
+
+**اختصار لوحة المفاتيح:** `ctrl+x s`
+
+---
+
+### themes
+
+اعرض السمات المتاحة.
+
+```bash frame="none"
+/theme
+```
+
+**اختصار لوحة المفاتيح:** `ctrl+x t`
+
+---
+
+### thinking
+
+بدّل إظهار كتل التفكير/الاستدلال في المحادثة. عند تفعيله، يمكنك رؤية عملية استدلال النموذج للنماذج التي تدعم التفكير الموسّع.
+
+:::note
+يتحكم هذا الأمر فقط فيما إذا كانت كتل التفكير **تُعرض**؛ ولا يفعّل أو يعطّل قدرات الاستدلال في النموذج. لتبديل قدرات الاستدلال فعليا، استخدم `ctrl+t` للتنقّل بين إصدارات النموذج.
+:::
+
+```bash frame="none"
+/thinking
+```
+
+---
+
+### undo
+
+تراجع عن آخر رسالة في المحادثة. يزيل أحدث رسالة للمستخدم، وكل الردود اللاحقة، وأي تغييرات على الملفات.
+
+:::tip
+سيتم أيضا التراجع عن أي تغييرات على الملفات.
+:::
+
+داخليا، يستخدم هذا Git لإدارة تغييرات الملفات. لذلك يجب أن يكون مشروعك **مستودع Git**.
+
+```bash frame="none"
+/undo
+```
+
+**اختصار لوحة المفاتيح:** `ctrl+x u`
+
+---
+
+### unshare
+
+ألغِ مشاركة الجلسة الحالية. [اعرف المزيد](/docs/share#un-sharing).
+
+```bash frame="none"
+/unshare
+```
+
+---
+
+## إعداد المحرر
+يستخدم الأمران `/editor` و`/export` المحرر المحدد في متغير البيئة `EDITOR`.
+
+
+
+ ```bash
+ # Example for nano or vim
+ export EDITOR=nano
+ export EDITOR=vim
+
+ # For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
+ # include --wait
+ export EDITOR="code --wait"
+ ```
+
+ لجعل ذلك دائما، أضف هذا إلى ملف تهيئة الصدفة لديك؛
+ `~/.bashrc`، `~/.zshrc`، إلخ.
+
+
+
+
+ ```bash
+ set EDITOR=notepad
+
+ # For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
+ # include --wait
+ set EDITOR=code --wait
+ ```
+
+ لجعل ذلك دائما، استخدم **System Properties** > **Environment Variables**.
+
+
+
+
+ ```powershell
+ $env:EDITOR = "notepad"
+
+ # For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
+ # include --wait
+ $env:EDITOR = "code --wait"
+ ```
+
+ لجعل ذلك دائما، أضف هذا إلى ملف تهيئة PowerShell لديك.
+
+
+
+
+تتضمن خيارات المحررات الشائعة ما يلي:
+
+- `code` - Visual Studio Code
+- `cursor` - Cursor
+- `windsurf` - Windsurf
+- `nvim` - محرر Neovim
+- `vim` - محرر Vim
+- `nano` - محرر Nano
+- `notepad` - Windows Notepad
+- `subl` - Sublime Text
+
+:::note
+تحتاج بعض المحررات مثل VS Code إلى التشغيل مع الخيار `--wait`.
+:::
+
+تحتاج بعض المحررات إلى وسائط سطر الأوامر لتعمل بوضع الحجب. يجعل الخيار `--wait` عملية المحرر تنتظر حتى يتم إغلاقها.
+
+---
+
+## الإعداد
+
+يمكنك تخصيص سلوك واجهة TUI عبر ملف إعدادات OpenCode.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "tui": {
+ "scroll_speed": 3,
+ "scroll_acceleration": {
+ "enabled": true
+ }
+ }
+}
+```
+
+### الخيارات
+
+- `scroll_acceleration` - فعّل تسارع التمرير على نمط macOS لتمرير سلس وطبيعي. عند تفعيله، تزداد سرعة التمرير مع إيماءات التمرير السريعة وتبقى دقيقة للحركات الأبطأ. **يتقدّم هذا الإعداد على `scroll_speed` ويستبدله عند تفعيله.**
+- `scroll_speed` - يتحكم في سرعة تمرير واجهة TUI عند استخدام أوامر التمرير (الحد الأدنى: `1`). القيمة الافتراضية هي `3`. **ملاحظة: يتم تجاهل هذا إذا تم ضبط `scroll_acceleration.enabled` على `true`.**
+
+---
+
+## التخصيص
+
+يمكنك تخصيص جوانب مختلفة من عرض واجهة TUI باستخدام لوحة الأوامر (`ctrl+x h` أو `/help`). تبقى هذه الإعدادات محفوظة عبر عمليات إعادة التشغيل.
+
+---
+
+#### عرض اسم المستخدم
+
+بدّل ما إذا كان اسم المستخدم يظهر في رسائل الدردشة. يمكنك الوصول إلى هذا عبر:
+
+- لوحة الأوامر: ابحث عن "username" أو "hide username"
+- يُحفظ الإعداد تلقائيا وسيتم تذكره عبر جلسات واجهة TUI
diff --git a/packages/web/src/content/docs/ar/web.mdx b/packages/web/src/content/docs/ar/web.mdx
new file mode 100644
index 000000000..d7f887e04
--- /dev/null
+++ b/packages/web/src/content/docs/ar/web.mdx
@@ -0,0 +1,142 @@
+---
+title: الويب
+description: استخدام OpenCode في متصفحك.
+---
+
+يمكن تشغيل OpenCode كتطبيق ويب داخل متصفحك، ليمنحك تجربة البرمجة القوية بالذكاء الاصطناعي نفسها دون الحاجة إلى الطرفية.
+
+
+
+## البدء
+
+ابدأ تشغيل واجهة الويب عبر تنفيذ:
+
+```bash
+opencode web
+```
+
+يؤدي ذلك إلى تشغيل خادم محلي على `127.0.0.1` بمنفذ عشوائي متاح، ويفتح OpenCode تلقائيا في المتصفح الافتراضي لديك.
+
+:::caution
+إذا لم يتم تعيين `OPENCODE_SERVER_PASSWORD` فسيكون الخادم دون حماية. هذا مناسب للاستخدام المحلي، لكنه يجب أن يكون مُعينا عند إتاحة الوصول عبر الشبكة.
+:::
+
+:::tip[مستخدمو Windows]
+لأفضل تجربة، شغّل `opencode web` من [WSL](/docs/windows-wsl) بدلا من PowerShell. يضمن ذلك وصولا صحيحا إلى نظام الملفات وتكاملا أفضل مع الطرفية.
+:::
+
+---
+
+## الإعدادات
+
+يمكنك ضبط خادم الويب باستخدام خيارات سطر الأوامر أو عبر [ملف الإعدادات](/docs/config).
+
+### المنفذ
+
+افتراضيا، يختار OpenCode منفذا متاحا. يمكنك تحديد منفذ:
+
+```bash
+opencode web --port 4096
+```
+
+### اسم المضيف
+
+افتراضيا، يرتبط الخادم بـ `127.0.0.1` (للاستخدام المحلي فقط). لجعل OpenCode متاحا على شبكتك:
+
+```bash
+opencode web --hostname 0.0.0.0
+```
+
+عند استخدام `0.0.0.0` سيعرض OpenCode كلا من عناوين الوصول المحلي وعناوين الشبكة:
+
+```
+ Local access: http://localhost:4096
+ Network access: http://192.168.1.100:4096
+```
+
+### اكتشاف mDNS
+
+فعّل mDNS لجعل خادمك قابلا للاكتشاف على الشبكة المحلية:
+
+```bash
+opencode web --mdns
+```
+
+يضبط ذلك تلقائيا اسم المضيف إلى `0.0.0.0` ويعلن عن الخادم باسم `opencode.local`.
+
+يمكنك تخصيص اسم نطاق mDNS لتشغيل عدة نسخ على الشبكة نفسها:
+
+```bash
+opencode web --mdns --mdns-domain myproject.local
+```
+
+### CORS
+
+للسماح بنطاقات إضافية عبر CORS (مفيد للواجهات الأمامية المخصصة):
+
+```bash
+opencode web --cors https://example.com
+```
+
+### المصادقة
+
+لحماية الوصول، عيّن كلمة مرور عبر متغير البيئة `OPENCODE_SERVER_PASSWORD`:
+
+```bash
+OPENCODE_SERVER_PASSWORD=secret opencode web
+```
+
+اسم المستخدم الافتراضي هو `opencode`، ويمكن تغييره عبر `OPENCODE_SERVER_USERNAME`.
+
+---
+
+## استخدام واجهة الويب
+
+بعد التشغيل، تتيح لك واجهة الويب الوصول إلى جلسات OpenCode الخاصة بك.
+
+### الجلسات
+
+اعرض جلساتك وأدرها من الصفحة الرئيسية. يمكنك رؤية الجلسات النشطة وبدء جلسات جديدة.
+
+
+
+### حالة الخادم
+
+انقر على "See Servers" لعرض الخوادم المتصلة وحالتها.
+
+
+
+---
+
+## إرفاق طرفية
+
+يمكنك إرفاق واجهة طرفية (TUI) بخادم ويب قيد التشغيل:
+
+```bash
+# Start the web server
+opencode web --port 4096
+
+# In another terminal, attach the TUI
+opencode attach http://localhost:4096
+```
+
+يتيح لك ذلك استخدام واجهة الويب والطرفية في الوقت نفسه، مع مشاركة الجلسات والحالة نفسها.
+
+---
+
+## ملف الإعدادات
+
+يمكنك أيضا ضبط إعدادات الخادم داخل ملف الإعدادات `opencode.json`:
+
+```json
+{
+ "server": {
+ "port": 4096,
+ "hostname": "0.0.0.0",
+ "mdns": true,
+ "cors": ["https://example.com"]
+ }
+}
+```
+
+تكون خيارات سطر الأوامر ذات أولوية أعلى من إعدادات ملف الإعدادات.
diff --git a/packages/web/src/content/docs/ar/windows-wsl.mdx b/packages/web/src/content/docs/ar/windows-wsl.mdx
new file mode 100644
index 000000000..171319bb2
--- /dev/null
+++ b/packages/web/src/content/docs/ar/windows-wsl.mdx
@@ -0,0 +1,113 @@
+---
+title: Windows (WSL)
+description: شغّل OpenCode على Windows باستخدام WSL لأفضل تجربة.
+---
+
+import { Steps } from "@astrojs/starlight/components"
+
+رغم أن OpenCode يمكن تشغيله مباشرة على Windows، نوصي باستخدام [Windows Subsystem for Linux (WSL)](https://learn.microsoft.com/en-us/windows/wsl/install) للحصول على أفضل تجربة. يوفر WSL بيئة Linux تعمل بسلاسة مع ميزات OpenCode.
+
+:::tip[لماذا WSL؟]
+يوفر WSL أداء أفضل لنظام الملفات، ودعمًا كاملًا للطرفية، وتوافقًا مع أدوات التطوير التي يعتمد عليها OpenCode.
+:::
+
+---
+
+## الإعداد
+
+
+
+1. **ثبّت WSL**
+
+ إذا لم تقم بذلك بعد، [ثبّت WSL](https://learn.microsoft.com/en-us/windows/wsl/install) باستخدام دليل Microsoft الرسمي.
+
+2. **ثبّت OpenCode داخل WSL**
+
+ بعد إعداد WSL، افتح طرفية WSL وثبّت OpenCode باستخدام إحدى [طرق التثبيت](/docs/).
+
+ ```bash
+ curl -fsSL https://opencode.ai/install | bash
+ ```
+
+3. **استخدم OpenCode من WSL**
+
+ انتقل إلى مجلد مشروعك (يمكنك الوصول لملفات Windows عبر `/mnt/c/` و`/mnt/d/` وغيرها) ثم شغّل OpenCode.
+
+ ```bash
+ cd /mnt/c/Users/YourName/project
+ opencode
+ ```
+
+
+
+---
+
+## تطبيق سطح المكتب + خادم WSL
+
+إذا كنت تفضّل تطبيق OpenCode لسطح المكتب لكن تريد تشغيل الخادم داخل WSL:
+
+1. **ابدأ الخادم داخل WSL** مع `--hostname 0.0.0.0` للسماح بالاتصالات الخارجية:
+
+ ```bash
+ opencode serve --hostname 0.0.0.0 --port 4096
+ ```
+
+2. **اربط تطبيق سطح المكتب** على `http://localhost:4096`
+
+:::note
+إذا لم يعمل `localhost` في إعدادك، اتصل باستخدام عنوان IP الخاص بـ WSL بدلًا منه (من داخل WSL: `hostname -I`) واستخدم `http://:4096`.
+:::
+
+:::caution
+عند استخدام `--hostname 0.0.0.0`، اضبط `OPENCODE_SERVER_PASSWORD` لحماية الخادم.
+
+```bash
+OPENCODE_SERVER_PASSWORD=your-password opencode serve --hostname 0.0.0.0
+```
+
+:::
+
+---
+
+## عميل الويب + WSL
+
+لأفضل تجربة ويب على Windows:
+
+1. **شغّل `opencode web` من طرفية WSL** بدلًا من PowerShell:
+
+ ```bash
+ opencode web --hostname 0.0.0.0
+ ```
+
+2. **افتحه من متصفح Windows** عبر `http://localhost:` (يعرض OpenCode الرابط)
+
+تشغيل `opencode web` من WSL يضمن وصولًا صحيحًا لنظام الملفات وتكاملًا أفضل مع الطرفية، مع بقائه متاحًا من متصفح Windows.
+
+---
+
+## الوصول إلى ملفات Windows
+
+يمكن لـ WSL الوصول إلى جميع ملفات Windows عبر مجلد `/mnt/`:
+
+- قرص `C:` → `/mnt/c/`
+- قرص `D:` → `/mnt/d/`
+- وهكذا...
+
+مثال:
+
+```bash
+cd /mnt/c/Users/YourName/Documents/project
+opencode
+```
+
+:::tip
+لأفضل سلاسة، يمكنك استنساخ/نسخ المستودع إلى نظام ملفات WSL (مثل `~/code/`) وتشغيل OpenCode من هناك.
+:::
+
+---
+
+## نصائح
+
+- شغّل OpenCode داخل WSL للمشاريع المخزنة على أقراص Windows حتى يكون الوصول للملفات سلسًا
+- استخدم [إضافة WSL في VS Code](https://code.visualstudio.com/docs/remote/wsl) مع OpenCode لسير عمل تطوير متكامل
+- إعدادات OpenCode وجلساته تُخزَّن داخل بيئة WSL في `~/.local/share/opencode/`
diff --git a/packages/web/src/content/docs/ar/zen.mdx b/packages/web/src/content/docs/ar/zen.mdx
new file mode 100644
index 000000000..f25b321a9
--- /dev/null
+++ b/packages/web/src/content/docs/ar/zen.mdx
@@ -0,0 +1,243 @@
+---
+title: Zen
+description: قائمة منتقاة من النماذج يوفّرها OpenCode.
+---
+
+import config from "../../../../config.mjs"
+export const console = config.console
+export const email = `mailto:${config.email}`
+
+OpenCode Zen هي قائمة بالنماذج التي اختبرها فريق OpenCode وتحقّق منها.
+
+:::note
+OpenCode Zen متاح حاليا بنسخة تجريبية.
+:::
+
+يعمل Zen مثل أي مزوّد آخر في OpenCode. تسجّل الدخول إلى OpenCode Zen وتحصل على
+مفتاح API. استخدامه **اختياري بالكامل** ولا تحتاج إليه لاستخدام OpenCode.
+
+---
+
+## الخلفية
+
+توجد نماذج كثيرة جدا، لكن عددا قليلا فقط منها يعمل بشكل جيد كعوامل للبرمجة.
+بالإضافة إلى ذلك، فإن معظم المزوّدين يختلفون كثيرا في طريقة الإعداد؛ لذلك قد
+تحصل على أداء وجودة مختلفين بشكل كبير.
+
+:::tip
+اختبرنا مجموعة منتقاة من النماذج والمزوّدين الذين يعملون جيدا مع OpenCode.
+:::
+
+لذلك إذا كنت تستخدم نموذجا عبر خدمة مثل OpenRouter، فلن تكون واثقا أبدا من أنك
+تحصل على أفضل نسخة من النموذج الذي تريده.
+
+لمعالجة ذلك، قمنا بعدة أمور:
+
+1. اختبرنا مجموعة منتقاة من النماذج وتحدثنا مع فرقها حول افضل طريقة لتشغيلها.
+2. ثم عملنا مع عدد من المزوّدين للتأكد من تقديمها بشكل صحيح.
+3. أخيرا، قمنا بقياس أداء توليفة النموذج/المزوّد وخرجنا بقائمة نوصي بها بثقة.
+
+OpenCode Zen هو بوابة للذكاء الاصطناعي تتيح لك الوصول إلى هذه النماذج.
+
+---
+
+## كيف يعمل
+
+يعمل OpenCode Zen مثل أي مزوّد آخر في OpenCode.
+
+1. تسجّل الدخول إلى **OpenCode Zen**، وتضيف تفاصيل الفوترة، ثم تنسخ مفتاح API.
+2. تشغّل الأمر `/connect` في واجهة TUI، وتختار OpenCode Zen، ثم تلصق مفتاح API.
+3. شغّل `/models` في واجهة TUI لعرض قائمة النماذج التي نوصي بها.
+
+يتم احتساب الرسوم لكل طلب، ويمكنك إضافة رصيد إلى حسابك.
+
+---
+
+## نقاط النهاية
+
+يمكنك أيضا الوصول إلى نماذجنا عبر نقاط نهاية API التالية.
+
+| النموذج | معرّف النموذج | نقطة النهاية | حزمة AI SDK |
+| ------------------ | ------------------ | -------------------------------------------------- | --------------------------- |
+| GPT 5.2 | gpt-5.2 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
+| GPT 5.2 Codex | gpt-5.2-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
+| GPT 5.1 | gpt-5.1 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
+| GPT 5.1 Codex | gpt-5.1-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
+| GPT 5.1 Codex Max | gpt-5.1-codex-max | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
+| GPT 5.1 Codex Mini | gpt-5.1-codex-mini | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
+| GPT 5 | gpt-5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
+| GPT 5 Codex | gpt-5-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
+| GPT 5 Nano | gpt-5-nano | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
+| Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
+| Claude Sonnet 4 | claude-sonnet-4 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
+| Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
+| Claude Haiku 3.5 | claude-3-5-haiku | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
+| Claude Opus 4.6 | claude-opus-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
+| Claude Opus 4.5 | claude-opus-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
+| Claude Opus 4.1 | claude-opus-4-1 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
+| Gemini 3 Pro | gemini-3-pro | `https://opencode.ai/zen/v1/models/gemini-3-pro` | `@ai-sdk/google` |
+| Gemini 3 Flash | gemini-3-flash | `https://opencode.ai/zen/v1/models/gemini-3-flash` | `@ai-sdk/google` |
+| MiniMax M2.1 | minimax-m2.1 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
+| MiniMax M2.1 Free | minimax-m2.1-free | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
+| GLM 4.7 | glm-4.7 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
+| GLM 4.7 Free | glm-4.7-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
+| GLM 4.6 | glm-4.6 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
+| Kimi K2.5 | kimi-k2.5 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
+| Kimi K2.5 Free | kimi-k2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
+| Kimi K2 Thinking | kimi-k2-thinking | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
+| Kimi K2 | kimi-k2 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
+| Qwen3 Coder 480B | qwen3-coder | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
+| Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
+
+يستخدم [معرّف النموذج](/docs/config/#models) في إعدادات OpenCode الصيغة `opencode/`.
+على سبيل المثال، بالنسبة إلى GPT 5.2 Codex ستستخدم `opencode/gpt-5.2-codex` في إعداداتك.
+
+---
+
+### النماذج
+
+يمكنك جلب القائمة الكاملة بالنماذج المتاحة وبياناتها الوصفية من:
+
+```
+https://opencode.ai/zen/v1/models
+```
+
+---
+
+## التسعير
+
+ندعم نموذج الدفع حسب الاستخدام. فيما يلي الأسعار **لكل 1M tokens**.
+
+| النموذج | الإدخال | الإخراج | قراءة مخزنة | كتابة مخزنة |
+| --------------------------------- | ------- | ------- | ----------- | ----------- |
+| Big Pickle | Free | Free | Free | - |
+| MiniMax M2.1 Free | Free | Free | Free | - |
+| MiniMax M2.1 | $0.30 | $1.20 | $0.10 | - |
+| GLM 4.7 Free | Free | Free | Free | - |
+| GLM 4.7 | $0.60 | $2.20 | $0.10 | - |
+| GLM 4.6 | $0.60 | $2.20 | $0.10 | - |
+| Kimi K2.5 Free | Free | Free | Free | - |
+| Kimi K2.5 | $0.60 | $3.00 | $0.08 | - |
+| Kimi K2 Thinking | $0.40 | $2.50 | - | - |
+| Kimi K2 | $0.40 | $2.50 | - | - |
+| Qwen3 Coder 480B | $0.45 | $1.50 | - | - |
+| Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 |
+| Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 |
+| Claude Sonnet 4 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 |
+| Claude Sonnet 4 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 |
+| Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 |
+| Claude Haiku 3.5 | $0.80 | $4.00 | $0.08 | $1.00 |
+| Claude Opus 4.6 (≤ 200K tokens) | $5.00 | $25.00 | $0.50 | $6.25 |
+| Claude Opus 4.6 (> 200K tokens) | $10.00 | $37.50 | $1.00 | $12.50 |
+| Claude Opus 4.5 | $5.00 | $25.00 | $0.50 | $6.25 |
+| Claude Opus 4.1 | $15.00 | $75.00 | $1.50 | $18.75 |
+| Gemini 3 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - |
+| Gemini 3 Pro (> 200K tokens) | $4.00 | $18.00 | $0.40 | - |
+| Gemini 3 Flash | $0.50 | $3.00 | $0.05 | - |
+| GPT 5.2 | $1.75 | $14.00 | $0.175 | - |
+| GPT 5.2 Codex | $1.75 | $14.00 | $0.175 | - |
+| GPT 5.1 | $1.07 | $8.50 | $0.107 | - |
+| GPT 5.1 Codex | $1.07 | $8.50 | $0.107 | - |
+| GPT 5.1 Codex Max | $1.25 | $10.00 | $0.125 | - |
+| GPT 5.1 Codex Mini | $0.25 | $2.00 | $0.025 | - |
+| GPT 5 | $1.07 | $8.50 | $0.107 | - |
+| GPT 5 Codex | $1.07 | $8.50 | $0.107 | - |
+| GPT 5 Nano | Free | Free | Free | - |
+
+قد تلاحظ _Claude Haiku 3.5_ في سجل الاستخدام. هذا [نموذج منخفض التكلفة](/docs/config/#models) يُستخدم لتوليد عناوين جلساتك.
+
+:::note
+يتم تمرير رسوم بطاقات الائتمان بالتكلفة الفعلية (4.4% + $0.30 لكل معاملة)؛ ولا نفرض أي رسوم إضافية غير ذلك.
+:::
+
+النماذج المجانية:
+
+- GLM 4.7 Free متاح على OpenCode لفترة محدودة. يستخدم الفريق هذه الفترة لجمع الملاحظات وتحسين النموذج.
+- Kimi K2.5 Free متاح على OpenCode لفترة محدودة. يستخدم الفريق هذه الفترة لجمع الملاحظات وتحسين النموذج.
+- MiniMax M2.1 Free متاح على OpenCode لفترة محدودة. يستخدم الفريق هذه الفترة لجمع الملاحظات وتحسين النموذج.
+- Big Pickle نموذج خفي ومتاح مجانا على OpenCode لفترة محدودة. يستخدم الفريق هذه الفترة لجمع الملاحظات وتحسين النموذج.
+
+تواصل معنا إذا كانت لديك أي أسئلة.
+
+---
+
+### إعادة الشحن التلقائي
+
+إذا انخفض رصيدك عن $5، فسيقوم Zen تلقائيا بإعادة شحن $20.
+
+يمكنك تغيير مبلغ إعادة الشحن التلقائي. ويمكنك أيضا تعطيل إعادة الشحن التلقائي بالكامل.
+
+---
+
+### الحدود الشهرية
+
+يمكنك أيضا تعيين حد شهري للاستخدام لمساحة العمل بالكامل ولكل عضو في فريقك.
+
+على سبيل المثال، لنفترض أنك ضبطت حد الاستخدام الشهري على $20، فلن يتجاوز Zen مبلغ $20 خلال شهر.
+لكن إذا كانت إعادة الشحن التلقائي مفعّلة، فقد ينتهي الأمر بخصم أكثر من $20 إذا انخفض رصيدك عن $5.
+
+---
+
+## الخصوصية
+
+تتم استضافة جميع نماذجنا في الولايات المتحدة. يلتزم مزوّدونا بسياسة عدم الاحتفاظ بالبيانات (zero-retention) ولا يستخدمون بياناتك لتدريب النماذج، مع الاستثناءات التالية:
+
+- Big Pickle: خلال فترة إتاحته المجانية، قد تُستخدم البيانات المجمعة لتحسين النموذج.
+- GLM 4.7 Free: خلال فترة إتاحته المجانية، قد تُستخدم البيانات المجمعة لتحسين النموذج.
+- Kimi K2.5 Free: خلال فترة إتاحته المجانية، قد تُستخدم البيانات المجمعة لتحسين النموذج.
+- MiniMax M2.1 Free: خلال فترة إتاحته المجانية، قد تُستخدم البيانات المجمعة لتحسين النموذج.
+- OpenAI APIs: يتم الاحتفاظ بالطلبات لمدة 30 يوما وفقا لـ [سياسات بيانات OpenAI](https://platform.openai.com/docs/guides/your-data).
+- Anthropic APIs: يتم الاحتفاظ بالطلبات لمدة 30 يوما وفقا لـ [سياسات بيانات Anthropic](https://docs.anthropic.com/en/docs/claude-code/data-usage).
+
+---
+
+## للفرق
+
+يعمل Zen بشكل ممتاز للفرق أيضا. يمكنك دعوة زملاء الفريق، وتعيين الأدوار، وتنظيم
+النماذج التي يستخدمها فريقك، والمزيد.
+
+:::note
+مساحات العمل مجانية حاليا للفرق كجزء من النسخة التجريبية.
+:::
+
+إدارة مساحة العمل مجانية حاليا للفرق كجزء من النسخة التجريبية. سنشارك المزيد من التفاصيل حول التسعير قريبا.
+
+---
+
+### الأدوار
+
+يمكنك دعوة زملاء الفريق إلى مساحة عملك وتعيين الأدوار:
+
+- **Admin**: إدارة النماذج والأعضاء ومفاتيح API والفوترة
+- **Member**: إدارة مفاتيح API الخاصة به فقط
+
+يمكن للمسؤولين أيضا تعيين حدود إنفاق شهرية لكل عضو للسيطرة على التكاليف.
+
+---
+
+### صلاحيات الوصول للنماذج
+
+يمكن للمسؤولين تفعيل نماذج محددة لمساحة العمل أو تعطيلها. ستعيد الطلبات المرسلة إلى نموذج معطّل خطأ.
+
+يفيد ذلك في الحالات التي تريد فيها تعطيل استخدام نموذج يقوم بجمع البيانات.
+
+---
+
+### استخدم مفتاحك الخاص
+
+يمكنك استخدام مفاتيح API الخاصة بك لدى OpenAI أو Anthropic مع الاستمرار في الوصول إلى نماذج أخرى ضمن Zen.
+
+عند استخدام مفاتيحك الخاصة، تتم فوترة tokens مباشرة من المزوّد وليس من Zen.
+
+على سبيل المثال، قد تكون لدى مؤسستك بالفعل مفاتيح لـ OpenAI أو Anthropic وتريد استخدامها بدلا من المفتاح الذي يوفّره Zen.
+
+---
+
+## الأهداف
+
+أنشأنا OpenCode Zen من أجل:
+
+1. **قياس الأداء** لأفضل النماذج/المزوّدين لعوامل البرمجة.
+2. إتاحة خيارات **عالية الجودة** دون خفض الأداء أو توجيه الطلبات إلى مزوّدين أرخص.
+3. تمرير أي **انخفاض في الأسعار** عبر البيع بالتكلفة؛ بحيث تكون الزيادة الوحيدة لتغطية رسوم المعالجة.
+4. عدم فرض **أي ارتباط حصري (lock-in)** عبر تمكينك من استخدامه مع أي عامل برمجة آخر، مع إتاحة استخدام أي مزوّد آخر مع OpenCode أيضا.
diff --git a/packages/web/src/content/docs/bs/1-0.mdx b/packages/web/src/content/docs/bs/1-0.mdx
new file mode 100644
index 000000000..d1edef004
--- /dev/null
+++ b/packages/web/src/content/docs/bs/1-0.mdx
@@ -0,0 +1,54 @@
+---
+title: Migracija na 1.0
+description: Šta je novo u OpenCode 1.0.
+---
+
+OpenCode 1.0 je potpuna revizija TUI-ja.
+Prešli smo sa TUI zasnovanog na go+bubbletea koji je imao problema sa performansama i mogućnostima na interni okvir (OpenTUI) napisan u zig+solidjs.
+Novi TUI radi kao stari jer se povezuje na isti opencode server.
+
+---
+## Upgrade
+Ne biste trebali biti automatski nadograđeni na 1.0 ako trenutno koristite prethodnu
+verzija. Međutim, neke starije verzije OpenCode-a uvijek uzimaju najnoviju verziju.
+Za ručnu nadogradnju, pokrenite
+
+```bash
+$ opencode upgrade 1.0.0
+
+```
+
+Za vraćanje na 0.x, pokrenite
+
+```bash
+$ opencode upgrade 0.15.31
+```
+
+---
+
+## UX promjene
+Historija sesije je komprimovanija i prikazuje samo sve detalje alata za uređivanje i bash.
+Dodali smo komandnu traku kroz koju prolazi skoro sve. Pritisnite ctrl+p da prikažete u bilo kom kontekstu i vidite sve što možete učiniti.
+Dodatna bočna traka sesije (može se prebaciti) sa korisnim informacijama.
+Uklonili smo neke funkcije za koje nismo bili sigurni da ih neko koristi. Ako nešto važno nedostaje, otvorite problem i brzo ćemo ga dodati.
+
+---
+## Revolucionarne promjene
+### Tastature su preimenovane
+- povratne_poruke -> poništite_poruke
+- switch_agent -> agent_cycle
+- switch_agent_reverse -> agent_cycle_reverse
+- switch_mode -> agent_cycle
+- switch_mode_reverse -> agent_cycle_reverse
+### Linkovi za degustatore su uklonjeni
+- messages_layout_toggle
+- poruke_sljedeće
+- messages_previous
+- file_diff_toggle
+- file_search
+- file_close
+- lista_datoteka
+- app_help
+- project_init
+- detalji alata
+- razmišljanje_blokovi
\ No newline at end of file
diff --git a/packages/web/src/content/docs/bs/acp.mdx b/packages/web/src/content/docs/bs/acp.mdx
new file mode 100644
index 000000000..44145a900
--- /dev/null
+++ b/packages/web/src/content/docs/bs/acp.mdx
@@ -0,0 +1,156 @@
+---
+title: ACP podrška
+description: Koristite OpenCode u bilo kojem uređivaču kompatibilnom sa ACP.
+---
+
+OpenCode podržava [Agent Client Protocol](https://agentclientprotocol.com) (ACP), što vam omogućava da ga koristite direktno u kompatibilnim uređivačima i IDE-ovima.
+
+:::tip
+Za listu uređivača i alata koji podržavaju ACP, pogledajte [ACP izvještaj o napretku](https://zed.dev/blog/acp-progress-report#available-now).
+:::
+
+ACP je otvoreni protokol koji standardizira komunikaciju između uređivača koda i AI coding agenata.
+
+---
+
+## Konfiguriši
+
+Da biste koristili OpenCode putem ACP-a, konfigurirajte svoj uređivač da pokrene naredbu `opencode acp`.
+
+Naredba pokreće OpenCode kao ACP-kompatibilan podproces koji komunicira sa vašim uređivačem preko JSON-RPC-a kroz stdio.
+
+Ispod su primjeri za popularne uređivače koji podržavaju ACP.
+
+---
+
+### Zed
+
+Dodajte u svoju [Zed](https://zed.dev) konfiguraciju (`~/.config/zed/settings.json`):
+
+```json title="~/.config/zed/settings.json"
+{
+ "agent_servers": {
+ "OpenCode": {
+ "command": "opencode",
+ "args": ["acp"]
+ }
+ }
+}
+```
+
+Da biste ga otvorili, koristite akciju `agent: new thread` u **Command Palette**.
+
+Također možete vezati prečicu na tastaturi uređivanjem vašeg `keymap.json`:
+
+```json title="keymap.json"
+[
+ {
+ "bindings": {
+ "cmd-alt-o": [
+ "agent::NewExternalAgentThread",
+ {
+ "agent": {
+ "custom": {
+ "name": "OpenCode",
+ "command": {
+ "command": "opencode",
+ "args": ["acp"]
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+]
+```
+
+---
+
+### JetBrains IDE-ovi
+
+Dodajte u svoj [JetBrains IDE](https://www.jetbrains.com/) `acp.json` prema [dokumentaciji](https://www.jetbrains.com/help/ai-assistant/acp.html):
+
+```json title="acp.json"
+{
+ "agent_servers": {
+ "OpenCode": {
+ "command": "/absolute/path/bin/opencode",
+ "args": ["acp"]
+ }
+ }
+}
+```
+
+Da biste ga otvorili, koristite novog "OpenCode" agenta u AI Chat agent selektoru.
+
+---
+
+### Avante.nvim
+
+Dodajte u svoju [Avante.nvim](https://github.com/yetone/avante.nvim) konfiguraciju:
+
+```lua
+{
+ acp_providers = {
+ ["opencode"] = {
+ command = "opencode",
+ args = { "acp" }
+ }
+ }
+}
+```
+
+Ako trebate proslijediti varijable okruženja:
+
+```lua {6-8}
+{
+ acp_providers = {
+ ["opencode"] = {
+ command = "opencode",
+ args = { "acp" },
+ env = {
+ OPENCODE_API_KEY = os.getenv("OPENCODE_API_KEY")
+ }
+ }
+ }
+}
+```
+
+---
+
+### CodeCompanion.nvim
+
+Da koristite OpenCode kao ACP agenta u [CodeCompanion.nvim](https://github.com/olimorris/codecompanion.nvim), dodajte sljedeće u svoju Neovim konfiguraciju:
+
+```lua
+require("codecompanion").setup({
+ interactions = {
+ chat = {
+ adapter = {
+ name = "opencode",
+ model = "claude-sonnet-4",
+ },
+ },
+ },
+})
+```
+
+Ova konfiguracija postavlja CodeCompanion da koristi OpenCode kao ACP chat agenta.
+
+Ako trebate proslijediti varijable okruženja (kao što je `OPENCODE_API_KEY`), pogledajte [Configuring Adapters: Environment Variables](https://codecompanion.olimorris.dev/getting-started#setting-an-api-key) u dokumentaciji CodeCompanion.nvim.
+
+## Podrška
+
+OpenCode radi isto kroz ACP kao i u terminalu. Podržane su sve funkcije:
+
+:::note
+Neke ugrađene komande kao što su `/undo` i `/redo` trenutno nisu podržane.
+:::
+
+- Ugrađeni alati (operacije sa datotekama, naredbe terminala, itd.)
+- Prilagođeni alati i komande kosih crta
+- MCP serveri konfigurisani u vašoj OpenCode konfiguraciji
+- Pravila specifična za projekat `AGENTS.md`
+- Prilagođeni formateri i linteri
+- Agenti i sistem dozvola
diff --git a/packages/web/src/content/docs/bs/agents.mdx b/packages/web/src/content/docs/bs/agents.mdx
new file mode 100644
index 000000000..ea5d5621b
--- /dev/null
+++ b/packages/web/src/content/docs/bs/agents.mdx
@@ -0,0 +1,651 @@
+---
+title: Agenti
+description: Konfigurirajte i koristite specijalizirane agente.
+---
+
+Agenti su specijalizirani AI asistenti koji se mogu konfigurirati za specifične zadatke i tokove posla. Oni vam omogućavaju da kreirate fokusirane alate sa prilagođenim upitima, modelima i pristupom alatima.
+:::tip
+Koristite agenta plana za analizu koda i pregled prijedloga bez ikakvih promjena koda.
+:::
+Možete se prebacivati između agenata tokom sesije ili ih pozvati spominjanjem `@`.
+
+---
+## Vrsta
+Postoje dvije vrste agenata u OpenCode-u; primarni agensi i subagensi.
+
+---
+### Primarni agenti
+Primarni agenti su glavni pomoćnici s kojima direktno komunicirate. Možete se kretati kroz njih pomoću tipke **Tab** ili vašeg konfigurisanog povezivanja tipki `switch_agent`. Ovi agenti vode vaš glavni razgovor. Pristup alatima se konfiguriše putem dozvola — na primjer, Build ima omogućene sve alate dok je Plan ograničen.
+::: tip
+Možete koristiti tipku **Tab** za prebacivanje između primarnih agenata tokom sesije.
+:::
+OpenCode dolazi sa dva ugrađena primarna agenta, **Build** i **Plan**. Hoćemo
+pogledajte ove u nastavku.
+
+---
+### Subagent
+Subagenti su specijalizovani pomoćnici koje primarni agenti mogu pozvati za određene zadatke. Možete ih i ručno pozvati **@ spominjanjem** u svojim porukama.
+OpenCode dolazi sa dva ugrađena subagenta, **General** i **Explore**. Ovo ćemo pogledati u nastavku.
+
+---
+## Embedded
+OpenCode dolazi sa dva ugrađena primarna agenta i dva ugrađena subagenta.
+
+---
+### Koristi build
+_Način_: `primary`
+Build je **podrazumevani** primarni agent sa svim omogućenim alatima. Ovo je standardni agent za razvojni rad gdje vam je potreban pun pristup operacijama datoteka i sistemskim komandama.
+
+---
+### Koristite plan
+_Način_: `primary`
+Konačan agent dizajniran za planiranje i analizu. Koristimo sistem dozvola kako bismo vam pružili veću kontrolu i spriječili neželjene promjene.
+Prema zadanim postavkama, sve sljedeće je postavljeno na `ask`:
+- `file edits`: Sva upisivanja, zakrpe i uređivanja
+- `bash`: Sve bash komande
+Ovaj agent je koristan kada želite da LLM analizira kod, predloži promjene ili kreira planove bez stvarnih modifikacija vaše baze koda.
+
+---
+### Upotreba općenito
+_Način_: `subagent`
+Agent opće namjene za istraživanje složenih pitanja i izvršavanje zadataka u više koraka. Ima potpuni pristup alatima (osim zadataka), tako da može mijenjati fajl kada je to potrebno. Koristite ovo za paralelno pokretanje više jedinica rada.
+
+---
+### Koristite explore
+_Način_: `subagent`
+Brzi agent samo za čitanje za istraživanje kodnih baza. Nije moguće mijenjati fajlove. Koristite ovo kada trebate brzo pronaći datoteke po uzorku, pretražiti kod za ključne riječi ili odgovoriti na pitanja o bazi kodova.
+
+---
+### Koristite zbijanje
+_Način_: `primary`
+Skriveni sistemski agent koji sažima dugi kontekst u manji sažetak. Pokreće se automatski kada je potrebno i ne može se odabrati u korisničkom interfejsu.
+
+---
+### Koristite naslov
+_Način_: `primary`
+Skriveni sistemski agent koji generiše kratke naslove sesija. Pokreće se automatski i ne može se odabrati u korisničkom interfejsu.
+
+---
+### Koristi sažetak
+_Način_: `primary`
+Skriveni sistemski agent koji kreira sažetke sesije. Pokreće se automatski i ne može se odabrati u korisničkom interfejsu.
+
+---
+## Upotreba
+1. Za primarne agente, koristite taster **Tab** za kretanje kroz njih tokom sesije. Također možete koristiti svoju konfiguriranu vezu tipke `switch_agent`.
+2. Subagenti se mogu pozvati:
+- **Automatski** od strane primarnih agenata za specijalizovane zadatke na osnovu njihovih opisa.
+- Ručno **@ spominjanjem** subagenta u vašoj poruci. Na primjer.
+
+```txt frame="none"
+ @general help me search for this function
+
+```
+
+3. **Navigacija između sesija**: Kada subagenti kreiraju vlastite podređene sesije, možete se kretati između roditeljske sesije i svih podređenih sesija koristeći:
+- **\+Desno** (ili vaša konfigurirana `session_child_cycle` veza) za petlju naprijed kroz roditelj → dijete1 → dijete2 → ... → roditelj
+- **\+Levo** (ili vaše konfigurirano povezivanje tipki `session_child_cycle_reverse`) za kretanje unazad kroz roditelj ← dijete1 ← dijete2 ← ... ← roditelj
+Ovo vam omogućava neprimetno prebacivanje između glavnog razgovora i rada specijalizovanog podagenta.
+
+---
+
+## Konfiguriši
+Možete prilagoditi ugrađene agente ili kreirati vlastite kroz konfiguraciju. Agenti se mogu konfigurisati na dva načina:
+
+---
+
+### JSON
+Konfigurirajte agente u svom konfiguracijskom fajlu `opencode.json`:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "agent": {
+ "build": {
+ "mode": "primary",
+ "model": "anthropic/claude-sonnet-4-20250514",
+ "prompt": "{file:./prompts/build.txt}",
+ "tools": {
+ "write": true,
+ "edit": true,
+ "bash": true
+ }
+ },
+ "plan": {
+ "mode": "primary",
+ "model": "anthropic/claude-haiku-4-20250514",
+ "tools": {
+ "write": false,
+ "edit": false,
+ "bash": false
+ }
+ },
+ "code-reviewer": {
+ "description": "Reviews code for best practices and potential issues",
+ "mode": "subagent",
+ "model": "anthropic/claude-sonnet-4-20250514",
+ "prompt": "You are a code reviewer. Focus on security, performance, and maintainability.",
+ "tools": {
+ "write": false,
+ "edit": false
+ }
+ }
+ }
+}
+```
+
+---
+
+### Markdown
+Također možete definirati agente koristeći mardown datoteke. Stavite ih u:
+- Globalno: `~/.config/opencode/agents/`
+- Po projektu: `.opencode/agents/
+
+````markdown title="~/.config/opencode/agents/review.md"
+
+---
+opis: Recenzira kod za kvalitet i najbolje prakse
+način rada: subagent
+model: anthropic/claude-sonnet-4-20250514
+temperatura: 0.1
+alati:
+ napisati: netačno
+ edit: false
+ bash: lažno
+
+---
+
+Nalazite se u načinu pregleda koda. Fokusirajte se na:
+- Kvalitet koda i najbolje prakse
+- Potencijalne greške i rubni slučajevi
+- Implikacije na performanse
+- Sigurnosna pitanja
+Dajte konstruktivne povratne informacije bez direktnih promjena.
+
+```
+
+Ime marginalne datoteke postaje ime agenta. Na primjer, `review.md` kreira `review` agenta.
+
+---
+
+## Opcije
+Pogledajmo ove opcije konfiguracije detaljno.
+
+---
+
+### Opis
+Koristite opciju `description` da pružite kratak opis onoga što agent radi i kada ga koristiti.
+
+```json title="opencode.json"
+{
+ "agent": {
+ "review": {
+ "description": "Reviews code for best practices and potential issues"
+ }
+ }
+}
+```
+
+Ovo je **obavezna** opcija konfiguracije.
+
+---
+### Temperatura
+Kontrolišite slučajnost i kreativnost odgovora LLM-a pomoću `temperature` konfiguracije.
+Niže vrijednosti čine odgovore fokusiranijim i determinističkim, dok više vrijednosti povećavaju kreativnost i varijabilnost.
+
+```json title="opencode.json"
+{
+"agent": {
+ "plan": {
+ "temperatura": 0,1 },
+"kreativno": {
+ "temperatura": 0,8 }
+ }
+}
+```
+
+Vrijednosti temperature se obično kreću od 0,0 do 1,0:
+- **0,0-0,2**: Vrlo fokusirani i deterministički odgovori, idealni za analizu i planiranje koda
+- **0,3-0,5**: Uravnoteženi odgovori sa malo kreativnosti, dobro za opšte razvojne zadatke
+- **0,6-1,0**: kreativniji i raznovrsniji odgovori, korisni za razmišljanje i istraživanje
+
+```json title="opencode.json"
+{
+ "agent": {
+ "analyze": {
+ "temperature": 0.1,
+ "prompt": "{file:./prompts/analysis.txt}"
+ },
+ "build": {
+ "temperature": 0.3
+ },
+ "brainstorm": {
+ "temperature": 0.7,
+ "prompt": "{file:./prompts/creative.txt}"
+ }
+ }
+}
+```
+
+Ako temperatura nije navedena, OpenCode koristi standardne postavke specifične za model; obično 0 za većinu modela, 0,55 za Qwen modele.
+
+---
+### Maks. stepenice
+Kontrolirajte maksimalni broj iteracija agenta koje agent može izvesti prije nego što bude prisiljen da odgovori samo tekstom. Ovo omogućava korisnicima koji žele kontrolirati troškove da postave ograničenje na akcije agenta.
+Ako ovo nije postavljeno, agent će nastaviti iterirati sve dok model ne odluči da se zaustavi ili korisnik ne prekine sesiju.
+
+```json title="opencode.json"
+{
+"agent": {
+ "brzo mislilac": {
+ "opis": "Brzo razmišljanje s ograničenim iteracijama",
+ "prompt": "Vi brzo mislite. Riješite probleme minimalnim koracima.",
+ "koraci": 5 }
+ }
+}
+```
+
+Kada se dostigne ograničenje, agent prima poseban sistemski prompt koji ga upućuje da odgovori sa rezimeom svog rada i preporučenim preostalim zadacima.
+:::oprez
+Naslijeđeno polje `maxSteps` je zastarjelo. Umjesto toga koristite `steps`.
+:::
+
+---
+
+### Onemogući
+Postavite na `true` da onemogućite agenta.
+
+```json title="opencode.json"
+{
+ "agent": {
+ "review": {
+ "disable": true
+ }
+ }
+}
+```
+
+---
+
+### Prompt
+Navedite prilagođenu sistemsku prompt datoteku za ovog agenta sa `prompt` konfiguracijom. Datoteka s promptom treba da sadrži upute specifične za svrhu agenta.
+
+```json title="opencode.json"
+{
+"agent": {
+ "recenzija": {
+ "prompt": "{file:./prompts/code-review.txt}" }
+ }
+}
+```
+
+Ova putanja je relativna u odnosu na mjesto gdje se nalazi konfiguracijski fajl. Dakle, ovo radi i za globalnu OpenCode konfiguraciju i za konfiguraciju specifične za projekat.
+
+---
+
+### Model
+Koristite `model` konfiguraciju da nadjačate model za ovog agenta. Korisno za korištenje različitih modela optimiziranih za različite zadatke. Na primjer, brži model za planiranje, sposobniji model za implementaciju.
+:::tip
+Ako ne navedete model, primarni agenti koriste [model globalno konfiguriran](/docs/config#models) dok će podagenti koristiti model primarnog agenta koji je pozvao subagenta.
+:::
+```json title="opencode.json"
+{
+"agent": {
+ "plan": {
+ "model": "anthropic/claude-haiku-4-20250514" }
+ }
+}
+```
+
+ID modela u vašoj OpenCode konfiguraciji koristi format `provider/model-id`. Na primjer, ako koristite [OpenCode Zen](/docs/zen), koristili biste `opencode/gpt-5.1-codex` za GPT 5.1 Codex.
+
+---
+
+### Uvijek
+Kontrolirajte koji su alati dostupni u ovom agentu koristeći konfiguraciju `tools`. Možete omogućiti ili onemogućiti određene alate tako što ćete ih postaviti na `true` ili `false`.
+
+```json title="opencode.json" {3-6,9-12}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "tools": {
+ "write": true,
+ "bash": true
+ },
+ "agent": {
+ "plan": {
+ "tools": {
+ "write": false,
+ "bash": false
+ }
+ }
+ }
+}
+```
+
+:::napomena
+Konfiguracija specifična za agenta poništava globalnu konfiguraciju.
+:::
+Također možete koristiti zamjenske znakove za kontrolu više alata odjednom. Na primjer, da onemogućite sve alate sa MCP servera:
+
+```json title="opencode.json"
+{
+"$schema": "https://opencode.ai/config.json",
+ "agent": {
+ "samo za čitanje": {
+ "alati": {
+ "mymcp_*": lažno,
+ "pisati": lažno,
+ "uredi": netačno }
+ }
+ }
+}
+```
+
+[Saznajte više o alatima](/docs/tools).
+
+---
+
+### Dozvole
+Možete konfigurirati dozvole za upravljanje radnjama koje agent može poduzeti. Trenutno se dozvole za alate `edit`, `bash` i `webfetch` mogu konfigurirati na:
+- `"ask"` — Zatražite odobrenje prije pokretanja alata
+- `"allow"` — Dozvoli sve operacije bez odobrenja
+- `"deny"` — Onemogućite alat
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "edit": "deny"
+ }
+}
+```
+
+Možete nadjačati ove dozvole po agentu.
+
+```json title="opencode.json" {3-5,8-10}
+{
+"$schema": "https://opencode.ai/config.json",
+ "dozvola": {
+ "edit": "odbiti" },
+"agent": {
+ "build": {
+ "dozvola": {
+ "uredi": "pitaj" }
+ }
+ }
+}
+```
+
+Također možete postaviti dozvole u Markdown agentima.
+
+```markdown title="~/.config/opencode/agents/review.md"
+---
+description: Code review without edits
+mode: subagent
+permission:
+ edit: deny
+ bash:
+ "*": ask
+ "git diff": allow
+ "git log*": allow
+ "grep *": allow
+ webfetch: deny
+---
+
+Only analyze code and suggest changes.
+```
+
+Možete postaviti dozvole za određene bash komande.
+
+```json title="opencode.json" {7}
+{
+"$schema": "https://opencode.ai/config.json",
+ "agent": {
+ "build": {
+ "dozvola": {
+ "bash": {
+ "git push": "pitaj",
+ "grep *": "dozvoli" }
+ }
+ }
+ }
+}
+```
+
+Ovo može poprimiti oblik lopte.
+
+```json title="opencode.json" {7}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "agent": {
+ "build": {
+ "permission": {
+ "bash": {
+ "git *": "ask"
+ }
+ }
+ }
+ }
+}
+```
+
+Također možete koristiti zamjenski znak `*` za kontrolu dozvola za sve komande.
+Budući da posljednje podudarno pravilo ima prednost, prvo postavite zamjenski znak `*`, a zatim navedena pravila.
+
+```json title="opencode.json" {8}
+{
+"$schema": "https://opencode.ai/config.json",
+ "agent": {
+ "build": {
+ "dozvola": {
+ "bash": {
+ "*": "pitaj",
+ "git status *": "dozvoli" }
+ }
+ }
+ }
+}
+```
+
+[Saznajte više o dozvolama](/docs/permissions).
+
+---
+
+### Mode
+Kontrolirajte način rada agenta koristeći konfiguraciju `mode`. Opcija `mode` se koristi da specificira kako se agent može koristiti.
+
+```json title="opencode.json"
+{
+ "agent": {
+ "review": {
+ "mode": "subagent"
+ }
+ }
+}
+```
+
+Opcija `mode` se može postaviti na `primary`, `subagent` ili `all`. Ako `mode` nije specificirano, podrazumevano je `all`.
+
+---
+### Skriveno
+Sakrij podagenta iz `@` menija za automatsko dovršavanje sa `hidden: true`. Korisno za interne podagente koje bi drugi agenti trebali programski pozvati samo preko Task alata.
+
+```json title="opencode.json"
+{
+"agent": {
+ "interni-pomoćnik": {
+ "mode": "subagent",
+ "skriveno": istina }
+ }
+}
+```
+
+Ovo utiče samo na vidljivost korisnika u meniju za automatsko dovršavanje. Model i dalje može pozvati skrivene agente putem alata Zadatak ako dozvole dozvoljavaju.
+:::napomena
+Odnosi se samo na `mode: subagent` agente.
+:::
+
+---
+
+### Dozvole za zadatak
+Kontrolirajte koje podagente agent može pozvati preko Task alata sa `permission.task`. Koristi glob uzorke za fleksibilno uparivanje.
+
+```json title="opencode.json"
+{
+ "agent": {
+ "orchestrator": {
+ "mode": "primary",
+ "permission": {
+ "task": {
+ "*": "deny",
+ "orchestrator-*": "allow",
+ "code-reviewer": "ask"
+ }
+ }
+ }
+ }
+}
+```
+
+Kada se postavi na `deny`, subagent se u potpunosti uklanja iz opisa alata za zadatak, tako da ga model neće pokušati pozvati.
+:::tip
+Pravila se procjenjuju po redoslijedu i **pobjeđuje **poslednje odgovarajuće pravilo**. U gornjem primjeru, `orchestrator-planner` odgovara i `*` (odbije) i `orchestrator-*` (dozvoli), ali pošto `orchestrator-*` dolazi nakon `*`, rezultat je `allow`.
+:::
+:::tip
+Korisnici uvijek mogu pozvati bilo kojeg subagenta direktno preko `@` menija za autodovršavanje, čak i ako bi dozvole za zadatak agenta to uskratile.
+:::
+
+---
+
+### Boja
+Prilagodite vizualni izgled agenta u korisničkom sučelju s opcijom `color`. Ovo utiče na to kako se agent pojavljuje u interfejsu.
+Koristite važeću heksadecimalnu boju (npr. `#FF5733`) ili boju teme: `primary`, `secondary`, `accent`, `success`, `warning`, `error`, `info`.
+
+```json title="opencode.json"
+{
+"agent": {
+ "kreativno": {
+ "boja": "#ff6b6b" },
+"code-reviewer": {
+ "boja": "akcent" }
+ }
+}
+```
+
+---
+
+### Leglo P
+Kontrolirajte raznolikost odgovora s opcijom `top_p`. Alternativa temperaturi za kontrolu nasumice.
+
+```json title="opencode.json"
+{
+ "agent": {
+ "brainstorm": {
+ "top_p": 0.9
+ }
+ }
+}
+```
+
+Vrijednosti se kreću od 0,0 do 1,0. Niže vrijednosti su više fokusirane, više vrijednosti raznovrsnije.
+
+---
+### Dodatni
+Sve druge opcije koje navedete u konfiguraciji agenta će biti **direktno proslijeđene** dobavljaču kao opcije modela. Ovo vam omogućava da koristite karakteristike i parametre specifične za provajdera.
+Na primjer, sa OpenAI-jevim modelima rezonovanja, možete kontrolisati napor rasuđivanja:
+
+```json title="opencode.json" {6,7}
+{
+"agent": {
+ "duboki mislilac": {
+ "opis": "Agent koji koristi veliki napor u razmišljanju za složene probleme",
+ "model": "openai/gpt-5",
+ "reasoningEffort": "visoko",
+ "textVerbosity": "niska" }
+ }
+}
+```
+
+Ove dodatne opcije su specifične za model i dobavljača. U dokumentaciji vašeg provajdera provjerite dostupne parametre.
+:::tip
+Pokrenite `opencode models` da vidite listu dostupnih modela.
+:::
+
+---
+
+## Kreirajte agente
+Možete kreirati nove agente koristeći sljedeću naredbu:
+
+```bash
+opencode agent create
+```
+
+Ova interaktivna komanda će:
+1. Pitajte gdje da sačuvate agenta; globalno ili specifično za projekat.
+2. Opis onoga što agent treba da uradi.
+3. Generirajte odgovarajući sistemski prompt i identifikator.
+4. Omogućite vam da odaberete kojim alatima agent može pristupiti.
+5. Konačno, kreirajte markdown datoteku s konfiguracijom agenta.
+
+---
+## Slučajevi upotrebe
+Evo nekoliko uobičajenih slučajeva upotrebe različitih agenata.
+- **Build agent**: Potpuni razvojni rad sa svim omogućenim alatima
+- **Agent za plan**: Analiza i planiranje bez unošenja promjena
+- **Agent za pregled**: Pregled koda sa pristupom samo za čitanje plus alati za dokumentaciju
+- **Agent za otklanjanje grešaka**: Fokusiran na istragu sa omogućenim bash i alatima za čitanje
+- **Docs agent**: Pisanje dokumentacije sa operacijama datoteka, ali bez sistemskih naredbi
+
+---
+## Primjeri
+Evo nekoliko primjera agenata koji bi vam mogli biti korisni.
+::: momak
+Imate li agenta kojeg biste željeli podijeliti? [Pošalji PR](https://github.com/anomalyco/opencode).
+:::
+
+---
+
+### Agent za dokumentaciju
+
+```markdown title="~/.config/opencode/agents/docs-writer.md"
+
+---
+opis: Piše i vodi projektnu dokumentaciju
+način rada: subagent
+alati:
+ bash: lažno
+
+---
+
+Vi ste tehnički pisac. Kreirajte jasnu, sveobuhvatnu dokumentaciju.
+Fokusirajte se na:
+- Jasna objašnjenja
+- Pravilna struktura
+- Primjeri kodova
+- Jezik prilagođen korisniku
+
+```
+
+---
+
+### Sigurnosni revizor
+
+```markdown title="~/.config/opencode/agents/security-auditor.md"
+---
+description: Performs security audits and identifies vulnerabilities
+mode: subagent
+tools:
+ write: false
+ edit: false
+---
+
+You are a security expert. Focus on identifying potential security issues.
+
+Look for:
+
+- Input validation vulnerabilities
+- Authentication and authorization flaws
+- Data exposure risks
+- Dependency vulnerabilities
+- Configuration security issues
+```
diff --git a/packages/web/src/content/docs/bs/cli.mdx b/packages/web/src/content/docs/bs/cli.mdx
new file mode 100644
index 000000000..f151024b3
--- /dev/null
+++ b/packages/web/src/content/docs/bs/cli.mdx
@@ -0,0 +1,540 @@
+---
+title: CLI
+description: OpenCode CLI opcije i naredbe.
+---
+
+import { Tabs, TabItem } from "@astrojs/starlight/components"
+
+OpenCode CLI po defaultu pokreće [TUI](/docs/tui) kada se pokrene bez ikakvih argumenata.
+
+```bash
+opencode
+
+```
+
+Ali takođe prihvata komande kao što je dokumentovano na ovoj stranici. Ovo vam omogućava programsku interakciju sa OpenCodeom.
+
+```bash
+opencode run "Explain how closures work in JavaScript"
+```
+
+---
+
+### tui
+Pokrenite korisnički interfejs OpenCode terminala.
+
+```bash
+opencode [project]
+
+```
+
+#### Zastave
+| Zastava | Kratko | Opis || ------------ | ----- | ------------------------------------------ |
+| `--continue` | `-c` | Nastavite posljednju sesiju |
+| `--session` | `-s` | ID sesije za nastavak |
+| `--prompt` | | Uputstvo za upotrebu |
+| `--model` | `-m` | Model za korištenje u obliku dobavljača/modela |
+| `--agent` | | Agent za korištenje |
+| `--port` | | Port za slušanje na |
+| `--hostname` | | Slušajte ime hosta |
+
+---
+
+## komandante
+OpenCode CLI takođe ima sledeće komande.
+
+---
+
+### agent
+Upravljajte agentima za OpenCode.
+
+```bash
+opencode agent [command]
+```
+
+---
+
+### prilog
+Priključite terminal na već pokrenut OpenCode backend server pokrenut putem `serve` ili `web` komandi.
+
+```bash
+opencode attach [url]
+
+```
+
+Ovo omogućava korištenje TUI-ja sa udaljenim OpenCode backend-om. na primjer:
+
+```bash
+# Start the backend server for web/mobile access
+opencode web --port 4096 --hostname 0.0.0.0
+
+# In another terminal, attach the TUI to the running backend
+opencode attach http://10.20.30.40:4096
+```
+
+#### Zastave
+| Zastava | Kratko | Opis || ----------- | ----- | --------------------------------- |
+| `--dir` | | Radni direktorij za pokretanje TUI u |
+| `--session` | `-s` | ID sesije za nastavak |
+
+---
+#### kreiraj
+Kreirajte novog agenta s prilagođenom konfiguracijom.
+
+```bash
+opencode agent create
+
+```
+
+Ova komanda će vas voditi kroz kreiranje novog agenta sa prilagođenim sistemskim promptom i konfiguracijom alata.
+
+---
+
+#### lista
+Navedite sve dostupne agente.
+
+```bash
+opencode agent list
+```
+
+---
+
+### auth
+Naredba za upravljanje vjerodajnicama i prijavom za provajdere.
+
+```bash
+opencode auth [command]
+
+```
+
+---
+
+#### aplikacija
+OpenCode pokreće lista provajdera na [Models.dev](https://models.dev), tako da možete koristiti `opencode auth login` da konfigurirate API ključeve za bilo kojeg provajdera kojeg želite koristiti. Ovo je pohranjeno u `~/.local/share/opencode/auth.json`.
+
+```bash
+opencode auth login
+```
+
+Kada se OpenCode pokrene, učitava dobavljače iz datoteke vjerodajnica. I ako postoje neki ključevi definirani u vašim okruženjima ili `.env` fajl u vašem projektu.
+
+---
+#### lista
+Navodi sve autentifikovane dobavljače pohranjene u datoteci akreditiva.
+
+```bash
+opencode auth lista
+
+```
+
+Ili kratka verzija.
+
+```bash
+opencode auth ls
+```
+
+---
+
+#### odjava
+Odjavljuje vas s provajdera tako što ga briše iz datoteke vjerodajnica.
+
+```bash
+opencode auth logout
+
+```
+
+---
+
+### github
+Upravljajte GitHub agentom za automatizaciju spremišta.
+
+```bash
+opencode github [command]
+```
+
+---
+
+#### instaliraj
+Instalirajte GitHub agenta u svoje spremište.
+
+```bash
+opencode github instalacija
+
+```
+
+Ovo postavlja neophodni tok rada GitHub Actions i vodi vas kroz proces konfiguracije. [Saznajte više](/docs/github).
+
+---
+
+#### trči
+Pokrenite GitHub agent. Ovo se obično koristi u GitHub akcijama.
+
+```bash
+opencode github run
+```
+
+##### Zastave
+| Zastava | Opis || --------- | -------------------------------------- |
+| `--event` | GitHub lažni događaj za pokretanje agenta za |
+| `--token` | GitHub token ličnog pristupa |
+
+---
+### mcp
+Upravljajte serverima protokola konteksta modela.
+
+```bash
+opencode mcp [command]
+
+```
+
+---
+
+#### dodaj
+Dodajte MCP server svojoj konfiguraciji.
+
+```bash
+opencode mcp add
+```
+
+Ova komanda će vas voditi kroz dodavanje lokalnog ili udaljenog MCP servera.
+
+---
+#### lista
+Navedite sve konfigurirane MCP servere i njihov status veze.
+
+```bash
+opencode mcp lista
+
+```
+
+Ili koristite kratku verziju.
+
+```bash
+opencode mcp ls
+```
+
+---
+
+#### auth
+Autentifikujte se sa MCP serverom koji je omogućen za OAuth.
+
+```bash
+opencode mcp auth [name]
+
+```
+
+Ako ne navedete ime servera, od vas će biti zatraženo da izaberete neki od dostupnih servera koji podržavaju OAuth.
+Također možete navesti servere koji podržavaju OAuth i njihov status provjere autentičnosti.
+
+```bash
+opencode mcp auth list
+```
+
+Ili koristite kratku verziju.
+
+```bash
+opencode mcp auth ls
+
+```
+
+---
+
+#### odjava
+Uklonite OAuth vjerodajnice za MCP server.
+
+```bash
+opencode mcp logout [name]
+```
+
+---
+
+#### otklanjanje grešaka
+Otklanjanje grešaka OAuth veze sa MCP serverom.
+
+```bash
+opencode mcp debug
+
+```
+
+---
+
+### model
+Navedite sve dostupne modele konfiguriranih provajdera.
+
+```bash
+opencode models [provider]
+```
+
+Ova naredba prikazuje sve modele dostupne kod vaših konfiguriranih provajdera u formatu `provider/model`.
+Ovo je korisno za pronalaženje tačnog naziva modela za korištenje u [vašoj konfiguraciji](/docs/config/).
+Opciono možete proslijediti ID provajdera za filtriranje modela po tom dobavljaču.
+
+```bash
+opencode models anthropic
+
+```
+
+#### Zastave
+| Zastava | Opis || ----------- | ------------------------------------------------------------ |
+| `--refresh` | Osvježite predmemoriju modela sa models.dev |
+| `--verbose` | Koristite detaljniji izlaz modela (uključuje metapodatke poput troškova) |
+Koristite `--refresh` zastavicu da ažurirate keširanu listu modela. Ovo je korisno kada su novi modeli dodani provajderu i želite da ih vidite u OpenCode-u.
+
+```bash
+opencode models --refresh
+```
+
+---
+
+### trči
+Pokrenite opencode u neinteraktivnom modu tako što ćete direktno proslijediti prompt.
+
+```bash
+opencode run [message..]
+
+```
+
+Ovo je korisno za skriptiranje, automatizaciju ili kada želite brz odgovor bez pokretanja punog TUI-ja. Na primjer.
+
+```bash "opencode run"
+opencode run Explain the use of context in Go
+```
+
+Također možete priključiti pokrenutu `opencode serve` instancu kako biste izbjegli vrijeme hladnog pokretanja MCP servera pri svakom pokretanju:
+
+```bash
+# Start a headless server in one terminal
+opencode serve
+# U drugom terminalu, pokrenite komande koje se vezuju za njega
+opencode run --attach http://localhost:4096 "Objasni async/await u JavaScriptu"
+
+```
+
+#### Zastave
+| Zastava | Kratko | Opis || ------------ | ----- | ------------------------------------------------------------------ |
+| `--command` | | Naredba za pokretanje, koristite poruku za args |
+| `--continue` | `-c` | Nastavite posljednju sesiju |
+| `--session` | `-s` | ID sesije za nastavak |
+| `--share` | | Podijelite sesiju |
+| `--model` | `-m` | Model za korištenje u obliku provider/model |
+| `--agent` | | Agent za korištenje |
+| `--file` | `-f` | Fajlovi koje treba priložiti poruci |
+| `--format` | | Format: default (formatiran) ili json (sirovi JSON događaji) |
+| `--title` | | Naslov sesije (koristi skraćeni prompt ako nije navedena vrijednost) |
+| `--attach` | | Priključite na pokrenuti opencode server (npr. http://localhost:4096) |
+| `--port` | | Port za lokalni server (zadano na nasumični port) |
+
+---
+
+### poslužiti
+Pokrenite OpenCode server bez glave za pristup API-ju. Pogledajte [server docs](/docs/server) za kompletan HTTP interfejs.
+
+```bash
+opencode serve
+```
+
+Ovo pokreće HTTP server koji pruža API pristup funkcionalnosti otvorenog koda bez TUI interfejsa. Postavite `OPENCODE_SERVER_PASSWORD` da omogućite HTTP osnovnu auth (korisničko ime je zadano na `opencode`).
+#### Zastave
+| Zastava | Opis || ------------ | ------------------------------------------ |
+| `--port` | Port za slušanje na |
+| `--hostname` | Ime hosta za slušanje |
+| `--mdns` | Omogući mDNS otkrivanje |
+| `--cors` | Dodatni izvor(a) pretraživača koji dozvoljavaju CORS |
+
+---
+### sesija
+Upravljajte OpenCode sesijama.
+
+```bash
+opencode sesija [naredba]
+
+```
+
+---
+
+#### lista
+Navedite sve OpenCode sesije.
+
+```bash
+opencode session list
+```
+
+##### Zastave
+| Zastava | Kratko | Opis || ------------- | ----- | ------------------------------------ |
+| `--max-count` | `-n` | Ograničenje na N najnovijih sesija |
+| `--format` | | Izlazni format: tablica ili json (tabela) |
+
+---
+### statistika
+Prikaži statistiku upotrebe tokena i troškova za vaše OpenCode sesije.
+
+```bash
+opencode stats
+
+```
+
+#### Zastave
+| Zastava | Opis || ----------- | ------------------------------------------------------------------------------------- |
+| `--days` | Prikaži statistiku za zadnjih N dana (sva vremena) |
+| `--tools` | Broj alata za prikaz (svi) |
+| `--models` | Prikaži raščlambu korištenja modela (skriveno prema zadanim postavkama). Proslijedite broj za prikaz vrha N |
+| `--project` | Filtriraj po projektu (svi projekti, prazan niz: trenutni projekt) |
+
+---
+
+### izvoz
+Izvezite podatke sesije kao JSON.
+
+```bash
+opencode export [sessionID]
+```
+
+Ako ne unesete ID sesije, od vas će biti zatraženo da odaberete neku od dostupnih sesija.
+
+---
+### uvoz
+Uvezite podatke sesije iz JSON datoteke ili OpenCode dijeljenog URL-a.
+
+```bash
+opencode import
+
+```
+
+Možete uvesti iz lokalne datoteke ili OpenCode dijeljenog URL-a.
+
+```bash
+opencode import session.json
+opencode import https://opncd.ai/s/abc123
+```
+
+---
+
+### web
+Pokrenite OpenCode server bez glave sa web interfejsom.
+
+```bash
+opencode web
+
+```
+
+Ovo pokreće HTTP server i otvara web pretraživač za pristup OpenCodeu preko web interfejsa. Postavite `OPENCODE_SERVER_PASSWORD` da omogućite HTTP osnovnu auth (korisničko ime je zadano na `opencode`).
+#### Zastave
+| Zastava | Opis || ------------ | ------------------------------------------ |
+| `--port` | Port za slušanje na |
+| `--hostname` | Ime hosta za slušanje |
+| `--mdns` | Omogući mDNS otkrivanje |
+| `--cors` | Dodatni izvor(a) pretraživača koji dozvoljavaju CORS |
+
+---
+
+### acp
+Pokrenite ACP (Agent Client Protocol) server.
+
+```bash
+opencode acp
+```
+
+Ova komanda pokreće ACP server koji komunicira preko stdin/stdout koristeći nd-JSON.
+#### Zastave
+| Zastava | Opis || ------------ | --------------------- |
+| `--cwd` | Radni imenik |
+| `--port` | Port za slušanje na |
+| `--hostname` | Slušajte ime hosta |
+
+---
+### deinstaliraj
+Deinstalirajte OpenCode i uklonite sve povezane datoteke.
+
+```bash
+opencode uninstall
+
+```
+
+#### Zastave
+| Zastava | Kratko | Opis || --------------- | ----- | ------------------------------------------- |
+| `--keep-config` | `-c` | Čuvajte konfiguracijske datoteke |
+| `--keep-data` | `-d` | Čuvajte podatke i snimke sesije |
+| `--dry-run` | | Pokažite šta bi bilo uklonjeno bez uklanjanja |
+| `--force` | `-f` | Preskoči upite za potvrdu |
+
+---
+
+### upgrade
+Ažurira opencode na najnoviju verziju ili određenu verziju.
+
+```bash
+opencode upgrade [target]
+```
+
+Za nadogradnju na najnoviju verziju.
+
+```bash
+opencode upgrade
+
+```
+
+Za nadogradnju na određenu verziju.
+
+```bash
+opencode upgrade v0.1.48
+```
+
+#### Zastave
+| Zastava | Kratko | Opis || ---------- | ----- | ------------------------------------------------------------------ |
+| `--method` | `-m` | Korišteni način instalacije; curl, npm, pnpm, bun, brew |
+
+---
+## Globalne zastave
+CLI otvorenog koda uzima sljedeće globalne zastavice.
+| Zastava | Kratko | Opis || -------------- | ----- | ------------------------------------ |
+| `--help` | `-h` | Prikaži pomoć |
+| `--version` | `-v` | Odštampaj broj verzije |
+| `--print-logs` | | Ispis zapisnika u stderr |
+| `--log-level` | | Nivo dnevnika (DEBUG, INFO, WARN, ERROR) |
+
+---
+## Varijable okruženja
+OpenCode se može konfigurirati pomoću varijabli okruženja.
+| Varijabilna | Vrsta | Opis || ------------------------------------- | ------- | ------------------------------------------------- |
+| `OPENCODE_AUTO_SHARE` | boolean | Automatski dijeli sesije |
+| `OPENCODE_GIT_BASH_PATH` | string | Putanja do Git Bash izvršne datoteke na Windows |
+| `OPENCODE_CONFIG` | string | Put do konfiguracionog fajla |
+| `OPENCODE_CONFIG_DIR` | string | Put do konfiguracijskog direktorija |
+| `OPENCODE_CONFIG_CONTENT` | string | Inline json konfiguracijski sadržaj |
+| `OPENCODE_DISABLE_AUTOUPDATE` | boolean | Onemogući automatske provjere ažuriranja |
+| `OPENCODE_DISABLE_PRUNE` | boolean | Onemogući orezivanje starih podataka |
+| `OPENCODE_DISABLE_TERMINAL_TITLE` | boolean | Onemogući automatsko ažuriranje naslova terminala |
+| `OPENCODE_PERMISSION` | string | Umetnuta json konfiguracija dozvola |
+| `OPENCODE_DISABLE_DEFAULT_PLUGINS` | boolean | Onemogući podrazumevane dodatke |
+| `OPENCODE_DISABLE_LSP_DOWNLOAD` | boolean | Onemogući automatsko preuzimanje LSP servera |
+| `OPENCODE_ENABLE_EXPERIMENTAL_MODELS` | boolean | Omogući eksperimentalne modele |
+| `OPENCODE_DISABLE_AUTOCOMPACT` | boolean | Onemogući automatsko sažimanje konteksta |
+| `OPENCODE_DISABLE_CLAUDE_CODE` | boolean | Onemogući čitanje sa `.claude` (prompt + vještine) |
+| `OPENCODE_DISABLE_CLAUDE_CODE_PROMPT` | boolean | Onemogući čitanje `~/.claude/CLAUDE.md` |
+| `OPENCODE_DISABLE_CLAUDE_CODE_SKILLS` | boolean | Onemogući učitavanje `.claude/skills` |
+| `OPENCODE_DISABLE_MODELS_FETCH` | boolean | Onemogući dohvaćanje modela iz udaljenih izvora |
+| `OPENCODE_FAKE_VCS` | string | Lažni VCS provajder za potrebe testiranja |
+| `OPENCODE_DISABLE_FILETIME_CHECK` | boolean | Onemogući provjeru vremena datoteke radi optimizacije |
+| `OPENCODE_CLIENT` | string | Identifikator klijenta (zadano na `cli`) |
+| `OPENCODE_ENABLE_EXA` | boolean | Omogući Exa alate za web pretraživanje |
+| `OPENCODE_SERVER_PASSWORD` | string | Omogući osnovnu autorizaciju za `OPENCODE_GIT_BASH_PATH`/`OPENCODE_CONFIG` |
+| `OPENCODE_SERVER_USERNAME` | string | Poništi osnovno korisničko ime autentifikacije (zadano `opencode`) |
+| `OPENCODE_MODELS_URL` | string | Prilagođeni URL za dohvaćanje konfiguracije modela |
+
+---
+### Eksperimentalno
+Ove varijable okruženja omogućavaju eksperimentalne karakteristike koje se mogu promijeniti ili ukloniti.
+| Varijabilna | Vrsta | Opis || ----------------------------------------------- | ------- | --------------------------------------- |
+| `OPENCODE_EXPERIMENTAL` | boolean | Omogući sve eksperimentalne funkcije |
+| `OPENCODE_EXPERIMENTAL_ICON_DISCOVERY` | boolean | Omogući otkrivanje ikona |
+| `OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT` | boolean | Onemogući kopiranje pri odabiru u TUI |
+| `OPENCODE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS` | broj | Zadano vremensko ograničenje za bash komande u ms |
+| `OPENCODE_EXPERIMENTAL_OUTPUT_TOKEN_MAX` | broj | Maksimalni izlazni tokeni za LLM odgovore |
+| `OPENCODE_EXPERIMENTAL_FILEWATCHER` | boolean | Omogući praćenje datoteka za cijeli dir |
+| `OPENCODE_EXPERIMENTAL_OXFMT` | boolean | Omogući oxfmt formatter |
+| `OPENCODE_EXPERIMENTAL_LSP_TOOL` | boolean | Omogući eksperimentalni LSP alat |
+| `OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER` | boolean | Onemogući praćenje datoteka |
+| `OPENCODE_EXPERIMENTAL_EXA` | boolean | Omogući eksperimentalne Exa funkcije |
+| `OPENCODE_EXPERIMENTAL_LSP_TY` | boolean | Omogući eksperimentalnu provjeru tipa LSP |
+| `OPENCODE_EXPERIMENTAL_MARKDOWN` | boolean | Omogući eksperimentalne funkcije smanjenja |
+| `OPENCODE_EXPERIMENTAL_PLAN_MODE` | boolean | Omogući režim plana |
\ No newline at end of file
diff --git a/packages/web/src/content/docs/bs/commands.mdx b/packages/web/src/content/docs/bs/commands.mdx
new file mode 100644
index 000000000..8a49979f7
--- /dev/null
+++ b/packages/web/src/content/docs/bs/commands.mdx
@@ -0,0 +1,299 @@
+---
+title: komandant
+description: Kreirajte prilagođene komande za zadatke koji se ponavljaju.
+---
+
+Prilagođene komande vam omogućavaju da odredite prompt koji želite da pokrenete kada se ta naredba izvrši u TUI-ju.
+
+```bash frame="none"
+/my-command
+
+```
+
+Prilagođene komande su dodatak ugrađenim komandama kao što su `/init`, `/undo`, `/redo`, `/share`, `/help`. [Saznajte više](/docs/tui#commands).
+
+---
+
+## Kreirajte komandne fajlove
+Kreirajte mardown fajlove u direktorijumu `commands/` da definišete prilagođene komande.
+Kreiraj `.opencode/commands/test.md`:
+
+```md title=".opencode/commands/test.md"
+---
+description: Run tests with coverage
+agent: build
+model: anthropic/claude-3-5-sonnet-20241022
+---
+
+Run the full test suite with coverage report and show any failures.
+Focus on the failing tests and suggest fixes.
+```
+
+Frontmatter definira svojstva komande. Sadržaj postaje predložak.
+Koristite komandu tako što ćete upisati `/` nakon čega slijedi naziv komande.
+
+```bash frame="none"
+"/test"
+
+```
+
+---
+
+## Konfiguriši
+Možete dodati prilagođene komande kroz OpenCode konfiguraciju ili kreiranjem markdown datoteka u direktoriju `commands/`.
+
+---
+
+### JSON
+Koristite opciju `command` u svom OpenCode [config](/docs/config):
+
+```json title="opencode.jsonc" {4-12}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "command": {
+ // This becomes the name of the command
+ "test": {
+ // This is the prompt that will be sent to the LLM
+ "template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes.",
+ // This is shown as the description in the TUI
+ "description": "Run tests with coverage",
+ "agent": "build",
+ "model": "anthropic/claude-3-5-sonnet-20241022"
+ }
+ }
+}
+```
+
+Sada možete pokrenuti ovu naredbu u TUI:
+
+```bash frame="none"
+/test
+
+```
+
+---
+
+### Markdown
+Također možete definirati komande koristeći mardown datoteke. Stavite ih u:
+- Globalno: `~/.config/opencode/commands/`
+- Po projektu: `.opencode/commands/
+
+````markdown title="~/.config/opencode/commands/test.md"
+---
+description: Run tests with coverage
+agent: build
+model: anthropic/claude-3-5-sonnet-20241022
+---
+
+Run the full test suite with coverage report and show any failures.
+Focus on the failing tests and suggest fixes.
+```
+
+Ime datoteke za označavanje postaje ime naredbe. Na primjer, `test.md` dozvoljava
+pokrećeš:
+
+```bash frame="none"
+/test
+
+```
+
+---
+
+## Prompt config
+Promptovi za prilagođene komande podržavaju nekoliko posebnih čuvara mjesta i sintakse.
+
+---
+
+### Argumenti
+Proslijedite argumente naredbama koristeći čuvar mjesta `$ARGUMENTS`.
+
+```md title=".opencode/commands/component.md"
+---
+description: Create a new component
+---
+
+Create a new React component named $ARGUMENTS with TypeScript support.
+Include proper typing and basic structure.
+```
+
+Pokrenite naredbu s argumentima:
+
+```bash frame="none"
+/componentButton
+
+```
+
+I `$ARGUMENTS` će biti zamijenjen sa `Button`.
+Također možete pristupiti pojedinačnim argumentima koristeći pozicione parametre:
+- `$1` - Prvi argument
+- `$2` - Drugi argument
+- `$3` - Treći argument
+- I tako dalje...
+na primjer:
+
+```md title=".opencode/commands/create-file.md"
+---
+description: Create a new file with content
+---
+
+Create a file named $1 in the directory $2
+with the following content: $3
+```
+
+Pokrenite naredbu:
+
+```bash frame="none"
+/create-file config.json src "{ \"key\": \"value\" }"
+
+```
+
+Ovo zamjenjuje:
+- `$1` do `config.json`
+- `$2` do `src`
+- `$3` do `{ "key": "value" }`
+
+---
+
+### Izlaz ljuske
+Koristite _!`command`_ da ubacite [bash command](/docs/tui#bash-commands) izlaz u svoj prompt.
+Na primjer, da kreirate prilagođenu naredbu koja analizira pokrivenost testom:
+
+```md title=".opencode/commands/analyze-coverage.md"
+---
+description: Analyze test coverage
+---
+
+Here are the current test results:
+!`npm test`
+
+Based on these results, suggest improvements to increase coverage.
+```
+
+Ili da vidite nedavne promjene:
+
+```md title=".opencode/commands/review-changes.md"
+
+---
+opis: Pregledajte nedavne promjene
+
+---
+
+Nedavna git urezivanja:
+!`git log --oneline -10`
+Pregledajte ove promjene i predložite bilo kakva poboljšanja.
+
+```
+
+Naredbe se pokreću u korijenskom direktoriju vašeg projekta i njihov izlaz postaje dio prompta.
+
+---
+
+### Reference fajlova
+Uključite datoteke u svoju naredbu koristeći `@` nakon čega slijedi naziv datoteke.
+
+```md title=".opencode/commands/review-component.md"
+---
+description: Review component
+---
+
+Review the component in @src/components/Button.tsx.
+Check for performance issues and suggest improvements.
+```
+
+Sadržaj datoteke se automatski uključuje u prompt.
+
+---
+## Opcije
+Pogledajmo detaljno opcije konfiguracije.
+
+---
+### Template
+Opcija `template` definira prompt koji će biti poslan LLM-u kada se naredba izvrši.
+
+```json title="opencode.json"
+{
+"komanda": {
+ "test": {
+ "template": "Pokrenite kompletan testni paket sa izvještajem o pokrivenosti i pokažite sve greške.\nFokusirajte se na neuspjele testove i predložite popravke." }
+ }
+}
+```
+
+Ovo je **obavezna** opcija konfiguracije.
+
+---
+
+### Opis
+Koristite opciju `description` da pružite kratak opis onoga što naredba radi.
+
+```json title="opencode.json"
+{
+ "command": {
+ "test": {
+ "description": "Run tests with coverage"
+ }
+ }
+}
+```
+
+Ovo se prikazuje kao opis u TUI-u kada unesete naredbu.
+
+---
+### Agent
+Koristite `agent` konfiguraciju da opciono odredite koji [agent](/docs/agents) treba da izvrši ovu naredbu.
+Ako je ovo [subagent](/docs/agents/#subagents) naredba će po defaultu pokrenuti pozivanje subagenta.
+Da onemogućite ovo ponašanje, postavite `subtask` na `false`.
+
+```json title="opencode.json"
+{
+"komanda": {
+ "recenzija": {
+ "agent": "plan" }
+ }
+}
+```
+
+Ovo je **opciona** opcija konfiguracije. Ako nije navedeno, podrazumevano je vaš trenutni agent.
+
+---
+
+### Subdatatak
+Koristite `subtask` boolean da prisilite naredbu da pokrene [subagent](/docs/agents/#subagents) pozivanje.
+Ovo je korisno ako želite da naredba ne zagađuje vaš primarni kontekst i da će **primorati** agenta da djeluje kao subagent,
+čak i ako je `mode` postavljeno na `primary` u konfiguraciji [agent](/docs/agents).
+
+```json title="opencode.json"
+{
+ "command": {
+ "analyze": {
+ "subtask": true
+ }
+ }
+}
+```
+
+Ovo je **opciona** opcija konfiguracije.
+
+---
+### Model
+Koristite `model` konfiguraciju da nadjačate zadani model za ovu naredbu.
+
+```json title="opencode.json"
+{
+"komanda": {
+ "analizirati": {
+ "model": "antropski/claude-3-5-sonnet-20241022" }
+ }
+}
+```
+
+Ovo je **opciona** opcija konfiguracije.
+
+---
+
+## Embedded
+opencode uključuje nekoliko ugrađenih naredbi kao što su `/init`, `/undo`, `/redo`, `/share`, `/help`; [saznaj više](/docs/tui#commands).
+:::napomena
+Prilagođene komande mogu nadjačati ugrađene komande.
+:::
+Ako definirate prilagođenu naredbu s istim imenom, ona će nadjačati ugrađenu naredbu.
\ No newline at end of file
diff --git a/packages/web/src/content/docs/bs/config.mdx b/packages/web/src/content/docs/bs/config.mdx
new file mode 100644
index 000000000..e3d289b23
--- /dev/null
+++ b/packages/web/src/content/docs/bs/config.mdx
@@ -0,0 +1,657 @@
+---
+title: Config
+description: Korištenje OpenCode JSON konfiguracije.
+---
+
+Možete konfigurirati OpenCode koristeći JSON konfiguracijski fajl.
+
+---
+
+## Format
+
+OpenCode podržava i **JSON** i **JSONC** (JSON sa komentarima) formate.
+
+```jsonc title="opencode.jsonc"
+{
+"$schema": "https://opencode.ai/config.json",
+ // Konfiguracija teme
+ "tema": "otvoreni kod",
+ "model": "antropski/claude-sonnet-4-5",
+ "automatsko ažuriranje": istina,}
+```
+
+---
+
+## Lokacije
+
+Možete postaviti svoju konfiguraciju na nekoliko različitih lokacija i one imaju a
+drugačiji redosled prioriteta.
+:::napomena
+Konfiguracijski fajlovi su **spojeni zajedno**, a ne zamijenjeni.
+:::
+Konfiguracijski fajlovi se spajaju, ne zamjenjuju. Kombiniraju se postavke sa sljedećih konfiguracijskih lokacija. Kasnije konfiguracije poništavaju prethodne samo za konfliktne ključeve. Nekonfliktne postavke iz svih konfiguracija su sačuvane.
+Na primjer, ako vaša globalna konfiguracija postavlja `theme: "opencode"` i `autoupdate: true`, a vaša projektna konfiguracija postavlja `model: "anthropic/claude-sonnet-4-5"`, konačna konfiguracija će uključivati sve tri postavke.
+
+---
+
+### Redoslijed prioriteta
+
+Izvori konfiguracije se učitavaju ovim redoslijedom (kasniji izvori poništavaju ranije):
+
+1. **Udaljena konfiguracija** (od `.well-known/opencode`) - organizacione postavke
+2. **Globalna konfiguracija** (`~/.config/opencode/opencode.json`) - korisničke postavke
+3. **Prilagođena konfiguracija** (`OPENCODE_CONFIG` env var) - prilagođena zaobilaženja
+4. **Konfiguracija projekta** (`opencode.json` u projektu) - postavke specifične za projekat
+5. **`.opencode` direktoriji** - agenti, komande, dodaci
+6. **Inline config** (`OPENCODE_CONFIG_CONTENT` env var) - runtime nadjačava
+ To znači da konfiguracije projekta mogu nadjačati globalne zadane postavke, a globalne konfiguracije mogu nadjačati postavke udaljene organizacije.
+ :::napomena
+ Direktoriji `.opencode` i `~/.config/opencode` koriste **imena u množini** za poddirektorije: `agents/`, `commands/`, `modes/`, `plugins/`, `skills/`, `tools/` i `themes/`. Pojedinačna imena (npr. `agent/`) su također podržana za kompatibilnost unatrag.
+ :::
+
+---
+
+### Daljinski
+
+Organizacije mogu pružiti zadanu konfiguraciju preko `.well-known/opencode` krajnje točke. Ovo se automatski preuzima kada se autentifikujete kod provajdera koji to podržava.
+Prvo se učitava udaljena konfiguracija koja služi kao osnovni sloj. Svi ostali izvori konfiguracije (globalni, projektni) mogu nadjačati ove zadane postavke.
+Na primjer, ako vaša organizacija nudi MCP servere koji su po defaultu onemogućeni:
+
+```json title="Remote config from .well-known/opencode"
+{
+ "mcp": {
+ "jira": {
+ "type": "remote",
+ "url": "https://jira.example.com/mcp",
+ "enabled": false
+ }
+ }
+}
+```
+
+Možete omogućiti određene servere u vašoj lokalnoj konfiguraciji:
+
+```json title="opencode.json"
+{
+"mcp": {
+ "jira": {
+ "tip": "daljinski",
+ "url": "https://jira.example.com/mcp",
+ "omogućeno": istina }
+ }
+}
+```
+
+---
+
+### Global
+
+Postavite svoju globalnu OpenCode konfiguraciju u `~/.config/opencode/opencode.json`. Koristite globalnu konfiguraciju za korisničke preferencije kao što su teme, provajderi ili veze tipki.
+Globalna konfiguracija poništava zadane postavke udaljene organizacije.
+
+---
+
+### Nakon projekta
+
+Dodajte `opencode.json` u korijen projekta. Konfiguracija projekta ima najveći prioritet među standardnim konfiguracijskim datotekama - ona nadjačava globalne i udaljene konfiguracije.
+::: tip
+Postavite specifičnu konfiguraciju projekta u korijen vašeg projekta.
+:::
+Kada se OpenCode pokrene, traži konfiguracijsku datoteku u trenutnom direktoriju ili prelazi do najbližeg Git direktorija.
+Ovo je također sigurno provjeriti u Git i koristi istu shemu kao globalna.
+
+---
+
+### Custom track
+
+Navedite prilagođenu putanju konfiguracijske datoteke koristeći varijablu okruženja `OPENCODE_CONFIG`.
+
+```bash
+export OPENCODE_CONFIG=/path/to/my/custom-config.json
+opencode run "Hello world"
+```
+
+Prilagođena konfiguracija se učitava između globalne i projektne konfiguracije po redoslijedu prioriteta.
+
+---
+
+### Prilagođeni imenik
+
+Navedite prilagođeni konfiguracijski direktorij koristeći `OPENCODE_CONFIG_DIR`
+varijabla okruženja. U ovom direktoriju će se tražiti agenti, komande,
+modove i dodatke baš kao standardni `.opencode` direktorij, i trebali bi
+prate istu strukturu.
+
+```bash
+export OPENCODE_CONFIG_DIR=/path/to/my/config-directory
+opencode run "Hello world"
+
+```
+
+Prilagođeni direktorij se učitava nakon direktorija globalne konfiguracije i `.opencode`, tako da **može nadjačati** njihove postavke.
+
+---
+
+## Shema
+
+Konfiguracijski fajl ima šemu koja je definirana u [**`opencode.ai/config.json`**](https://opencode.ai/config.json).
+Vaš uređivač bi trebao biti u mogućnosti da potvrdi i autodovršava na osnovu šeme.
+
+---
+
+### TUI
+
+Možete konfigurirati postavke specifične za TUI putem opcije `tui`.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "tui": {
+ "scroll_speed": 3,
+ "scroll_acceleration": {
+ "enabled": true
+ },
+ "diff_style": "auto"
+ }
+}
+```
+
+Dostupne opcije:
+
+- `scroll_acceleration.enabled` - Omogući ubrzanje skrolovanja u macOS stilu. **Ima prednost nad `scroll_speed`.**
+- `scroll_speed` - Prilagođeni množitelj brzine pomicanja (podrazumevano: `3`, minimalno: `1`). Zanemareno ako je `scroll_acceleration.enabled` `true`.
+- `diff_style` - Kontrola prikaza razlike. `"auto"` se prilagođava širini terminala, `"stacked"` uvijek prikazuje jednu kolonu.
+ [Ovdje saznajte više o korištenju TUI](/docs/tui).
+
+---
+
+### Server
+
+Možete konfigurirati postavke servera za komande `opencode serve` i `opencode web` putem opcije `server`.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "server": {
+ "port": 4096,
+ "hostname": "0.0.0.0",
+ "mdns": true,
+ "mdnsDomain": "myproject.local",
+ "cors": ["http://localhost:5173"]
+ }
+}
+```
+
+Dostupne opcije:
+
+- `port` - Port za slušanje.
+- `hostname` - Ime hosta za slušanje. Kada je `mdns` omogućen i nije postavljeno ime hosta, podrazumevano je `0.0.0.0`.
+- `mdns` - Omogući otkrivanje mDNS usluge. Ovo omogućava drugim uređajima na mreži da otkriju vaš OpenCode server.
+- `mdnsDomain` - Prilagođeno ime domene za mDNS uslugu. Zadano je `opencode.local`. Korisno za pokretanje više instanci na istoj mreži.
+- `cors` - Dodatni izvori koji omogućavaju CORS kada koristite HTTP server iz klijenta baziranog na pretraživaču. Vrijednosti moraju biti punog porijekla (šema + host + opcijski port), npr. `https://app.example.com`.
+ [Saznajte više o serveru](/docs/server) ovdje.
+
+---
+
+### Uvijek
+
+Možete upravljati alatima koje LLM može koristiti putem opcije `tools`.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "tools": {
+ "write": false,
+ "bash": false
+ }
+}
+```
+
+[Saznajte više o alatima](/docs/tools) ovdje.
+
+---
+
+### Model
+
+Možete konfigurirati dobavljače i modele koje želite koristiti u svojoj OpenCode konfiguraciji kroz opcije `provider`, `model` i `small_model`.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {},
+ "model": "anthropic/claude-sonnet-4-5",
+ "small_model": "anthropic/claude-haiku-4-5"
+}
+```
+
+Opcija `small_model` konfigurira poseban model za lagane zadatke poput generiranja naslova. Podrazumevano, OpenCode pokušava da koristi jeftiniji model ako je dostupan od vašeg provajdera, inače se vraća na vaš glavni model.
+Opcije provajdera mogu uključivati `timeout` i `setCacheKey`:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "anthropic": {
+ "options": {
+ "timeout": 600000,
+ "setCacheKey": true
+ }
+ }
+ }
+}
+```
+
+- `timeout` - Vrijeme čekanja zahtjeva u milisekundama (podrazumevano: 300000). Postavite na `false` da onemogućite.
+- `setCacheKey` - Osigurajte da je ključ keš memorije uvijek postavljen za određenog provajdera.
+ Također možete konfigurirati [lokalni modeli](/docs/models#local). [Saznajte više](/docs/models).
+
+---
+
+#### Opcije specifične za provajdere
+
+Neki provajderi podržavaju dodatne opcije konfiguracije osim generičkih postavki `timeout` i `apiKey`.
+
+##### Amazon Bedrock
+
+Amazon Bedrock podržava konfiguraciju specifičnu za AWS:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "amazon-bedrock": {
+ "options": {
+ "region": "us-east-1",
+ "profile": "my-aws-profile",
+ "endpoint": "https://bedrock-runtime.us-east-1.vpce-xxxxx.amazonaws.com"
+ }
+ }
+ }
+}
+```
+
+- `region` - AWS regija za Bedrock (zadano na `AWS_REGION` env var ili `us-east-1`)
+- `profile` - AWS imenovan profil od `~/.aws/credentials` (podrazumevano na `AWS_PROFILE` env var)
+- `endpoint` - URL prilagođene krajnje tačke za VPC krajnje tačke. Ovo je pseudonim za generičku opciju `baseURL` koristeći terminologiju specifičnu za AWS. Ako su oba navedena, `endpoint` ima prednost.
+ :::napomena
+ Tokeni nosioca (`AWS_BEARER_TOKEN_BEDROCK` ili `/connect`) imaju prednost nad autentifikacijom zasnovanom na profilu. Pogledajte [prednost autentifikacije](/docs/providers#authentication-precedence) za detalje.
+ :::
+ [Saznajte više o konfiguraciji Amazon Bedrock](/docs/providers#amazon-bedrock).
+
+---
+
+### Domaći
+
+Možete konfigurirati temu koju želite koristiti u svojoj OpenCode konfiguraciji putem opcije `theme`.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "theme": ""
+}
+```
+
+[Saznajte više ovdje](/docs/themes).
+
+---
+
+### Agenti
+
+Možete konfigurirati specijalizirane agente za određene zadatke putem opcije `agent`.
+
+```jsonc title="opencode.jsonc"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "agent": {
+ "code-reviewer": {
+ "description": "Reviews code for best practices and potential issues",
+ "model": "anthropic/claude-sonnet-4-5",
+ "prompt": "You are a code reviewer. Focus on security, performance, and maintainability.",
+ "tools": {
+ // Disable file modification tools for review-only agent
+ "write": false,
+ "edit": false,
+ },
+ },
+ },
+}
+```
+
+Također možete definirati agente koristeći mardown datoteke u `~/.config/opencode/agents/` ili `.opencode/agents/`. [Saznajte više ovdje](/docs/agents).
+
+---
+
+### Zadani agent
+
+Možete postaviti zadanog agenta koristeći opciju `default_agent`. Ovo određuje koji se agent koristi kada nijedan nije eksplicitno specificiran.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "default_agent": "plan"
+}
+```
+
+Zadani agent mora biti primarni agent (ne podagent). Ovo može biti ugrađeni agent kao što je `"build"` ili `"plan"`, ili [prilagođeni agent](/docs/agents) koji ste definirali. Ako navedeni agent ne postoji ili je subagent, OpenCode će se vratiti na `"build"` s upozorenjem.
+Ova postavka se primjenjuje na sva sučelja: TUI, CLI (`opencode run`), desktop aplikaciju i GitHub Action.
+
+---
+
+### Dijeljenje
+
+Možete konfigurirati funkciju [share](/docs/share) putem opcije `share`.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "share": "manual"
+}
+```
+
+Ovo traje:
+
+- `"manual"` - Dozvoli ručno dijeljenje putem komandi (podrazumevano)
+- `"auto"` - Automatski dijelite nove razgovore
+- `"disabled"` - Onemogući dijeljenje u potpunosti
+ Podrazumevano, dijeljenje je postavljeno na ručni način rada gdje trebate eksplicitno dijeliti razgovore pomoću naredbe `/share`.
+
+---
+
+### komandante
+
+Možete konfigurirati prilagođene komande za ponavljanje zadataka putem opcije `command`.
+
+```jsonc title="opencode.jsonc"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "command": {
+ "test": {
+ "template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes.",
+ "description": "Run tests with coverage",
+ "agent": "build",
+ "model": "anthropic/claude-haiku-4-5",
+ },
+ "component": {
+ "template": "Create a new React component named $ARGUMENTS with TypeScript support.\nInclude proper typing and basic structure.",
+ "description": "Create a new component",
+ },
+ },
+}
+```
+
+Također možete definirati komande koristeći mardown fajlove u `~/.config/opencode/commands/` ili `.opencode/commands/`. [Saznajte više ovdje](/docs/commands).
+
+---
+
+### Keybinds
+
+Možete prilagoditi svoje veze ključeva putem opcije `keybinds`.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "keybinds": {}
+}
+```
+
+[Saznajte više ovdje](/docs/keybinds).
+
+---
+
+### Automatsko ažuriranje
+
+OpenCode će automatski preuzeti sva nova ažuriranja kada se pokrene. Ovo možete onemogućiti opcijom `autoupdate`.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "autoupdate": false
+}
+```
+
+Ako ne želite ažuriranja, ali želite biti obaviješteni kada nova verzija bude dostupna, postavite `autoupdate` na `"notify"`.
+Imajte na umu da ovo funkcionira samo ako nije instalirano pomoću upravitelja paketa kao što je Homebrew.
+
+---
+
+### Trenerke
+
+Možete konfigurirati formatere koda putem opcije `formatter`.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "formatter": {
+ "prettier": {
+ "disabled": true
+ },
+ "custom-prettier": {
+ "command": ["npx", "prettier", "--write", "$FILE"],
+ "environment": {
+ "NODE_ENV": "development"
+ },
+ "extensions": [".js", ".ts", ".jsx", ".tsx"]
+ }
+ }
+}
+```
+
+[Saznajte više o formatterima](/docs/formatters) ovdje.
+
+---
+
+### Dozvole
+
+Prema zadanim postavkama, opencode **dopušta sve operacije** bez potrebe za eksplicitnim dopuštenjem. Ovo možete promijeniti koristeći opciju `permission`.
+Na primjer, da osigurate da alati `edit` i `bash` zahtijevaju odobrenje korisnika:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "edit": "ask",
+ "bash": "ask"
+ }
+}
+```
+
+[Ovdje saznajte više o ](/docs/permissions) dozvolama.
+
+---
+
+### Compaction
+
+Možete kontrolirati ponašanje sažimanja konteksta putem opcije `compaction`.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "compaction": {
+ "auto": true,
+ "prune": true
+ }
+}
+```
+
+- `auto` - Automatski sažimanje sesije kada je kontekst pun (podrazumevano: `true`).
+- `prune` - Uklonite stare izlaze alata da sačuvate tokene (podrazumevano: `true`).
+
+---
+
+### Watcher
+
+Možete konfigurirati obrasce ignoriranja promatrača datoteka putem opcije `watcher`.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "watcher": {
+ "ignore": ["node_modules/**", "dist/**", ".git/**"]
+ }
+}
+```
+
+Obrasci prate glob sintaksu. Koristite ovo da isključite bučne direktorije iz pregleda datoteka.
+
+---
+
+### MCP serveri
+
+Možete konfigurirati MCP servere koje želite koristiti putem opcije `mcp`.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {}
+}
+```
+
+[Saznajte više ovdje](/docs/mcp-servers).
+
+---
+
+### Extras
+
+[Plugins](/docs/plugins) proširuju OpenCode sa prilagođenim alatima, kukicama i integracijama.
+Postavite datoteke dodataka u `.opencode/plugins/` ili `~/.config/opencode/plugins/`. Također možete učitati dodatke iz npm-a preko opcije `plugin`.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "plugin": ["opencode-helicone-session", "@my-org/custom-plugin"]
+}
+```
+
+[Saznajte više ovdje](/docs/plugins).
+
+---
+
+### Uputstva
+
+Možete konfigurirati upute za model koji koristite putem opcije `instructions`.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
+}
+```
+
+Ovo uzima niz putanja i uzoraka globusa do datoteka instrukcija. [Saznajte više
+o pravilima ovdje](/docs/rules).
+
+---
+
+### Onemogućeni provajderi
+
+Možete onemogućiti dobavljače koji se automatski učitavaju preko opcije `disabled_providers`. Ovo je korisno kada želite spriječiti učitavanje određenih provajdera čak i ako su njihovi vjerodajnici dostupni.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "disabled_providers": ["openai", "gemini"]
+}
+```
+
+:::napomena
+`disabled_providers` ima prioritet nad `enabled_providers`.
+:::
+Opcija `disabled_providers` prihvata niz ID-ova provajdera. Kada je provajder onemogućen:
+
+- Neće se učitati čak i ako su varijable okruženja postavljene.
+- Neće se učitati čak i ako su API ključevi konfigurirani putem `/connect` komande.
+- Modeli dobavljača se neće pojaviti na listi za odabir modela.
+
+---
+
+### Omogućeni provajderi
+
+Možete odrediti listu dozvoljenih dobavljača putem opcije `enabled_providers`. Kada se podesi, samo navedeni provajderi će biti omogućeni, a svi ostali će biti zanemareni.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "enabled_providers": ["anthropic", "openai"]
+}
+```
+
+Ovo je korisno kada želite da ograničite OpenCode da koristi samo određene provajdere umesto da ih onemogućavate jednog po jednog.
+:::napomena
+`disabled_providers` ima prioritet nad `enabled_providers`.
+:::
+Ako se provajder pojavljuje i u `enabled_providers` i `disabled_providers`, `disabled_providers` ima prioritet za kompatibilnost unatrag.
+
+---
+
+### Eksperimentalno
+
+Ključ `experimental` sadrži opcije koje su u aktivnom razvoju.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "experimental": {}
+}
+```
+
+:::oprez
+Eksperimentalne opcije nisu stabilne. Mogu se promijeniti ili ukloniti bez prethodne najave.
+:::
+
+---
+
+## Varijable
+
+Možete koristiti zamjenu varijabli u vašim konfiguracijskim datotekama da biste referencirali varijable okruženja i sadržaj datoteke.
+
+---
+
+### Env vars
+
+Koristite `{env:VARIABLE_NAME}` za zamjenu varijabli okruženja:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "model": "{env:OPENCODE_MODEL}",
+ "provider": {
+ "anthropic": {
+ "models": {},
+ "options": {
+ "apiKey": "{env:ANTHROPIC_API_KEY}"
+ }
+ }
+ }
+}
+```
+
+Ako varijabla okruženja nije postavljena, bit će zamijenjena praznim nizom.
+
+---
+
+### Fajlovi
+
+Koristite `{file:path/to/file}` da zamijenite sadržaj fajla:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "instructions": ["./custom-instructions.md"],
+ "provider": {
+ "openai": {
+ "options": {
+ "apiKey": "{file:~/.secrets/openai-key}"
+ }
+ }
+ }
+}
+```
+
+Putanja fajla mogu biti:
+
+- U odnosu na direktorij konfiguracijskih datoteka
+- Ili apsolutne staze koje počinju sa `/` ili `~`
+ Ovo je korisno za:
+- Pohranjivanje osjetljivih podataka poput API ključeva u odvojenim datotekama.
+- Uključujući velike datoteke instrukcija bez zatrpavanja vaše konfiguracije.
+- Dijeljenje zajedničkih isječaka konfiguracije u više konfiguracijskih datoteka.
diff --git a/packages/web/src/content/docs/bs/custom-tools.mdx b/packages/web/src/content/docs/bs/custom-tools.mdx
new file mode 100644
index 000000000..9a13ab185
--- /dev/null
+++ b/packages/web/src/content/docs/bs/custom-tools.mdx
@@ -0,0 +1,160 @@
+---
+title: Custom Tools
+description: Kreirajte alate koje LLM može pozvati u otvorenom kodu.
+---
+
+Prilagođeni alati su funkcije koje kreirate i koje LLM može pozvati tokom razgovora. Oni rade zajedno sa [ugrađenim opencode](/docs/tools) alatima kao što su `read`, `write` i `bash`.
+
+---
+
+## Kreiranje alata
+Alati su definisani kao **TypeScript** ili **JavaScript** datoteke. Međutim, definicija alata može pozvati skripte napisane na **bilo kom jeziku** — TypeScript ili JavaScript se koriste samo za samu definiciju alata.
+
+---
+
+### Lokacija
+Mogu se definisati:
+- Lokalno postavljanjem u `.opencode/tools/` direktorij vašeg projekta.
+- Ili globalno, postavljanjem u `~/.config/opencode/tools/`.
+
+---
+
+### Struktura
+Najlakši način za kreiranje alata je korištenje pomoćnika `tool()` koji pruža sigurnost tipa i validaciju.
+
+```ts title=".opencode/tools/database.ts" {1}
+import { tool } from "@opencode-ai/plugin"
+
+export default tool({
+ description: "Query the project database",
+ args: {
+ query: tool.schema.string().describe("SQL query to execute"),
+ },
+ async execute(args) {
+ // Your database logic here
+ return `Executed query: ${args.query}`
+ },
+})
+```
+
+**ime datoteke** postaje **naziv alata**. Gore navedeno je kreirano pomoću `database` alata.
+
+---
+
+#### Više alata po datoteci
+Također možete izvesti više alata iz jedne datoteke. Svaki izvoz postaje **poseban alat** pod nazivom **`_`**:
+
+```ts title=".opencode/tools/math.ts"
+import { tool } from "@opencode-ai/plugin"
+
+export const add = tool({
+ description: "Add two numbers",
+ args: {
+ a: tool.schema.number().describe("First number"),
+ b: tool.schema.number().describe("Second number"),
+ },
+ async execute(args) {
+ return args.a + args.b
+ },
+})
+
+export const multiply = tool({
+ description: "Multiply two numbers",
+ args: {
+ a: tool.schema.number().describe("First number"),
+ b: tool.schema.number().describe("Second number"),
+ },
+ async execute(args) {
+ return args.a * args.b
+ },
+})
+```
+
+Ovo stvara dva alata: `math_add` i `math_multiply`.
+
+---
+
+### Argumenti
+Možete koristiti `tool.schema`, što je samo [Zod](https://zod.dev), da definirate tipove argumenata.
+
+```ts "tool.schema"
+args: {
+ query: tool.schema.string().describe("SQL query to execute")
+}
+```
+
+Također možete direktno uvesti [Zod](https://zod.dev) i vratiti običan objekt:
+
+```ts {6}
+import { z } from "zod"
+
+export default {
+ description: "Tool description",
+ args: {
+ param: z.string().describe("Parameter description"),
+ },
+ async execute(args, context) {
+ // Tool implementation
+ return "result"
+ },
+}
+```
+
+---
+
+### Kontekst
+Alati primaju kontekst o trenutnoj sesiji:
+
+```ts title=".opencode/tools/project.ts" {8}
+import { tool } from "@opencode-ai/plugin"
+
+export default tool({
+ description: "Get project information",
+ args: {},
+ async execute(args, context) {
+ // Access context information
+ const { agent, sessionID, messageID, directory, worktree } = context
+ return `Agent: ${agent}, Session: ${sessionID}, Message: ${messageID}, Directory: ${directory}, Worktree: ${worktree}`
+ },
+})
+```
+
+Koristite `context.directory` za radni direktorij sesije.
+Koristite `context.worktree` za korijen git radnog stabla.
+
+---
+
+## Primjeri
+### Napišite alat u Python-u
+Možete pisati svoje alate na bilo kom jeziku koji želite. Evo primjera koji zbraja dva broja koristeći Python.
+Prvo kreirajte alat kao Python skriptu:
+
+```python title=".opencode/tools/add.py"
+import sys
+
+a = int(sys.argv[1])
+b = int(sys.argv[2])
+print(a + b)
+```
+
+Zatim kreirajte definiciju alata koja ga poziva:
+
+```ts title=".opencode/tools/python-add.ts" {10}
+import { tool } from "@opencode-ai/plugin"
+import path from "path"
+
+export default tool({
+ description: "Add two numbers using Python",
+ args: {
+ a: tool.schema.number().describe("First number"),
+ b: tool.schema.number().describe("Second number"),
+ },
+ async execute(args, context) {
+ const script = path.join(context.worktree, ".opencode/tools/add.py")
+ const result = await Bun.$`python3 ${script} ${args.a} ${args.b}`.text()
+ return result.trim()
+ },
+})
+```
+
+Ovdje koristimo [`Bun.$`_](https://bun.com/docs/runtime/shell) uslužni program za pokretanje Python skripte.
\ No newline at end of file
diff --git a/packages/web/src/content/docs/bs/ecosystem.mdx b/packages/web/src/content/docs/bs/ecosystem.mdx
new file mode 100644
index 000000000..9cc861177
--- /dev/null
+++ b/packages/web/src/content/docs/bs/ecosystem.mdx
@@ -0,0 +1,66 @@
+---
+title: Ekosistem
+description: Projekti i integracije izgrađeni uz OpenCode.
+---
+
+Kolekcija projekata zajednice izgrađenih na OpenCode-u.
+:::napomena
+Želite li na ovu listu dodati svoj OpenCode projekat? Pošaljite PR.
+:::
+Također možete pogledati [awesome-opencode](https://github.com/awesome-opencode/awesome-opencode) i [opencode.cafe](https://opencode.cafe), zajednicu koja spaja ekosistem i zajednicu.
+
+---
+
+## Dodaci
+| Ime | Opis || --------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
+| [opencode-daytona](https://github.com/jamesmurdza/daytona/blob/main/guides/typescript/opencode/README.md) | Automatski pokrenite OpenCode sesije u izoliranim Daytona sandboxovima uz git sinhronizaciju i preglede uživo |
+| [opencode-helicone-session](https://github.com/H2Shami/opencode-helicone-session) | Automatski ubacite Helicone zaglavlja sesije za grupisanje zahtjeva |
+| [opencode-type-iject](https://github.com/nick-vi/opencode-type-inject) | Automatski ubaci TypeScript/Svelte tipove u čitanje datoteka pomoću alata za pretraživanje |
+| [opencode-openai-codex-auth](https://github.com/numman-ali/opencode-openai-codex-auth) | Koristite svoju ChatGPT Plus/Pro pretplatu umjesto API kredita |
+| [opencode-gemini-auth](https://github.com/jenslys/opencode-gemini-auth) | Koristite svoj postojeći Gemini plan umjesto API naplate |
+| [opencode-antigravity-auth](https://github.com/NoeFabris/opencode-antigravity-auth) | Koristite besplatne modele Antigravity umjesto API naplate |
+| [opencode-devcontainers](https://github.com/athal7/opencode-devcontainers) | Izolacija devcontainer-a s više grana s plitkim klonovima i automatski dodijeljenim portovima |
+| [opencode-google-antigravity-auth](https://github.com/shekohex/opencode-google-antigravity-auth) | Google Antigravity OAuth dodatak, s podrškom za Google pretraživanje i robusnijim API rukovanjem |
+| [opencode-dynamic-context-pruning](https://github.com/Tarquinen/opencode-dynamic-context-pruning) | Optimizirajte korištenje tokena smanjenjem izlaza zastarjelih alata |
+| [opencode-websearch-cited](https://github.com/ghoulr/opencode-websearch-cited.git) | Dodajte podršku za izvorno web pretraživanje za podržane provajdere sa stilom utemeljenim na Googleu |
+| [opencode-pty](https://github.com/shekohex/opencode-pty.git) | Omogućuje AI agentima da pokreću pozadinske procese u PTY-u, šalju im interaktivni ulaz. |
+| [opencode-shell-strategy](https://github.com/JRedeker/opencode-shell-strategy) | Upute za neinteraktivne naredbe ljuske - sprječava visi od TTY ovisnih operacija || [opencode-wakatime](https://github.com/angristan/opencode-wakatime) | Pratite upotrebu OpenCodea sa Wakatime |
+| [opencode-md-table-formatter](https://github.com/franlol/opencode-md-table-formatter/tree/main) | Očistite tabele umanjenja vrijednosti koje su izradili LLM |
+| [opencode-morph-fast-apply](https://github.com/JRedeker/opencode-morph-fast-apply) | 10x brže uređivanje koda s Morph Fast Apply API-jem i markerima za lijeno uređivanje |
+| [oh-my-opencode](https://github.com/code-yeongyu/oh-my-opencode) | Pozadinski agenti, unapred izgrađeni LSP/AST/MCP alati, kurirani agenti, kompatibilni sa Claude Code |
+| [opencode-notificator](https://github.com/panta82/opencode-notificator) | Obavještenja na radnoj površini i zvučna upozorenja za OpenCode sesije |
+| [opencode-notifier](https://github.com/mohak34/opencode-notifier) | Obavještenja na radnoj površini i zvučna upozorenja za dozvole, završetak i događaje greške |
+| [opencode-zellij-namer](https://github.com/24601/opencode-zellij-namer) | Automatsko imenovanje Zellij sesije na bazi OpenCode konteksta |
+| [opencode-skillful](https://github.com/zenobi-us/opencode-skillful) | Dozvolite OpenCode agentima da lijeno učitavaju upite na zahtjev uz otkrivanje vještina i ubrizgavanje |
+| [opencode-supermemory](https://github.com/supermemoryai/opencode-supermemory) | Trajna memorija kroz sesije koristeći Supermemory |
+| [@plannotator/opencode](https://github.com/backnotprop/plannotator/tree/main/apps/opencode-plugin) | Interaktivni pregled plana s vizualnim napomenama i privatnim/offline dijeljenjem |
+| [@openspoon/subtask2](https://github.com/spoons-and-mirrors/subtask2) | Proširite opencode /komande u moćan sistem orkestracije sa granularnom kontrolom toka |
+| [opencode-scheduler](https://github.com/different-ai/opencode-scheduler) | Planirajte ponavljajuće poslove koristeći launchd (Mac) ili systemd (Linux) sa cron sintaksom || [micode](https://github.com/vtemian/micode) | Strukturirana Brainstorm → Plan → Implementacija toka rada uz kontinuitet sesije |
+| [oktobar](https://github.com/vtemian/octto) | Interaktivno korisničko sučelje pretraživača za AI brainstorming sa obrascima za više pitanja |
+| [opencode-background-agents](https://github.com/kdcokenny/opencode-background-agents) | Pozadinski agenti u stilu Claudea s asinhroniziranim delegiranjem i postojanošću konteksta |
+| [opencode-notify](https://github.com/kdcokenny/opencode-notify) | Notifikacije izvornog OS-a za OpenCode – znajte kada se zadaci dovrše |
+| [opencode-workspace](https://github.com/kdcokenny/opencode-workspace) | Uvezeni višeagentni orkestracijski pojas – 16 komponenti, jedna instalacija |
+| [opencode-worktree](https://github.com/kdcokenny/opencode-worktree) | Git radna stabla bez trenja za OpenCode |
+
+---
+
+## Projekti
+| Ime | Opis || ------------------------------------------------------------------------------------------ | ---------------------------------------------------------------- |
+| [kimaki](https://github.com/remorses/kimaki) | Discord bot za kontrolu OpenCode sesija, izgrađen na SDK |
+| [opencode.nvim](https://github.com/NickvanDyke/opencode.nvim) | Neovim dodatak za upite svjestan uređivača, izgrađen na API |
+| [portal](https://github.com/hosenur/portal) | Mobilni korisnički interfejs za OpenCode preko Tailscale/VPN |
+| [opencode plugin template](https://github.com/zenobi-us/opencode-plugin-template/) | Predložak za izgradnju OpenCode dodataka |
+| [opencode.nvim](https://github.com/sudo-tee/opencode.nvim) | Neovim frontend za opencode - terminal baziran AI agent za kodiranje |
+| [ai-sdk-provider-opencode-sdk](https://github.com/ben-vargas/ai-sdk-provider-opencode-sdk) | Vercel AI SDK dobavljač za korištenje OpenCodea putem @opencode-ai/sdk |
+| [OpenChamber](https://github.com/btriapitsyn/openchamber) | Web / Desktop App i VS Code Extension za OpenCode |
+| [OpenCode-Obsidian](https://github.com/mtymek/opencode-obsidian) | Obsidian dodatak koji ugrađuje OpenCode u Obsidian-ov UI |
+| [OpenWork](https://github.com/different-ai/openwork) | Alternativa otvorenog koda Claudeu Coworku, pokretana pomoću OpenCode |
+| [ocx](https://github.com/kdcokenny/ocx) | OpenCode menadžer ekstenzija sa prenosivim, izolovanim profilima. |
+| [CodeNomad](https://github.com/NeuralNomadsAI/CodeNomad) | Desktop, Web, Mobile i Remote Client aplikacija za OpenCode |
+
+---
+
+## Agenti
+| Ime | Opis || ----------------------------------------------------------------- | ------------------------------------------------------------ |
+| [Agentic](https://github.com/Cluster444/agentic) | Modularni AI agenti i komande za strukturirani razvoj |
+| [opencode-agents](https://github.com/darrenhinde/opencode-agents) | Konfiguracije, upiti, agenti i dodaci za poboljšane tokove rada |
\ No newline at end of file
diff --git a/packages/web/src/content/docs/bs/enterprise.mdx b/packages/web/src/content/docs/bs/enterprise.mdx
new file mode 100644
index 000000000..8064fe3e0
--- /dev/null
+++ b/packages/web/src/content/docs/bs/enterprise.mdx
@@ -0,0 +1,165 @@
+---
+title: Enterprise
+description: Sigurno korištenje OpenCodea u vašoj organizaciji.
+---
+
+import config from "../../../../config.mjs"
+export const email = `mailto:${config.email}`
+
+OpenCode Enterprise je za organizacije koje žele osigurati da njihov kod i podaci nikada ne napuštaju njihovu infrastrukturu. To omogućava centralizovana konfiguracija koja se integriše s vašim SSO-om i internim AI gateway-om.
+
+:::note
+OpenCode ne pohranjuje nijedan vaš kod ili kontekstualne podatke.
+:::
+
+Da započnete s OpenCode Enterprise:
+
+1. Uradite interni probni period sa svojim timom.
+2. **Kontaktirajte nas** da razgovaramo o cijenama i opcijama implementacije.
+
+---
+
+## Trial
+
+OpenCode je otvorenog koda i ne pohranjuje vaš kod niti kontekstualne podatke, tako da vaši developeri mogu jednostavno [započeti](/docs/) i provesti probu.
+
+---
+
+### Rukovanje podacima
+
+**OpenCode ne pohranjuje vaš kod ni kontekstualne podatke.** Sva obrada se odvija lokalno ili putem direktnih API poziva vašem AI provajderu.
+
+To znači da, sve dok koristite provajdera kojem vjerujete ili interni AI gateway, OpenCode možete koristiti sigurno.
+
+Jedina iznimka je opcionalna funkcija `/share`.
+
+---
+
+#### Dijeljenje razgovora
+
+Ako korisnik uključi funkciju `/share`, razgovor i povezani podaci šalju se servisu koji koristimo za hosting ovih share stranica na opencode.ai.
+
+Podaci se trenutno serviraju kroz edge mrežu našeg CDN-a i keširaju se blizu korisnika.
+
+Preporučujemo da ovo onemogućite tokom probe.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "share": "disabled"
+}
+```
+
+[Saznajte više o dijeljenju](/docs/share).
+
+---
+
+### Vlasništvo koda
+
+**Vi posjedujete sav kod koji OpenCode proizvede.** Nema ograničenja licenciranja niti zahtjeva za vlasništvo.
+
+---
+
+## Pricing
+
+Koristimo model naplate po sjedištu za OpenCode Enterprise. Ako imate vlastiti LLM gateway, ne naplaćujemo korištene tokene. Za više detalja o cijenama i opcijama implementacije, **kontaktirajte nas**.
+
+---
+
+## Deployment
+
+Nakon što završite probni period i spremni ste koristiti OpenCode u svojoj organizaciji, možete **kontaktirati nas** da razgovaramo o cijenama i opcijama implementacije.
+
+---
+
+### Central Config
+
+Možemo postaviti OpenCode da koristi jednu centralnu konfiguraciju za cijelu organizaciju.
+
+Ta centralizovana konfiguracija može se integrisati s vašim SSO provajderom i osigurava da svi korisnici pristupaju samo vašem internom AI gateway-u.
+
+---
+
+### SSO integracija
+
+Kroz centralnu konfiguraciju, OpenCode se može integrisati sa SSO provajderom vaše organizacije za autentifikaciju.
+
+To omogućava OpenCodeu da dobije vjerodajnice za interni AI gateway kroz vaš postojeći sistem upravljanja identitetom.
+
+---
+
+### Interni AI gateway
+
+Uz centralnu konfiguraciju, OpenCode se može podesiti da koristi samo vaš interni AI gateway.
+
+Također možete onemogućiti sve druge AI provajdere, čime osiguravate da svi zahtjevi prolaze kroz odobrenu infrastrukturu vaše organizacije.
+
+---
+
+### Self-hosting
+
+Iako preporučujemo onemogućavanje share stranica kako biste osigurali da podaci nikada ne napuštaju vašu organizaciju, možemo vam pomoći i da ih samostalno hostujete na vlastitoj infrastrukturi.
+
+Ovo je trenutno na našoj mapi puta. Ako ste zainteresovani, **javite nam**.
+
+---
+
+## FAQ
+
+
+What is OpenCode Enterprise?
+
+OpenCode Enterprise je za organizacije koje žele osigurati da njihov kod i podaci nikada ne napuštaju njihovu infrastrukturu. To omogućava centralizovana konfiguracija koja se integriše s vašim SSO-om i internim AI gateway-om.
+
+
+
+
+How do I get started with OpenCode Enterprise?
+
+Jednostavno započnite internu probu sa svojim timom. OpenCode po defaultu ne pohranjuje vaš kod ni kontekstualne podatke, što olakšava početak.
+
+Zatim **kontaktirajte nas** da razgovaramo o cijenama i opcijama implementacije.
+
+
+
+
+How does enterprise pricing work?
+
+Nudimo enterprise cijene po sjedištu. Ako imate vlastiti LLM gateway, ne naplaćujemo korištene tokene. Za više detalja, **kontaktirajte nas** za prilagođenu ponudu prema potrebama vaše organizacije.
+
+
+
+
+Is my data secure with OpenCode Enterprise?
+
+Da. OpenCode ne pohranjuje vaš kod niti kontekstualne podatke. Sva obrada se odvija lokalno ili putem direktnih API poziva vašem AI provajderu. Uz centralnu konfiguraciju i SSO integraciju, vaši podaci ostaju sigurni unutar infrastrukture vaše organizacije.
+
+
+
+
+Can we use our own private NPM registry?
+
+OpenCode podržava privatne npm registre kroz Bunovu izvornu podršku za `.npmrc` datoteku. Ako vaša organizacija koristi privatni registar, kao što je JFrog Artifactory, Nexus ili slično, osigurajte da su developeri autentifikovani prije pokretanja OpenCodea.
+
+Da postavite autentifikaciju s privatnim registrom:
+
+```bash
+npm login --registry=https://your-company.jfrog.io/api/npm/npm-virtual/
+```
+
+Ovo kreira `~/.npmrc` s detaljima za autentifikaciju. OpenCode će to automatski prepoznati.
+
+:::caution
+Morate biti prijavljeni na privatni registar prije pokretanja OpenCodea.
+:::
+
+Alternativno, možete ručno konfigurisati `.npmrc` datoteku:
+
+```bash title="~/.npmrc"
+registry=https://your-company.jfrog.io/api/npm/npm-virtual/
+//your-company.jfrog.io/api/npm/npm-virtual/:_authToken=${NPM_AUTH_TOKEN}
+```
+
+Developeri moraju biti prijavljeni na privatni registar prije pokretanja OpenCodea kako bi se paketi mogli instalirati iz vašeg enterprise registra.
+
+
diff --git a/packages/web/src/content/docs/bs/formatters.mdx b/packages/web/src/content/docs/bs/formatters.mdx
new file mode 100644
index 000000000..bb0816d70
--- /dev/null
+++ b/packages/web/src/content/docs/bs/formatters.mdx
@@ -0,0 +1,115 @@
+---
+title: Trenerke
+description: OpenCode koristi formatere specifične za jezik.
+---
+
+OpenCode automatski formatira datoteke nakon što su napisane ili uređene pomoću formatera specifičnih za jezik. Ovo osigurava da kod koji se generira prati stilove koda vašeg projekta.
+
+---
+
+## Ugrađeno
+OpenCode dolazi sa nekoliko ugrađenih formatera za popularne jezike i okvire. Ispod je lista formatera, podržanih ekstenzija datoteka i naredbi ili opcija konfiguracije koje su mu potrebne.
+| Formatter | Ekstenzije | Zahtjevi || -------------------- | -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
+| gofmt | .go | `gofmt` komanda dostupna |
+| mix | .ex, .exs, .eex, .heex, .leex, .neex, .sface | `mix` komanda dostupna |
+| ljepše | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml i [više](https://prettier.io/docs/en/index.html) | `prettier` zavisnost u `package.json` |
+| biom | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml i [više](https://biomejs.dev/) | `biome.json(c)` konfiguracijski fajl |
+| zig | .zig, .zon | `zig` komanda dostupna |
+| clang-format | .c, .cpp, .h, .hpp, .ino i [više](https://clang.llvm.org/docs/ClangFormat.html) | `.clang-format` konfiguracijski fajl |
+| ktlint | .kt, .kts | `ktlint` komanda dostupna |
+| ruff | .py, .pyi | `ruff` komanda dostupna sa konfiguracijom |
+| rustfmt | .rs | `rustfmt` komanda dostupna |
+| cargofmt | .rs | `cargo fmt` komanda dostupna |
+| uv | .py, .pyi | `uv` komanda dostupna || rubocop | .rb, .rake, .gemspec, .ru | `rubocop` komanda dostupna |
+| standardrb | .rb, .rake, .gemspec, .ru | `standardrb` komanda dostupna |
+| htmlbeautifier | .erb, .html.erb | `htmlbeautifier` komanda dostupna |
+| zrak | .R | `air` komanda dostupna |
+| dart | .dart | `dart` komanda dostupna |
+| ocamlformat | .ml, .mli | `ocamlformat` komanda dostupna i `.ocamlformat` konfiguracioni fajl |
+| terraform | .tf, .tfvars | `terraform` komanda dostupna |
+| sjaj | .bleam | `gleam` komanda dostupna |
+| nixfmt | .nix | `nixfmt` komanda dostupna |
+| shfmt | .sh, .bash | `shfmt` komanda dostupna |
+| pint | .php | `laravel/pint` zavisnost u `composer.json` || oxfmt (Eksperimentalno) | .js, .jsx, .ts, .tsx | `oxfmt` zavisnost u `package.json` i [eksperimentalna env varijabla flag](/docs/cli/#experimental) |
+| ormolu | .hs | `ormolu` komanda dostupna |
+Dakle, ako vaš projekat ima `prettier` u vašem `package.json`, OpenCode će ga automatski koristiti.
+
+---
+
+## Kako radi
+Kada OpenCode piše ili uređuje datoteku, on:
+1. Provjerava ekstenziju datoteke prema svim omogućenim formaterima.
+2. Pokreće odgovarajuću naredbu za formatiranje na datoteci.
+3. Automatski primjenjuje promjene formatiranja.
+Ovaj proces se događa u pozadini, osiguravajući da se vaši stilovi koda održavaju bez ikakvih ručnih koraka.
+
+---
+
+## Konfiguriši
+Možete prilagoditi formatere kroz `formatter` odjeljak u vašoj OpenCode konfiguraciji.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "formatter": {}
+}
+```
+
+Svaka konfiguracija formatera podržava sljedeće:
+| Nekretnine | Vrsta | Opis || ------------- | -------- | ------------------------------------------------------- |
+| `disabled` | boolean | Postavite ovo na `true` da onemogućite formater |
+| `command` | string[] | Naredba za pokretanje za formatiranje |
+| `environment` | objekt | Varijable okruženja koje treba postaviti prilikom pokretanja formatera |
+| `extensions` | string[] | Ekstenzije datoteka koje ovaj formater treba da obrađuje |
+Pogledajmo neke primjere.
+
+---
+
+### Onemogućavanje formatera
+Da onemogućite **sve** formatere globalno, postavite `formatter` na `false`:
+
+```json title="opencode.json" {3}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "formatter": false
+}
+```
+
+Da onemogućite **specifični** formater, postavite `disabled` na `true`:
+
+```json title="opencode.json" {5}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "formatter": {
+ "prettier": {
+ "disabled": true
+ }
+ }
+}
+```
+
+---
+
+### Prilagođeni formateri
+Možete nadjačati ugrađene formatere ili dodati nove navođenjem naredbe, varijabli okruženja i ekstenzija datoteke:
+
+```json title="opencode.json" {4-14}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "formatter": {
+ "prettier": {
+ "command": ["npx", "prettier", "--write", "$FILE"],
+ "environment": {
+ "NODE_ENV": "development"
+ },
+ "extensions": [".js", ".ts", ".jsx", ".tsx"]
+ },
+ "custom-markdown-formatter": {
+ "command": ["deno", "fmt", "$FILE"],
+ "extensions": [".md"]
+ }
+ }
+}
+```
+
+**`$FILE` čuvar mjesta** u naredbi će biti zamijenjen putanjom do datoteke koja se formatira.
\ No newline at end of file
diff --git a/packages/web/src/content/docs/bs/github.mdx b/packages/web/src/content/docs/bs/github.mdx
new file mode 100644
index 000000000..499d26bc7
--- /dev/null
+++ b/packages/web/src/content/docs/bs/github.mdx
@@ -0,0 +1,305 @@
+---
+title: GitHub
+description: Koristite OpenCode u GitHub problemima i zahtjevima za povlačenjem.
+---
+
+OpenCode se integriše sa vašim GitHub tokovom rada. Spomenite `/opencode` ili `/oc` u svom komentaru i OpenCode će izvršiti zadatke unutar vašeg GitHub Actions runnera.
+
+---
+
+## Karakteristike
+- **Problemi trijaže**: Zamolite OpenCode da ispita problem i objasni vam ga.
+- **Popravi i implementiraj**: Zamolite OpenCode da popravi problem ili implementira funkciju. I radit će u novoj poslovnici i dostavljati PR sa svim promjenama.
+- **Secure**: OpenCode se pokreće unutar pokretača vašeg GitHub-a.
+
+---
+
+## Instalacija
+Pokrenite sljedeću naredbu u projektu koji se nalazi u GitHub repo:
+
+```bash
+opencode github install
+```
+
+Ovo će vas provesti kroz instalaciju GitHub aplikacije, kreiranje toka posla i postavljanje tajni.
+
+---
+
+### Ručno podešavanje
+Ili ga možete postaviti ručno.
+1. **Instalirajte GitHub aplikaciju**
+Idite na [**github.com/apps/opencode-agent**](https://github.com/apps/opencode-agent). Uvjerite se da je instaliran na ciljnom spremištu.
+2. **Dodajte radni tok**
+Dodajte sljedeći fajl toka posla u `.github/workflows/opencode.yml` u svoj repo. Obavezno postavite odgovarajuće `model` i potrebne API ključeve u `env`.
+
+```yml title=".github/workflows/opencode.yml" {24,26}
+ name: opencode
+
+ on:
+ issue_comment:
+ types: [created]
+ pull_request_review_comment:
+ types: [created]
+
+ jobs:
+ opencode:
+ if: |
+ contains(github.event.comment.body, '/oc') ||
+ contains(github.event.comment.body, '/opencode')
+ runs-on: ubuntu-latest
+ permissions:
+ id-token: write
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v6
+ with:
+ fetch-depth: 1
+ persist-credentials: false
+
+ - name: Run OpenCode
+ uses: anomalyco/opencode/github@latest
+ env:
+ ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
+ with:
+ model: anthropic/claude-sonnet-4-20250514
+ # share: true
+ # github_token: xxxx
+
+
+```
+
+3. **Sačuvaj API ključeve u tajne**
+U **postavkama** organizacije ili projekta proširite **Tajne i varijable** na lijevoj strani i odaberite **Radnje**. I dodajte potrebne API ključeve.
+
+---
+
+## Konfiguracija
+- `model`: Model za korištenje s OpenCodeom. Uzima format `provider/model`. Ovo je **obavezno**.
+- `agent`: Agent za korištenje. Mora biti primarni agent. Vraća se na `default_agent` iz konfiguracije ili `"build"` ako nije pronađen.
+- `share`: Da li dijeliti OpenCode sesiju. Podrazumevano je **true** za javna spremišta.
+- `prompt`: Opcioni prilagođeni upit za nadjačavanje zadanog ponašanja. Koristite ovo da prilagodite kako OpenCode obrađuje zahtjeve.
+- `token`: Opcionalni GitHub pristupni token za izvođenje operacija kao što su kreiranje komentara, upisivanje promjena i otvaranje zahtjeva za povlačenjem. OpenCode prema zadanim postavkama koristi token za pristup instalaciji iz aplikacije OpenCode GitHub, tako da se urezivanje, komentari i zahtjevi za povlačenjem pojavljuju kao da dolaze iz aplikacije.
+Alternativno, možete koristiti GitHub Action runner [ugrađeni `GITHUB_TOKEN`](https://docs.github.com/en/actions/tutorials/authenticate-with-github_token) bez instaliranja OpenCode GitHub aplikacije. Samo se pobrinite da date potrebna odobrenja u svom toku rada:
+
+```yaml
+ permissions:
+ id-token: write
+ contents: write
+ pull-requests: write
+ issues: write
+
+
+```
+
+Također možete koristiti [Personal Access Tokens](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)(PAT) ako želite.
+
+---
+
+## Podržani događaji
+OpenCode se može pokrenuti sljedećim GitHub događajima:
+| Vrsta događaja | Pokrenuo | Detalji || ----------------------------- | -------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
+| `issue_comment` | Komentirajte problem ili PR | Navedite `/opencode` ili `/oc` u svom komentaru. OpenCode čita kontekst i može kreirati grane, otvarati PR-ove ili odgovarati. |
+| `pull_request_review_comment` | Komentirajte određene linije koda u PR-u | Navedite `/opencode` ili `/oc` dok pregledavate kod. OpenCode prima putanju datoteke, brojeve redova i kontekst razlike. |
+| `issues` | Broj otvoren ili uređen | Automatski pokrenite OpenCode kada se problemi kreiraju ili modificiraju. Zahtijeva `prompt` unos. |
+| `pull_request` | PR otvoren ili ažuriran | Automatski pokrenite OpenCode kada se PR-ovi otvore, sinkroniziraju ili ponovo otvore. Korisno za automatske recenzije. |
+| `schedule` | Cron baziran raspored | Pokrenite OpenCode prema rasporedu. Zahtijeva `prompt` unos. Izlaz ide u dnevnike i PR-ove (nema problema za komentarisanje). |
+| `workflow_dispatch` | Ručni okidač iz GitHub korisničkog sučelja | Aktivirajte OpenCode na zahtjev preko kartice Akcije. Zahtijeva `prompt` unos. Izlaz ide u dnevnike i PR-ove. |
+### Primjer rasporeda
+Pokrenite OpenCode po rasporedu za obavljanje automatiziranih zadataka:
+
+```yaml title=".github/workflows/opencode-scheduled.yml"
+name: Scheduled OpenCode Task
+
+on:
+ schedule:
+ - cron: "0 9 * * 1" # Every Monday at 9am UTC
+
+jobs:
+ opencode:
+ runs-on: ubuntu-latest
+ permissions:
+ id-token: write
+ contents: write
+ pull-requests: write
+ issues: write
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v6
+ with:
+ persist-credentials: false
+
+ - name: Run OpenCode
+ uses: anomalyco/opencode/github@latest
+ env:
+ ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
+ with:
+ model: anthropic/claude-sonnet-4-20250514
+ prompt: |
+ Review the codebase for any TODO comments and create a summary.
+ If you find issues worth addressing, open an issue to track them.
+```
+
+Za zakazane događaje, unos `prompt` je **potreban** jer nema komentara za izvlačenje instrukcija. Planirani tokovi posla se pokreću bez korisničkog konteksta za provjeru dozvola, tako da tok posla mora odobriti `contents: write` i `pull-requests: write` ako očekujete da će OpenCode kreirati grane ili PR-ove.
+
+---
+
+### Primjer zahtjeva za povlačenjem
+Automatski pregledajte PR-ove kada se otvore ili ažuriraju:
+
+```yaml title=".github/workflows/opencode-review.yml"
+name: opencode-review
+
+on:
+ pull_request:
+ types: [opened, synchronize, reopened, ready_for_review]
+
+jobs:
+ review:
+ runs-on: ubuntu-latest
+ permissions:
+ id-token: write
+ contents: read
+ pull-requests: read
+ issues: read
+ steps:
+ - uses: actions/checkout@v6
+ with:
+ persist-credentials: false
+ - uses: anomalyco/opencode/github@latest
+ env:
+ ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ model: anthropic/claude-sonnet-4-20250514
+ use_github_token: true
+ prompt: |
+ Review this pull request:
+ - Check for code quality issues
+ - Look for potential bugs
+ - Suggest improvements
+```
+
+Za `pull_request` događaje, ako nije naveden `prompt`, OpenCode podrazumevano pregledava zahtjev za povlačenjem.
+
+---
+
+### Primjer trijaže problema
+Automatski triažirajte nove probleme. Ovaj primjer filtrira na račune starije od 30 dana radi smanjenja neželjene pošte:
+
+```yaml title=".github/workflows/opencode-triage.yml"
+name: Issue Triage
+
+on:
+ issues:
+ types: [opened]
+
+jobs:
+ triage:
+ runs-on: ubuntu-latest
+ permissions:
+ id-token: write
+ contents: write
+ pull-requests: write
+ issues: write
+ steps:
+ - name: Check account age
+ id: check
+ uses: actions/github-script@v7
+ with:
+ script: |
+ const user = await github.rest.users.getByUsername({
+ username: context.payload.issue.user.login
+ });
+ const created = new Date(user.data.created_at);
+ const days = (Date.now() - created) / (1000 * 60 * 60 * 24);
+ return days >= 30;
+ result-encoding: string
+
+ - uses: actions/checkout@v6
+ if: steps.check.outputs.result == 'true'
+ with:
+ persist-credentials: false
+
+ - uses: anomalyco/opencode/github@latest
+ if: steps.check.outputs.result == 'true'
+ env:
+ ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
+ with:
+ model: anthropic/claude-sonnet-4-20250514
+ prompt: |
+ Review this issue. If there's a clear fix or relevant docs:
+ - Provide documentation links
+ - Add error handling guidance for code examples
+ Otherwise, do not comment.
+```
+
+Za `issues` događaje, `prompt` unos je **potreban** jer nema komentara za izvlačenje instrukcija.
+
+---
+
+## Prilagođene upite
+Zaobiđite zadani prompt da biste prilagodili ponašanje OpenCodea za vaš tok posla.
+
+```yaml title=".github/workflows/opencode.yml"
+- uses: anomalyco/opencode/github@latest
+ with:
+ model: anthropic/claude-sonnet-4-5
+ prompt: |
+ Review this pull request:
+ - Check for code quality issues
+ - Look for potential bugs
+ - Suggest improvements
+```
+
+Ovo je korisno za provođenje specifičnih kriterija pregleda, standarda kodiranja ili fokusnih područja relevantnih za vaš projekt.
+
+---
+
+## Primjeri
+Evo nekoliko primjera kako možete koristiti OpenCode u GitHubu.
+- **Objasnite problem**
+Dodajte ovaj komentar u GitHub izdanje.
+
+```
+ /opencode explain this issue
+
+
+```
+
+OpenCode će pročitati cijelu temu, uključujući sve komentare, i odgovoriti s jasnim objašnjenjem.
+- **Popravi problem**
+U izdanju na GitHub-u recite:
+
+```
+ /opencode fix this
+
+
+```
+
+I OpenCode će kreirati novu granu, implementirati promjene i otvoriti PR sa promjenama.
+- **Pregledajte PR-ove i izvršite izmjene**
+Ostavite sljedeći komentar na GitHub PR-u.
+
+```
+ Delete the attachment from S3 when the note is removed /oc
+
+
+```
+
+OpenCode će implementirati traženu promjenu i posvetiti je istom PR-u.
+- **Pregledajte određene linije koda**
+Ostavite komentar direktno na linije koda u PR kartici "Files". OpenCode automatski detektuje datoteku, brojeve redova i kontekst razlike kako bi pružio precizne odgovore.
+
+```
+ [Comment on specific lines in Files tab]
+ /oc add error handling here
+
+
+```
+
+Kada komentarišete određene linije, OpenCode prima:
+ - Tačan fajl se pregleda
+ - Specifične linije koda
+ - Okolni diff kontekst
+ - Informacije o broju linije
+Ovo omogućava više ciljanih zahtjeva bez potrebe za ručno specificiranjem putanja datoteka ili brojeva linija.
\ No newline at end of file
diff --git a/packages/web/src/content/docs/bs/gitlab.mdx b/packages/web/src/content/docs/bs/gitlab.mdx
new file mode 100644
index 000000000..2aee159fc
--- /dev/null
+++ b/packages/web/src/content/docs/bs/gitlab.mdx
@@ -0,0 +1,194 @@
+---
+title: GitLab
+description: Koristite OpenCode u GitLab problemima i zahtjevima za spajanje.
+---
+
+OpenCode se integriše sa vašim GitLab radnim tokom kroz vaš GitLab CI/CD cevovod ili sa GitLab Duo.
+U oba slučaja, OpenCode će se pokrenuti na vašim GitLab pokretačima.
+
+---
+
+## GitLab CI
+
+OpenCode radi u redovnom GitLab cevovodu. Možete ga ugraditi u cjevovod kao [CI komponenta](https://docs.gitlab.com/ee/ci/components/)
+Ovdje koristimo CI/CD komponentu kreiranu u zajednici za OpenCode — [nagyv/gitlab-opencode](https://gitlab.com/nagyv/gitlab-opencode).
+
+---
+
+### Karakteristike
+
+- **Koristite prilagođenu konfiguraciju po poslu**: Konfigurirajte OpenCode s prilagođenim konfiguracijskim direktorijem, na primjer `./config/#custom-directory` da omogućite ili onemogućite funkcionalnost po OpenCode pozivanju.
+- **Minimalno podešavanje**: CI komponenta postavlja OpenCode u pozadini, samo trebate kreirati OpenCode konfiguraciju i početnu prompt.
+- **Fleksibilno**: CI komponenta podržava nekoliko ulaza za prilagođavanje njenog ponašanja
+
+---
+
+### Podešavanje
+
+1. Sačuvajte JSON za autentifikaciju OpenCode-a kao CI varijable okruženja tipa datoteke pod **Postavke** > **CI/CD** > **Varijable**. Obavezno ih označite kao "Maskirane i skrivene".
+2. Dodajte sljedeće u svoju `.gitlab-ci.yml` datoteku.
+
+```yaml title=".gitlab-ci.yml"
+include:
+ - component: $CI_SERVER_FQDN/nagyv/gitlab-opencode/opencode@2
+ inputs:
+ config_dir: ${CI_PROJECT_DIR}/opencode-config
+ auth_json: $OPENCODE_AUTH_JSON # The variable name for your OpenCode authentication JSON
+ command: optional-custom-command
+ message: "Your prompt here"
+```
+
+Za više unosa i slučajeva upotrebe [pogledajte dokumente docs](https://gitlab.com/explore/catalog/nagyv/gitlab-opencode) za ovu komponentu.
+
+---
+
+## GitLab Duo
+
+OpenCode se integriše sa vašim GitLab tokovom rada.
+Spomenite `@opencode` u komentaru i OpenCode će izvršiti zadatke unutar vašeg GitLab CI cevovoda.
+
+---
+
+### Karakteristike
+
+- **Problemi trijaže**: Zamolite OpenCode da ispita problem i objasni vam ga.
+- **Popravi i implementiraj**: Zamolite OpenCode da popravi problem ili implementira funkciju.
+ To će kreirati novu granu i pokrenuti zahtjev za spajanje s promjenama.
+- **Secure**: OpenCode radi na vašim GitLab pokretačima.
+
+---
+
+### Podešavanje
+
+OpenCode radi u vašem GitLab CI/CD cevovodu, evo šta će vam trebati da ga postavite:
+:::tip
+Pogledajte [**GitLab dokumente**](https://docs.gitlab.com/user/duo_agent_platform/agent_assistant/) za ažurirane upute.
+:::
+
+1. Konfigurirajte svoje GitLab okruženje
+2. Postavite CI/CD
+3. Nabavite API ključ dobavljača AI modela
+4. Kreirajte nalog usluge
+5. Konfigurirajte CI/CD varijable
+6. Kreirajte konfiguracijski fajl toka, evo primjera:
+
+
+
+ Flow configuration
+
+ ```yaml
+ image: node:22-slim
+ commands:
+ - echo "Installing opencode"
+ - npm install --global opencode-ai
+ - echo "Installing glab"
+ - export GITLAB_TOKEN=$GITLAB_TOKEN_OPENCODE
+ - apt-get update --quiet && apt-get install --yes curl wget gpg git && rm --recursive --force /var/lib/apt/lists/*
+ - curl --silent --show-error --location "https://raw.githubusercontent.com/upciti/wakemeops/main/assets/install_repository" | bash
+ - apt-get install --yes glab
+ - echo "Configuring glab"
+ - echo $GITLAB_HOST
+ - echo "Creating OpenCode auth configuration"
+ - mkdir --parents ~/.local/share/opencode
+ - |
+ cat > ~/.local/share/opencode/auth.json << EOF
+ {
+ "anthropic": {
+ "type": "api",
+ "key": "$ANTHROPIC_API_KEY"
+ }
+ }
+ EOF
+ - echo "Configuring git"
+ - git config --global user.email "opencode@gitlab.com"
+ - git config --global user.name "OpenCode"
+ - echo "Testing glab"
+ - glab issue list
+ - echo "Running OpenCode"
+ - |
+ opencode run "
+ You are an AI assistant helping with GitLab operations.
+
+ Context: $AI_FLOW_CONTEXT
+ Task: $AI_FLOW_INPUT
+ Event: $AI_FLOW_EVENT
+
+ Please execute the requested task using the available GitLab tools.
+ Be thorough in your analysis and provide clear explanations.
+
+
+ Please use the glab CLI to access data from GitLab. The glab CLI has already been authenticated. You can run the corresponding commands.
+
+ If you are asked to summarize an MR or issue or asked to provide more information then please post back a note to the MR/Issue so that the user can see it.
+ You don't need to commit or push up changes, those will be done automatically based on the file changes you make.
+
+ "
+ - git checkout --branch $CI_WORKLOAD_REF origin/$CI_WORKLOAD_REF
+ - echo "Checking for git changes and pushing if any exist"
+ - |
+ if ! git diff --quiet || ! git diff --cached --quiet || [ --not --zero "$(git ls-files --others --exclude-standard)" ]; then
+ echo "Git changes detected, adding and pushing..."
+ git add .
+ if git diff --cached --quiet; then
+ echo "No staged changes to commit"
+ else
+ echo "Committing changes to branch: $CI_WORKLOAD_REF"
+ git commit --message "Codex changes"
+ echo "Pushing changes up to $CI_WORKLOAD_REF"
+ git push https://gitlab-ci-token:$GITLAB_TOKEN@$GITLAB_HOST/gl-demo-ultimate-dev-ai-epic-17570/test-java-project.git $CI_WORKLOAD_REF
+ echo "Changes successfully pushed"
+ fi
+ else
+ echo "No git changes detected, skipping push"
+ fi
+ variables:
+ - ANTHROPIC_API_KEY
+ - GITLAB_TOKEN_OPENCODE
+ - GITLAB_HOST
+ ```
+
+
+
+Možete vidjeti [GitLab CLI agenti docs](https://docs.gitlab.com/user/duo_agent_platform/agent_assistant/) za detaljna uputstva.
+
+---
+
+### Primjeri
+
+Evo nekoliko primjera kako možete koristiti OpenCode u GitLabu.
+:::tip
+Možete konfigurirati da koristite drugu frazu okidača od `@opencode`.
+:::
+
+- **Objasnite problem**
+ Dodajte ovaj komentar u izdanje GitLaba.
+
+```
+ @opencode explain this issue
+
+
+```
+
+OpenCode će pročitati problem i odgovoriti jasnim objašnjenjem.
+
+- **Reši problem**
+ U izdanju GitLaba recite:
+
+```
+ @opencode fix this
+
+
+```
+
+OpenCode će kreirati novu granu, implementirati promjene i otvoriti zahtjev za spajanje s promjenama.
+
+- **Pregledajte zahtjeve za pridruživanje**
+ Ostavite sljedeći komentar na zahtjev za spajanje GitLab-a.
+
+```
+ @opencode review this merge request
+
+
+```
+
+OpenCode će pregledati zahtjev za spajanje i dati povratne informacije.
diff --git a/packages/web/src/content/docs/bs/ide.mdx b/packages/web/src/content/docs/bs/ide.mdx
new file mode 100644
index 000000000..f8829ba0e
--- /dev/null
+++ b/packages/web/src/content/docs/bs/ide.mdx
@@ -0,0 +1,41 @@
+---
+title: IDE
+description: Ekstenzija OpenCode za VS Code, Cursor i druge IDE
+---
+
+OpenCode se integriše sa VS kodom, kursorom ili bilo kojim IDE-om koji podržava terminal. Samo pokrenite `opencode` u terminalu da započnete.
+
+---
+
+## Upotreba
+- **Brzo pokretanje**: Koristite `Cmd+Esc` (Mac) ili `Ctrl+Esc` (Windows/Linux) da otvorite OpenCode u prikazu podijeljenog terminala ili fokusirajte postojeću terminalsku sesiju ako je već pokrenuta.
+- **Nova sesija**: Koristite `Cmd+Shift+Esc` (Mac) ili `Ctrl+Shift+Esc` (Windows/Linux) da započnete novu OpenCode terminalsku sesiju, čak i ako je ona već otvorena. Takođe možete kliknuti na dugme OpenCode u korisničkom sučelju.
+- **Svijest o kontekstu**: Automatski dijelite svoj trenutni odabir ili karticu s OpenCodeom.
+- **Prečice za referencu datoteka**: Koristite `Cmd+Option+K` (Mac) ili `Alt+Ctrl+K` (Linux/Windows) za umetanje referenci datoteka. Na primjer, `@File#L37-42`.
+
+---
+
+## Instalacija
+Da biste instalirali OpenCode na VS Code i popularne viljuške kao što su Cursor, Windsurf, VSCodium:
+1. Otvorite VS Code
+2. Otvorite integrirani terminal
+3. Pokrenite `opencode` - ekstenzija se automatski instalira
+Ako s druge strane želite da koristite svoj vlastiti IDE kada pokrenete `/editor` ili `/export` iz TUI-ja, morat ćete postaviti `export EDITOR="code --wait"`. [Saznajte više](/docs/tui/#editor-setup).
+
+---
+
+### Ručna instalacija
+Potražite **OpenCode** na Extension Marketplaceu i kliknite na **Instaliraj**.
+
+---
+
+### Rješavanje problema
+Ako se ekstenzija ne uspije automatski instalirati:
+- Uvjerite se da koristite `opencode` u integriranom terminalu.
+- Potvrdite da je CLI za vaš IDE instaliran:
+ - Za VS kod: `code` naredbu
+ - Za kursor: `cursor` naredba
+ - Za jedrenje na dasci: `windsurf` komanda
+ - Za VSCodium: `codium` komanda
+ - Ako ne, pokrenite `Cmd+Shift+P` (Mac) ili `Ctrl+Shift+P` (Windows/Linux) i potražite "Shell Command: Install 'code' command in PATH" (ili ekvivalent za vaš IDE)
+- Osigurajte da VS Code ima dozvolu za instaliranje ekstenzija
\ No newline at end of file
diff --git a/packages/web/src/content/docs/bs/index.mdx b/packages/web/src/content/docs/bs/index.mdx
new file mode 100644
index 000000000..b3ab917c9
--- /dev/null
+++ b/packages/web/src/content/docs/bs/index.mdx
@@ -0,0 +1,360 @@
+---
+title: Intro
+description: Započnite s OpenCodeom.
+---
+
+import { Tabs, TabItem } from "@astrojs/starlight/components"
+import config from "../../../../config.mjs"
+export const console = config.console
+
+[**OpenCode**](/) je agent za AI kodiranje otvorenog koda. Dostupan je kao interfejs baziran na terminalu, desktop aplikacija ili IDE ekstenzija.
+
+Hajde da počnemo.
+
+---
+
+#### Preduvjeti
+
+Da biste koristili OpenCode u svom terminalu, trebat će vam:
+
+1. Moderan emulator terminala kao što su:
+ - [WezTerm](https://wezterm.org), multi-platforma
+ - [Alacritty](https://alacritty.org), više platforma
+ - [Ghostty](https://ghostty.org), Linux i macOS
+ - [Kitty](https://sw.kovidgoyal.net/kitty/), Linux i macOS
+2. API ključevi za LLM provajdere koje želite koristiti.
+
+---
+
+## Instaliraj
+
+Najlakši način za instaliranje OpenCode-a je putem instalacione skripte.
+
+```bash
+curl -fsSL https://opencode.ai/install | bash
+```
+
+Također ga možete instalirati pomoću sljedećih naredbi:
+
+- **Korišćenje Node.js**
+
+
+
+
+ ```bash
+ npm install -g opencode-ai
+ ```
+
+
+
+
+ ```bash
+ bun install -g opencode-ai
+ ```
+
+
+
+
+ ```bash
+ pnpm install -g opencode-ai
+ ```
+
+
+
+
+ ```bash
+ yarn global add opencode-ai
+ ```
+
+
+
+
+
+- **Korišćenje Homebrew-a na macOS-u i Linux-u**
+
+```bash
+ brew install anomalyco/tap/opencode
+
+
+```
+
+> Preporučujemo korištenje OpenCode tap za najnovija izdanja. Službenu formulu `brew install opencode` održava Homebrew tim i ažurira se rjeđe.
+
+- **Korišćenje Parua na Arch Linuxu**
+
+```bash
+ paru -S opencode-bin
+
+
+```
+
+#### Windows
+
+:::tip[Preporučeno: Koristite WSL]
+Za najbolje iskustvo na Windows-u preporučujemo korištenje [Windows Subsystem for Linux (WSL)](/docs/windows-wsl). Pruža bolje performanse i potpunu kompatibilnost sa OpenCode karakteristikama.
+:::
+
+- **Upotreba čokolade**
+
+```bash
+ choco install opencode
+
+
+```
+
+- **Upotreba Scoop-a**
+
+```bash
+ scoop install opencode
+
+
+```
+
+- **Upotreba NPM-a**
+
+```bash
+ npm install -g opencode-ai
+
+
+```
+
+- **Korišćenje Mise**
+
+```bash
+ mise use -g github:anomalyco/opencode
+
+
+```
+
+- **Korišćenje Dockera**
+
+```bash
+ docker run -it --rm ghcr.io/anomalyco/opencode
+
+
+```
+
+Podrška za instaliranje OpenCode-a na Windows koristeći Bun je trenutno u toku.
+Također možete preuzeti binarnu datoteku iz [Releases](https://github.com/anomalyco/opencode/releases).
+
+---
+
+## Konfiguriši
+
+Uz OpenCode možete koristiti bilo kojeg LLM provajdera tako što ćete konfigurirati njihove API ključeve.
+Ako ste tek počeli koristiti LLM provajdere, preporučujemo korištenje [OpenCode Zen](/docs/zen).
+To je kurirana lista modela koji su testirani i verifikovani od strane OpenCode-a
+tim.
+
+1. Pokrenite naredbu `/connect` u TUI-u, odaberite opencode i idite na [opencode.ai/auth](https://opencode.ai/auth).
+
+```txt
+ /connect
+
+
+```
+
+2. Prijavite se, dodajte svoje detalje naplate i kopirajte svoj API ključ.
+3. Zalijepite svoj API ključ.
+
+```txt
+ ┌ API key
+ │
+ │
+ └ enter
+
+
+```
+
+Alternativno, možete odabrati jednog od drugih provajdera. [Saznajte više](/docs/providers#directory).
+
+---
+
+## Inicijaliziraj
+
+Sada kada ste konfigurisali provajdera, možete se kretati do projekta koji
+na čemu želite da radite.
+
+```bash
+cd /path/to/project
+```
+
+I pokrenite OpenCode.
+
+```bash
+opencode
+```
+
+Zatim inicijalizirajte OpenCode za projekat pokretanjem sljedeće naredbe.
+
+```bash frame="none"
+/init
+```
+
+Ovo će omogućiti OpenCode da analizira vaš projekat i kreira `AGENTS.md` fajl u njemu
+korijen projekta.
+:::tip
+Trebali biste urezati datoteku `AGENTS.md` vašeg projekta u Git.
+:::
+Ovo pomaže OpenCodeu da razumije strukturu projekta i obrasce kodiranja
+korišteno.
+
+---
+
+## Upotreba
+
+Sada ste spremni da koristite OpenCode za rad na svom projektu. Slobodno pitajte
+bilo šta!
+Ako ste novi u korištenju agenta za AI kodiranje, evo nekoliko primjera koji bi mogli
+pomoć.
+
+---
+
+### Postavljajte pitanja
+
+Možete zamoliti OpenCode da vam objasni kodnu bazu.
+:::tip
+Koristite tipku `@` za nejasnu pretragu datoteka u projektu.
+:::
+
+```txt frame="none" "@packages/functions/src/api/index.ts"
+How is authentication handled in @packages/functions/src/api/index.ts
+```
+
+Ovo je korisno ako postoji dio kodne baze na kojem niste radili.
+
+---
+
+### Dodajte karakteristike
+
+Možete zamoliti OpenCode da vašem projektu doda nove funkcije. Iako preporučujemo da ga prvo zamolite da napravi plan.
+
+1. **Kreirajte plan**
+ OpenCode ima _Plan mod_ koji onemogućuje njegovu sposobnost da pravi promjene i
+ umjesto toga predložite _kako_ će implementirati ovu funkciju.
+ Prebacite se na njega pomoću tipke **Tab**. Vidjet ćete indikator za ovo u donjem desnom uglu.
+
+```bash frame="none" title="Switch to Plan mode"
+
+
+
+```
+
+Hajde sada da opišemo šta želimo da uradi.
+
+```txt frame="none"
+ When a user deletes a note, we'd like to flag it as deleted in the database.
+ Then create a screen that shows all the recently deleted notes.
+ From this screen, the user can undelete a note or permanently delete it.
+
+
+```
+
+Želite da date OpenCode-u dovoljno detalja da razumete šta želite. Pomaže
+da razgovarate s njim kao da razgovarate sa mlađim programerom u svom timu.
+:::tip
+Dajte OpenCodeu dosta konteksta i primjera koji će mu pomoći da razumije šta vi
+želim. ::: 2. **Ponovite plan**
+Kada vam da plan, možete mu dati povratne informacije ili dodati više detalja.
+
+```txt frame="none"
+ We'd like to design this new screen using a design I've used before.
+ [Image #1] Take a look at this image and use it as a reference.
+
+
+```
+
+:::tip
+Prevucite i ispustite slike u terminal da biste ih dodali u prompt. :::
+OpenCode može skenirati sve slike koje mu date i dodati ih u prompt. Možeš
+učinite to povlačenjem i ispuštanjem slike u terminal. 3. **Izgradite funkciju**
+Kada se osjećate ugodno s planom, vratite se na _Build mode_ do
+ponovnim pritiskom na taster **Tab**.
+
+```bash frame="none"
+
+
+
+```
+
+I tražeći od njega da napravi promjene.
+
+```bash frame="none"
+ Sounds good! Go ahead and make the changes.
+
+
+```
+
+---
+
+### Napravite promjene
+
+Za jednostavnije promjene, možete zamoliti OpenCode da ga direktno izgradi
+bez potrebe da prvo pregledate plan.
+
+```txt frame="none" "@packages/functions/src/settings.ts" "@packages/functions/src/notes.ts"
+We need to add authentication to the /settings route. Take a look at how this is
+handled in the /notes route in @packages/functions/src/notes.ts and implement
+the same logic in @packages/functions/src/settings.ts
+```
+
+Želite da budete sigurni da ste pružili dobru količinu detalja kako bi OpenCode bio ispravan
+promjene.
+
+---
+
+### Poništi promjene
+
+Recimo da tražite od OpenCodea da izvrši neke promjene.
+
+```txt frame="none" "@packages/functions/src/api/index.ts"
+Can you refactor the function in @packages/functions/src/api/index.ts?
+```
+
+Ali shvatate da to nije ono što ste želeli. Možete **poništiti** promjene
+koristeći naredbu `/undo`.
+
+```bash frame="none"
+/undo
+```
+
+OpenCode će sada poništiti promjene koje ste napravili i prikazati vašu originalnu poruku
+opet.
+
+```txt frame="none" "@packages/functions/src/api/index.ts"
+Can you refactor the function in @packages/functions/src/api/index.ts?
+```
+
+Odavde možete podesiti prompt i zamoliti OpenCode da pokuša ponovo.
+:::tip
+Možete pokrenuti `/undo` više puta da poništite više promjena.
+:::
+Ili **možete ponoviti** promjene koristeći naredbu `/redo`.
+
+```bash frame="none"
+/redo
+```
+
+---
+
+## Dijeli
+
+Razgovore koje imate sa OpenCodeom možete [dijeliti sa vašim
+tim](/docs/share).
+
+```bash frame="none"
+/share
+```
+
+Ovo će kreirati vezu do trenutnog razgovora i kopirati je u međuspremnik.
+:::note
+Razgovori se ne dijele prema zadanim postavkama.
+:::
+Evo [primjer razgovora](https://opencode.ai/s/4XP1fce5) sa OpenCodeom.
+
+---
+
+## Prilagodi
+
+I to je to! Sada ste profesionalac u korištenju OpenCodea.
+Da biste to učinili svojim, preporučujemo [odabir teme](/docs/themes), [prilagođavanje povezivanja tipki](/docs/keybinds), [konfiguriranje formatera koda](/docs/formatters), [kreiranje prilagođenih komandi](/docs/commands), ili igranje sa [OpenCode config](/docs/config).
diff --git a/packages/web/src/content/docs/bs/keybinds.mdx b/packages/web/src/content/docs/bs/keybinds.mdx
new file mode 100644
index 000000000..d586d56d3
--- /dev/null
+++ b/packages/web/src/content/docs/bs/keybinds.mdx
@@ -0,0 +1,182 @@
+---
+title: Keybinds
+description: Prilagodite svoje veze dugmadi.
+---
+
+OpenCode ima listu veza ključeva koje možete prilagoditi preko OpenCode konfiguracije.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "keybinds": {
+ "leader": "ctrl+x",
+ "app_exit": "ctrl+c,ctrl+d,q",
+ "editor_open": "e",
+ "theme_list": "t",
+ "sidebar_toggle": "b",
+ "scrollbar_toggle": "none",
+ "username_toggle": "none",
+ "status_view": "s",
+ "tool_details": "none",
+ "session_export": "x",
+ "session_new": "n",
+ "session_list": "l",
+ "session_timeline": "g",
+ "session_fork": "none",
+ "session_rename": "none",
+ "session_share": "none",
+ "session_unshare": "none",
+ "session_interrupt": "escape",
+ "session_compact": "c",
+ "session_child_cycle": "right",
+ "session_child_cycle_reverse": "left",
+ "session_parent": "up",
+ "messages_page_up": "pageup,ctrl+alt+b",
+ "messages_page_down": "pagedown,ctrl+alt+f",
+ "messages_line_up": "ctrl+alt+y",
+ "messages_line_down": "ctrl+alt+e",
+ "messages_half_page_up": "ctrl+alt+u",
+ "messages_half_page_down": "ctrl+alt+d",
+ "messages_first": "ctrl+g,home",
+ "messages_last": "ctrl+alt+g,end",
+ "messages_next": "none",
+ "messages_previous": "none",
+ "messages_copy": "y",
+ "messages_undo": "u",
+ "messages_redo": "r",
+ "messages_last_user": "none",
+ "messages_toggle_conceal": "h",
+ "model_list": "m",
+ "model_cycle_recent": "f2",
+ "model_cycle_recent_reverse": "shift+f2",
+ "model_cycle_favorite": "none",
+ "model_cycle_favorite_reverse": "none",
+ "variant_cycle": "ctrl+t",
+ "command_list": "ctrl+p",
+ "agent_list": "a",
+ "agent_cycle": "tab",
+ "agent_cycle_reverse": "shift+tab",
+ "input_clear": "ctrl+c",
+ "input_paste": "ctrl+v",
+ "input_submit": "return",
+ "input_newline": "shift+return,ctrl+return,alt+return,ctrl+j",
+ "input_move_left": "left,ctrl+b",
+ "input_move_right": "right,ctrl+f",
+ "input_move_up": "up",
+ "input_move_down": "down",
+ "input_select_left": "shift+left",
+ "input_select_right": "shift+right",
+ "input_select_up": "shift+up",
+ "input_select_down": "shift+down",
+ "input_line_home": "ctrl+a",
+ "input_line_end": "ctrl+e",
+ "input_select_line_home": "ctrl+shift+a",
+ "input_select_line_end": "ctrl+shift+e",
+ "input_visual_line_home": "alt+a",
+ "input_visual_line_end": "alt+e",
+ "input_select_visual_line_home": "alt+shift+a",
+ "input_select_visual_line_end": "alt+shift+e",
+ "input_buffer_home": "home",
+ "input_buffer_end": "end",
+ "input_select_buffer_home": "shift+home",
+ "input_select_buffer_end": "shift+end",
+ "input_delete_line": "ctrl+shift+d",
+ "input_delete_to_line_end": "ctrl+k",
+ "input_delete_to_line_start": "ctrl+u",
+ "input_backspace": "backspace,shift+backspace",
+ "input_delete": "ctrl+d,delete,shift+delete",
+ "input_undo": "ctrl+-,super+z",
+ "input_redo": "ctrl+.,super+shift+z",
+ "input_word_forward": "alt+f,alt+right,ctrl+right",
+ "input_word_backward": "alt+b,alt+left,ctrl+left",
+ "input_select_word_forward": "alt+shift+f,alt+shift+right",
+ "input_select_word_backward": "alt+shift+b,alt+shift+left",
+ "input_delete_word_forward": "alt+d,alt+delete,ctrl+delete",
+ "input_delete_word_backward": "ctrl+w,ctrl+backspace,alt+backspace",
+ "history_previous": "up",
+ "history_next": "down",
+ "terminal_suspend": "ctrl+z",
+ "terminal_title_toggle": "none",
+ "tips_toggle": "h",
+ "display_thinking": "none"
+ }
+}
+```
+
+---
+
+## Leader key
+OpenCode koristi `leader` ključ za većinu povezivanja tipki. Ovo izbjegava sukobe u vašem terminalu.
+Prema zadanim postavkama, `ctrl+x` je vodeći taster i većina radnji zahtijeva da prvo pritisnete vodeći taster, a zatim i prečicu. Na primjer, da biste započeli novu sesiju, prvo pritisnite `ctrl+x`, a zatim pritisnite `n`.
+Ne morate koristiti vodeći ključ za svoje veze tipki, ali preporučujemo da to učinite.
+
+---
+
+## Onemogući povezivanje tastera
+Možete onemogućiti spajanje tipki dodavanjem ključa u svoju konfiguraciju s vrijednošću "none".
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "keybinds": {
+ "session_compact": "none"
+ }
+}
+```
+
+---
+
+## Prečice za radnu površinu
+Unos prompta aplikacije OpenCode za desktop podržava uobičajene prečice u stilu Readline/Emacs za uređivanje teksta. Oni su ugrađeni i trenutno se ne mogu konfigurirati putem `opencode.json`.
+| Prečica | Akcija || -------- | ---------------------------------------- |
+| `ctrl+a` | Prelazak na početak tekućeg reda |
+| `ctrl+e` | Prelazak na kraj trenutnog reda |
+| `ctrl+b` | Pomeri kursor za jedan znak unazad |
+| `ctrl+f` | Pomicanje kursora naprijed za jedan znak |
+| `alt+b` | Pomeri kursor za jednu reč unazad |
+| `alt+f` | Pomeri kursor za jednu reč unapred |
+| `ctrl+d` | Izbriši znak ispod kursora |
+| `ctrl+k` | Ubiti do kraja reda |
+| `ctrl+u` | Kill do početka reda |
+| `ctrl+w` | Ubiti prethodnu riječ |
+| `alt+d` | Ubiti sljedeću riječ |
+| `ctrl+t` | Transponirajte znakove |
+| `ctrl+g` | Otkaži iskakanje / poništi odgovor na pokretanje |
+
+---
+
+## Shift+Enter
+Neki terminali ne šalju modifikatorske tipke sa Enter prema zadanim postavkama. Možda ćete trebati konfigurirati svoj terminal da pošalje `Shift+Enter` kao escape sekvencu.
+### Windows terminal
+Otvorite svoj `settings.json` na:
+
+```
+%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
+```
+
+Dodajte ovo u niz korijenskog nivoa `actions`:
+
+```json
+"actions": [
+ {
+ "command": {
+ "action": "sendInput",
+ "input": "\u001b[13;2u"
+ },
+ "id": "User.sendInput.ShiftEnterCustom"
+ }
+]
+```
+
+Dodajte ovo u niz korijenskog nivoa `keybindings`:
+
+```json
+"keybindings": [
+ {
+ "keys": "shift+enter",
+ "id": "User.sendInput.ShiftEnterCustom"
+ }
+]
+```
+
+Sačuvajte datoteku i ponovo pokrenite Windows Terminal ili otvorite novu karticu.
\ No newline at end of file
diff --git a/packages/web/src/content/docs/bs/lsp.mdx b/packages/web/src/content/docs/bs/lsp.mdx
new file mode 100644
index 000000000..caf7ddaf5
--- /dev/null
+++ b/packages/web/src/content/docs/bs/lsp.mdx
@@ -0,0 +1,160 @@
+---
+title: LSP serveri
+description: OpenCode se integriše sa vašim LSP serverima.
+---
+
+OpenCode se integriše sa vašim jezičkim serverskim protokolom (LSP) kako bi pomogao LLM-u u interakciji s vašom bazom koda. Koristi dijagnostiku za pružanje povratnih informacija LLM-u.
+---
+
+## Ugrađeno
+OpenCode dolazi sa nekoliko ugrađenih LSP servera za popularne jezike:
+| LSP server | Ekstenzije | Zahtjevi || ------------------ | ------------------------------------------------------------------- | ------------------------------------------------------------ |
+| astro | .astro | Automatske instalacije za Astro projekte |
+| bash | .sh, .bash, .zsh, .ksh | Automatski instalira bash-language-server |
+| clangd | .c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++ | Automatske instalacije za C/C++ projekte |
+| csharp | .cs | `.NET SDK` instaliran |
+| clojure-lsp | .clj, .cljs, .cljc, .edn | `clojure-lsp` komanda dostupna |
+| dart | .dart | `dart` komanda dostupna |
+| deno | .ts, .tsx, .js, .jsx, .mjs | `deno` komanda dostupna (automatski detektuje deno.json/deno.jsonc) |
+| elixir-ls | .ex, .exs | `elixir` komanda dostupna |
+| eslint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue | `eslint` ovisnost u projektu |
+| fsharp | .fs, .fsi, .fsx, .fsscript | `.NET SDK` instaliran |
+| sjaj | .bleam | `gleam` komanda dostupna |
+| gopls | .go | `go` komanda dostupna |
+| hls | .hs, .lhs | `haskell-language-server-wrapper` komanda dostupna |
+| jdtls | .java | `Java SDK (version 21+)` instaliran |
+| kotlin-ls | .kt, .kts | Automatske instalacije za Kotlin projekte |
+| lua-ls | .lua | Automatske instalacije za Lua projekte |
+| nixd | .nix | `nixd` komanda dostupna |
+| ocaml-lsp | .ml, .mli | `ocamllsp` komanda dostupna |
+| oxlint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelte | `oxlint` zavisnost u projektu |
+| php intelephense | .php | Automatske instalacije za PHP projekte |
+| prisma | .prisma | `prisma` komanda dostupna |
+| pyright | .py, .pyi | `pyright` ovisnost instalirana |
+| ruby-lsp (rubocop) | .rb, .rake, .gemspec, .ru | `ruby` i `gem` komande dostupne |
+| hrđa | .rs | `rust-analyzer` komanda dostupna |
+| sourcekit-lsp | .swift, .objc, .objcpp | `swift` instaliran (`xcode` na macOS-u) |
+| vitka | .svelte | Automatske instalacije za Svelte projekte |
+| terraform | .tf, .tfvars | Automatske instalacije iz GitHub izdanja |
+| tinymist | .typ, .typc | Automatske instalacije iz GitHub izdanja |
+| strojopis | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts | `typescript` zavisnost u projektu |
+| vue | .vue | Automatske instalacije za Vue projekte |
+| yaml-ls | .yaml, .yml | Automatski instalira Red Hat yaml-language-server |
+| zls | .zig, .zon | `zig` komanda dostupna |
+LSP serveri su automatski omogućeni kada se otkrije jedna od gore navedenih ekstenzija datoteke i zahtjevi su ispunjeni.
+:::napomena
+Možete onemogućiti automatska preuzimanja LSP servera tako što ćete postaviti varijablu okruženja `OPENCODE_DISABLE_LSP_DOWNLOAD` na `true`.
+:::
+
+---
+
+## Kako radi
+Kada opencode otvori fajl, on:
+1. Provjerava ekstenziju datoteke u odnosu na sve omogućene LSP servere.
+2. Pokreće odgovarajući LSP server ako već nije pokrenut.
+---
+
+## Konfiguriši
+Možete prilagoditi LSP servere kroz `lsp` odjeljak u vašoj opencode konfiguraciji.
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "lsp": {}
+}
+```
+
+Svaki LSP server podržava sljedeće:
+| Nekretnine | Vrsta | Opis || ---------------- | -------- | ------------------------------------------------- |
+| `disabled` | boolean | Postavite ovo na `true` da onemogućite LSP server |
+| `command` | string[] | Naredba za pokretanje LSP servera |
+| `extensions` | string[] | Ekstenzije datoteka koje ovaj LSP server treba da rukuje |
+| `env` | objekt | Varijable okruženja koje treba postaviti prilikom pokretanja servera |
+| `initialization` | objekt | Opcije inicijalizacije za slanje na LSP server |
+Pogledajmo neke primjere.
+---
+
+### Varijable okruženja
+Koristite svojstvo `env` za postavljanje varijabli okruženja prilikom pokretanja LSP servera:
+```json title="opencode.json" {5-7}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "lsp": {
+ "rust": {
+ "env": {
+ "RUST_LOG": "debug"
+ }
+ }
+ }
+}
+```
+
+---
+
+### Opcije inicijalizacije
+Koristite svojstvo `initialization` da prosledite opcije inicijalizacije na LSP server. Ovo su postavke specifične za server poslane tokom LSP `initialize` zahtjeva:
+```json title="opencode.json" {5-9}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "lsp": {
+ "typescript": {
+ "initialization": {
+ "preferences": {
+ "importModuleSpecifierPreference": "relative"
+ }
+ }
+ }
+ }
+}
+```
+
+:::napomena
+Opcije inicijalizacije razlikuju se od LSP servera. Provjerite dokumentaciju vašeg LSP servera za dostupne opcije.
+:::
+
+---
+
+### Onemogućavanje LSP servera
+Da biste onemogućili **sve** LSP servere globalno, postavite `lsp` na `false`:
+```json title="opencode.json" {3}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "lsp": false
+}
+```
+
+Da onemogućite **specifičan** LSP server, postavite `disabled` na `true`:
+```json title="opencode.json" {5}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "lsp": {
+ "typescript": {
+ "disabled": true
+ }
+ }
+}
+```
+
+---
+
+### Prilagođeni LSP serveri
+Možete dodati prilagođene LSP servere navodeći ekstenzije naredbe i datoteke:
+```json title="opencode.json" {4-7}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "lsp": {
+ "custom-lsp": {
+ "command": ["custom-lsp-server", "--stdio"],
+ "extensions": [".custom"]
+ }
+ }
+}
+```
+
+---
+
+## Dodatne informacije
+### PHP Intelephense
+PHP Intelephense nudi vrhunske funkcije putem licencnog ključa. Možete dati licencni ključ postavljanjem (samo) ključa u tekstualnu datoteku na:
+- Na macOS/Linuxu: `$HOME/intelephense/licence.txt`
+- Na Windowsima: `%USERPROFILE%/intelephense/licence.txt`
+Datoteka treba da sadrži samo licencni ključ bez dodatnog sadržaja.
\ No newline at end of file
diff --git a/packages/web/src/content/docs/bs/mcp-servers.mdx b/packages/web/src/content/docs/bs/mcp-servers.mdx
new file mode 100644
index 000000000..90b5f03d8
--- /dev/null
+++ b/packages/web/src/content/docs/bs/mcp-servers.mdx
@@ -0,0 +1,432 @@
+---
+title: MCP serveri
+description: Dodajte lokalne i udaljene MCP alate.
+---
+
+Možete dodati vanjske alate u OpenCode koristeći _Model Context Protocol_, ili MCP. OpenCode podržava i lokalne i udaljene servere.
+Jednom dodani, MCP alati su automatski dostupni LLM-u zajedno sa ugrađenim alatima.
+---
+
+#### Upozorenja
+Kada koristite MCP server, on dodaje u kontekst. Ovo se može brzo zbrojiti ako imate puno alata. Stoga preporučujemo da pazite koje MCP servere koristite.
+:::tip
+MCP serveri dodaju vaš kontekst, tako da želite da budete pažljivi s tim koje ćete omogućiti.
+:::
+
+Određeni MCP serveri, poput GitHub MCP servera, imaju tendenciju da dodaju mnogo tokena i lako mogu premašiti ograničenje konteksta.
+---
+
+## Omogući
+Možete definirati MCP servere u vašoj [OpenCode Config](https://opencode.ai/docs/config/) pod `mcp`. Dodajte svaki MCP sa jedinstvenim imenom. Možete se pozvati na taj MCP po imenu kada tražite LLM.
+```jsonc title="opencode.jsonc" {6}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "name-of-mcp-server": {
+ // ...
+ "enabled": true,
+ },
+ "name-of-other-mcp-server": {
+ // ...
+ },
+ },
+}
+```
+
+Također možete onemogućiti server postavljanjem `enabled` na `false`. Ovo je korisno ako želite privremeno onemogućiti server bez uklanjanja iz vaše konfiguracije.
+---
+
+### Poništavanje daljinskih zadanih postavki
+Organizacije mogu obezbijediti zadane MCP servere preko svoje krajnje tačke `.well-known/opencode`. Ovi serveri mogu biti onemogućeni prema zadanim postavkama, omogućavajući korisnicima da se odluče za one koji su im potrebni.
+Da omogućite određeni server iz udaljene konfiguracije vaše organizacije, dodajte ga u svoju lokalnu konfiguraciju sa `enabled: true`:
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "jira": {
+ "type": "remote",
+ "url": "https://jira.example.com/mcp",
+ "enabled": true
+ }
+ }
+}
+```
+
+Vrijednosti vaše lokalne konfiguracije nadjačavaju udaljene zadane postavke. Pogledajte [config precedence](/docs/config#precedence-order) za više detalja.
+---
+
+## Lokalno
+Dodajte lokalne MCP servere koristeći `type` u `"local"` unutar MCP objekta.
+```jsonc title="opencode.jsonc" {15}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "my-local-mcp-server": {
+ "type": "local",
+ // Or ["bun", "x", "my-mcp-command"]
+ "command": ["npx", "-y", "my-mcp-command"],
+ "enabled": true,
+ "environment": {
+ "MY_ENV_VAR": "my_env_var_value",
+ },
+ },
+ },
+}
+```
+
+Naredba je način na koji se pokreće lokalni MCP server. Također možete proslijediti listu varijabli okruženja.
+Na primjer, evo kako možete dodati testni [`@modelcontextprotocol/server-everything`](https://www.npmjs.com/package/@modelcontextprotocol/server-everything) MCP server.
+```jsonc title="opencode.jsonc"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "mcp_everything": {
+ "type": "local",
+ "command": ["npx", "-y", "@modelcontextprotocol/server-everything"],
+ },
+ },
+}
+```
+
+I da ga koristim mogu dodati `use the mcp_everything tool` u svoje upite.
+```txt "mcp_everything"
+use the mcp_everything tool to add the number 3 and 4
+```
+
+---
+
+#### Opcije
+Ovdje su sve opcije za konfiguriranje lokalnog MCP servera.
+| Opcija | Vrsta | Obavezno | Opis || ------------- | ------- | -------- | ----------------------------------------------------------------------------------- |
+| `type` | String | Y | Tip veze sa MCP serverom, mora biti `"local"`. |
+| `command` | Niz | Y | Naredba i argumenti za pokretanje MCP servera. |
+| `environment` | Objekt | | Varijable okruženja koje treba postaviti prilikom pokretanja servera. |
+| `enabled` | Boolean | | Omogućite ili onemogućite MCP server pri pokretanju. |
+| `timeout` | Broj | | Vremensko ograničenje u ms za dohvaćanje alata sa MCP servera. Podrazumevano je 5000 (5 sekundi). |
+---
+
+## Daljinski
+Dodajte udaljene MCP servere postavljanjem `type` na `"remote"`.
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "my-remote-mcp": {
+ "type": "remote",
+ "url": "https://my-mcp-server.com",
+ "enabled": true,
+ "headers": {
+ "Authorization": "Bearer MY_API_KEY"
+ }
+ }
+ }
+}
+```
+
+`url` je URL udaljenog MCP servera i sa opcijom `headers` možete proslijediti listu zaglavlja.
+---
+
+#### Opcije
+| Opcija | Vrsta | Obavezno | Opis || --------- | ------- | -------- | ----------------------------------------------------------------------------------- |
+| `type` | String | Y | Tip veze sa MCP serverom, mora biti `"remote"`. |
+| `url` | String | Y | URL udaljenog MCP servera. |
+| `enabled` | Boolean | | Omogućite ili onemogućite MCP server pri pokretanju. |
+| `headers` | Objekt | | Zaglavlja za slanje uz zahtjev. |
+| `oauth` | Objekt | | Konfiguracija OAuth provjere autentičnosti. Pogledajte odjeljak [OAuth](#oauth) ispod. |
+| `timeout` | Broj | | Vremensko ograničenje u ms za preuzimanje alata sa MCP servera. Podrazumevano je 5000 (5 sekundi). |
+---
+
+## OAuth
+OpenCode automatski rukuje OAuth autentifikacijom za udaljene MCP servere. Kada server zahtijeva autentifikaciju, OpenCode će:
+1. Otkrijte 401 odgovor i pokrenite OAuth tok
+2. Koristite **Dynamic Client Registration (RFC 7591)** ako podržava server
+3. Sigurno čuvajte tokene za buduće zahtjeve
+---
+
+### Automatski
+Za većinu MCP servera sa omogućenim OAuthom nije potrebna posebna konfiguracija. Samo konfigurirajte udaljeni server:
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "my-oauth-server": {
+ "type": "remote",
+ "url": "https://mcp.example.com/mcp"
+ }
+ }
+}
+```
+
+Ako server zahtijeva autentifikaciju, OpenCode će od vas zatražiti autentifikaciju kada prvi put pokušate da ga koristite. Ako ne, možete [ručno pokrenuti tok](#authenticating) sa `opencode mcp auth `.
+---
+
+### Prethodno registrovano
+Ako imate klijentske vjerodajnice od dobavljača MCP servera, možete ih konfigurirati:
+```json title="opencode.json" {7-11}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "my-oauth-server": {
+ "type": "remote",
+ "url": "https://mcp.example.com/mcp",
+ "oauth": {
+ "clientId": "{env:MY_MCP_CLIENT_ID}",
+ "clientSecret": "{env:MY_MCP_CLIENT_SECRET}",
+ "scope": "tools:read tools:execute"
+ }
+ }
+ }
+}
+```
+
+---
+
+### Autentifikacija
+Možete ručno pokrenuti autentifikaciju ili upravljati vjerodajnicama.
+Autentifikacija sa određenim MCP serverom:
+```bash
+opencode mcp auth my-oauth-server
+```
+
+Navedite sve MCP servere i njihov status autentifikacije:
+```bash
+opencode mcp list
+```
+
+Uklonite pohranjene vjerodajnice:
+```bash
+opencode mcp logout my-oauth-server
+```
+
+Komanda `mcp auth` će otvoriti vaš pretraživač za autorizaciju. Nakon što odobrite, OpenCode će sigurno pohraniti tokene u `~/.local/share/opencode/mcp-auth.json`.
+---
+
+#### Onemogućavanje OAuth-a
+Ako želite onemogućiti automatski OAuth za server (npr. za servere koji umjesto toga koriste API ključeve), postavite `oauth` na `false`:
+```json title="opencode.json" {7}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "my-api-key-server": {
+ "type": "remote",
+ "url": "https://mcp.example.com/mcp",
+ "oauth": false,
+ "headers": {
+ "Authorization": "Bearer {env:MY_API_KEY}"
+ }
+ }
+ }
+}
+```
+
+---
+
+#### OAuth opcije
+| Opcija | Vrsta | Opis || -------------- | --------------- | -------------------------------------------------------------------------------- |
+| `oauth` | Objekt \| false | OAuth konfiguracijski objekt, ili `false` da onemogućite automatsko otkrivanje OAuth. |
+| `clientId` | String | ID OAuth klijenta. Ako nije navedeno, pokušat će se izvršiti dinamička registracija klijenta. |
+| `clientSecret` | String | Tajna OAuth klijenta, ako to zahtijeva autorizacijski server. |
+| `scope` | String | OAuth opseg zahtjeva za vrijeme autorizacije. |
+#### Otklanjanje grešaka
+Ako udaljeni MCP server ne uspije u autentifikaciji, možete dijagnosticirati probleme pomoću:
+```bash
+# View auth status for all OAuth-capable servers
+opencode mcp auth list
+
+# Debug connection and OAuth flow for a specific server
+opencode mcp debug my-oauth-server
+```
+
+Komanda `mcp debug` pokazuje trenutni status auth, testira HTTP povezanost i pokušava tok otkrivanja OAuth.
+---
+
+## Upravljaj
+Vaši MCP-ovi su dostupni kao alati u OpenCode-u, zajedno sa ugrađenim alatima. Tako da možete upravljati njima kroz OpenCode konfiguraciju kao i svaki drugi alat.
+---
+
+### Global
+To znači da ih možete omogućiti ili onemogućiti globalno.
+```json title="opencode.json" {14}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "my-mcp-foo": {
+ "type": "local",
+ "command": ["bun", "x", "my-mcp-command-foo"]
+ },
+ "my-mcp-bar": {
+ "type": "local",
+ "command": ["bun", "x", "my-mcp-command-bar"]
+ }
+ },
+ "tools": {
+ "my-mcp-foo": false
+ }
+}
+```
+
+Također možemo koristiti glob obrazac da onemogućimo sve odgovarajuće MCP-ove.
+```json title="opencode.json" {14}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "my-mcp-foo": {
+ "type": "local",
+ "command": ["bun", "x", "my-mcp-command-foo"]
+ },
+ "my-mcp-bar": {
+ "type": "local",
+ "command": ["bun", "x", "my-mcp-command-bar"]
+ }
+ },
+ "tools": {
+ "my-mcp*": false
+ }
+}
+```
+
+Ovdje koristimo glob obrazac `my-mcp*` da onemogućimo sve MCP-ove.
+---
+
+### Po agentu
+Ako imate veliki broj MCP servera, možda ćete želeti da ih omogućite samo po agentu i da ih onemogućite globalno. Da biste to učinili:
+1. Onemogućite ga kao alat globalno.
+2. U vašem [agent config](/docs/agents#tools), omogućite MCP server kao alat.
+```json title="opencode.json" {11, 14-18}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "my-mcp": {
+ "type": "local",
+ "command": ["bun", "x", "my-mcp-command"],
+ "enabled": true
+ }
+ },
+ "tools": {
+ "my-mcp*": false
+ },
+ "agent": {
+ "my-agent": {
+ "tools": {
+ "my-mcp*": true
+ }
+ }
+ }
+}
+```
+
+---
+
+#### Glob uzorci
+Uzorak glob koristi jednostavne šablone globbiranja regularnih izraza:
+- `*` odgovara nuli ili više bilo kojeg znaka (npr. `"my-mcp*"` odgovara `my-mcp_search`, `my-mcp_list`, itd.)
+- `?` odgovara tačno jednom znaku
+- Svi ostali likovi se bukvalno podudaraju
+:::napomena
+MCP serverski alati se registruju sa imenom servera kao prefiksom, tako da onemogućite sve alate za server jednostavno koristite:
+```
+"mymcpservername_*": false
+```
+
+:::
+
+---
+
+## Primjeri
+Ispod su primjeri nekih uobičajenih MCP servera. Možete poslati PR ako želite dokumentirati druge servere.
+---
+
+### Stražar
+Dodajte [Sentry MCP server](https://mcp.sentry.dev) za interakciju sa vašim Sentry projektima i problemima.
+```json title="opencode.json" {4-8}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "sentry": {
+ "type": "remote",
+ "url": "https://mcp.sentry.dev/mcp",
+ "oauth": {}
+ }
+ }
+}
+```
+
+Nakon dodavanja konfiguracije, autentifikujte se sa Sentry:
+```bash
+opencode mcp auth sentry
+```
+
+Ovo će otvoriti prozor pretraživača da završite OAuth tok i povežete OpenCode sa vašim Sentry nalogom.
+Nakon provjere autentičnosti, možete koristiti Sentry alate u svojim upitima za upite o problemima, projektima i podacima o greškama.
+```txt "use sentry"
+Show me the latest unresolved issues in my project. use sentry
+```
+
+---
+
+### Kontekst7
+Dodajte [Context7 MCP server](https://github.com/upstash/context7) za pretraživanje dokumenata.
+```json title="opencode.json" {4-7}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "context7": {
+ "type": "remote",
+ "url": "https://mcp.context7.com/mcp"
+ }
+ }
+}
+```
+
+Ako ste se prijavili za besplatni račun, možete koristiti svoj API ključ i dobiti viša ograničenja stope.
+```json title="opencode.json" {7-9}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "context7": {
+ "type": "remote",
+ "url": "https://mcp.context7.com/mcp",
+ "headers": {
+ "CONTEXT7_API_KEY": "{env:CONTEXT7_API_KEY}"
+ }
+ }
+ }
+}
+```
+
+Ovdje pretpostavljamo da imate postavljenu varijablu okruženja `CONTEXT7_API_KEY`.
+Dodajte `use context7` vašim upitima za korištenje Context7 MCP servera.
+```txt "use context7"
+Configure a Cloudflare Worker script to cache JSON API responses for five minutes. use context7
+```
+
+Alternativno, možete dodati nešto poput ovoga na svoj [AGENTS.md](/docs/rules/).
+```md title="AGENTS.md"
+When you need to search docs, use `context7` tools.
+```
+
+---
+
+### Grep od Vercela
+Dodajte [Grep by Vercel](https://grep.app) MCP server za pretraživanje isječaka koda na GitHubu.
+```json title="opencode.json" {4-7}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "gh_grep": {
+ "type": "remote",
+ "url": "https://mcp.grep.app"
+ }
+ }
+}
+```
+
+Pošto smo naš MCP server nazvali `gh_grep`, možete dodati `use the gh_grep tool` u svoje upite da natjerate agenta da ga koristi.
+```txt "use the gh_grep tool"
+What's the right way to set a custom domain in an SST Astro component? use the gh_grep tool
+```
+
+Alternativno, možete dodati nešto poput ovoga na svoj [AGENTS.md](/docs/rules/).
+```md title="AGENTS.md"
+If you are unsure how to do something, use `gh_grep` to search code examples from GitHub.
+```
diff --git a/packages/web/src/content/docs/bs/models.mdx b/packages/web/src/content/docs/bs/models.mdx
new file mode 100644
index 000000000..3e755e4a1
--- /dev/null
+++ b/packages/web/src/content/docs/bs/models.mdx
@@ -0,0 +1,186 @@
+---
+title: Modeli
+description: Konfiguriranje LLM provajdera i modela.
+---
+
+OpenCode koristi [AI SDK](https://ai-sdk.dev/) i [Models.dev](https://models.dev) za podršku **75+ LLM provajdera** i podržava pokretanje lokalnih modela.
+---
+
+## Provajderi
+Većina popularnih provajdera su unaprijed učitani prema zadanim postavkama. Ako ste dodali vjerodajnice za provajdera putem naredbe `/connect`, oni će biti dostupni kada pokrenete OpenCode.
+Saznajte više o [providers](/docs/providers).
+---
+
+## Odaberite model
+Nakon što konfigurirate svog provajdera, možete odabrati model koji želite upisivanjem:
+```bash frame="none"
+/models
+```
+
+---
+
+## Preporučeni modeli
+Postoji mnogo modela vani, a novi modeli izlaze svake sedmice.
+:::tip
+Razmislite o korištenju jednog od modela koje preporučujemo.
+:::
+
+Međutim, postoji samo nekoliko njih koji su dobri i u generiranju koda i u pozivanju alata.
+Evo nekoliko modela koji dobro rade sa OpenCodeom, bez posebnog redosleda. (Ovo nije potpuna lista niti je nužno ažurirana):
+- GPT 5.2
+- Kodeks GPT 5.1
+- Claude Opus 4.5
+- Claude Sonet 4.5
+- Minimax M2.1
+- Gemini 3 Pro
+---
+
+## Postavite zadano
+Da postavite jedan od ovih kao zadani model, možete postaviti ključ `model` u svom
+OpenCode config.
+```json title="opencode.json" {3}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "model": "lmstudio/google/gemma-3n-e4b"
+}
+```
+
+Ovdje je puni ID `provider_id/model_id`. Na primjer, ako koristite [OpenCode Zen](/docs/zen), koristili biste `opencode/gpt-5.1-codex` za GPT 5.1 Codex.
+Ako ste konfigurirali [prilagođenog provajdera](/docs/providers#custom), `provider_id` je ključ iz `provider` dijela vaše konfiguracije, a `model_id` je ključ iz `provider.models`.
+---
+
+## Konfigurišite modele
+Možete globalno konfigurirati opcije modela kroz config.
+```jsonc title="opencode.jsonc" {7-12,19-24}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "openai": {
+ "models": {
+ "gpt-5": {
+ "options": {
+ "reasoningEffort": "high",
+ "textVerbosity": "low",
+ "reasoningSummary": "auto",
+ "include": ["reasoning.encrypted_content"],
+ },
+ },
+ },
+ },
+ "anthropic": {
+ "models": {
+ "claude-sonnet-4-5-20250929": {
+ "options": {
+ "thinking": {
+ "type": "enabled",
+ "budgetTokens": 16000,
+ },
+ },
+ },
+ },
+ },
+ },
+}
+```
+
+Ovdje konfiguriramo globalne postavke za dva ugrađena modela: `gpt-5` kada se pristupa preko `openai` provajdera i `claude-sonnet-4-20250514` kada se pristupa preko `anthropic` provajdera.
+Ugrađeni dobavljač i nazivi modela mogu se naći na [Models.dev](https://models.dev).
+Također možete konfigurirati ove opcije za sve agente koje koristite. Konfiguracija agenta poništava sve globalne opcije ovdje. [Saznajte više](/docs/agents/#additional).
+Također možete definirati prilagođene varijante koje proširuju ugrađene. Varijante vam omogućavaju da konfigurirate različite postavke za isti model bez stvaranja duplih unosa:
+```jsonc title="opencode.jsonc" {6-21}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "opencode": {
+ "models": {
+ "gpt-5": {
+ "variants": {
+ "high": {
+ "reasoningEffort": "high",
+ "textVerbosity": "low",
+ "reasoningSummary": "auto",
+ },
+ "low": {
+ "reasoningEffort": "low",
+ "textVerbosity": "low",
+ "reasoningSummary": "auto",
+ },
+ },
+ },
+ },
+ },
+ },
+}
+```
+
+---
+
+## Varijante
+Mnogi modeli podržavaju više varijanti sa različitim konfiguracijama. OpenCode se isporučuje sa ugrađenim podrazumevanim varijantama za popularne provajdere.
+### Ugrađene varijante
+OpenCode se isporučuje sa zadanim varijantama za mnoge provajdere:
+**Antropski**:
+- `high` - Visok budžet za razmišljanje (zadano)
+- `max` - Maksimalni budžet za razmišljanje
+**OpenAI**:
+Zavisi od modela, ali otprilike:
+- `none` - Bez obrazloženja
+- `minimal` - Minimalni napor za rasuđivanje
+- `low` - Nizak napor u rasuđivanju
+- `medium` - Srednji napor u zaključivanju
+- `high` - Veliki napor u rasuđivanju
+- `xhigh` - Ekstra visok napor u rasuđivanju
+**Google**:
+- `low` - Manji trud/budžet tokena
+- `high` - Veći budžet za trud/token
+:::tip
+Ova lista nije sveobuhvatna. Mnogi drugi provajderi također imaju ugrađene zadane postavke.
+:::
+
+### Prilagođene varijante
+Možete nadjačati postojeće varijante ili dodati svoje:
+```jsonc title="opencode.jsonc" {7-18}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "openai": {
+ "models": {
+ "gpt-5": {
+ "variants": {
+ "thinking": {
+ "reasoningEffort": "high",
+ "textVerbosity": "low",
+ },
+ "fast": {
+ "disabled": true,
+ },
+ },
+ },
+ },
+ },
+ },
+}
+```
+
+### Varijante ciklusa
+Koristite vezu `variant_cycle` za brzo prebacivanje između varijanti. [Saznajte više](/docs/keybinds).
+---
+
+## Učitavanje modela
+Kada se OpenCode pokrene, on provjerava modele u sljedećem prioritetnom redoslijedu:
+1. Oznaka komandne linije `--model` ili `-m`. Format je isti kao u konfiguracijskoj datoteci: `provider_id/model_id`.
+2. Lista modela u OpenCode konfiguraciji.
+
+
+```json title="opencode.json"
+ {
+ "$schema": "https://opencode.ai/config.json",
+ "model": "anthropic/claude-sonnet-4-20250514"
+ }
+
+
+```
+
+Format ovdje je `provider/model`.
+3. Posljednji korišteni model.
+4. Prvi model koji koristi interni prioritet.
\ No newline at end of file
diff --git a/packages/web/src/content/docs/bs/modes.mdx b/packages/web/src/content/docs/bs/modes.mdx
new file mode 100644
index 000000000..9731600cb
--- /dev/null
+++ b/packages/web/src/content/docs/bs/modes.mdx
@@ -0,0 +1,283 @@
+---
+title: Načini rada
+description: Različiti načini za različite slučajeve upotrebe.
+---
+
+:::oprez
+Načini se sada konfiguriraju preko opcije `agent` u konfiguraciji otvorenog koda. The
+`mode` opcija je sada zastarjela. [Saznajte više](/docs/agents).
+:::
+
+Režimi u otvorenom kodu omogućavaju vam da prilagodite ponašanje, alate i upite za različite slučajeve upotrebe.
+Dolazi sa dva ugrađena načina rada: **gradite** i **planirajte**. Možete prilagoditi
+ove ili konfigurirajte svoje putem opencode config.
+Možete se prebacivati između režima tokom sesije ili ih konfigurisati u svom konfiguracionom fajlu.
+---
+
+## Ugrađeno
+opencode dolazi sa dva ugrađena načina rada.
+---
+
+### Build
+Izrada je **podrazumevani** režim sa svim omogućenim alatima. Ovo je standardni način rada na razvoju gdje vam je potreban pun pristup operacijama datoteka i sistemskim komandama.
+---
+
+### Plan
+Ograničeni način rada dizajniran za planiranje i analizu. U načinu plana, sljedeći alati su onemogućeni prema zadanim postavkama:
+- `write` - Ne mogu kreirati nove fajlove
+- `edit` - Ne mogu modificirati postojeće fajlove, osim fajlova koji se nalaze na `.opencode/plans/*.md` radi detaljiziranja samog plana
+- `patch` - Ne mogu primijeniti zakrpe
+- `bash` - Ne mogu izvršiti naredbe ljuske
+Ovaj način rada je koristan kada želite da AI analizira kod, predlaže promjene ili kreira planove bez ikakvih stvarnih modifikacija u vašoj bazi kodova.
+---
+
+## Prebacivanje
+Možete se prebacivati između načina rada tokom sesije pomoću tipke _Tab_. Ili vaše konfigurirano `switch_mode` spajanje tipki.
+Vidi također: [Formatters](/docs/formatters) za informacije o konfiguraciji formatiranja koda.
+---
+
+## Konfiguriši
+Možete prilagoditi ugrađene načine rada ili kreirati vlastite kroz konfiguraciju. Modovi se mogu konfigurirati na dva načina:
+### JSON konfiguracija
+Konfigurirajte načine rada u svom `opencode.json` konfiguracijskom fajlu:
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mode": {
+ "build": {
+ "model": "anthropic/claude-sonnet-4-20250514",
+ "prompt": "{file:./prompts/build.txt}",
+ "tools": {
+ "write": true,
+ "edit": true,
+ "bash": true
+ }
+ },
+ "plan": {
+ "model": "anthropic/claude-haiku-4-20250514",
+ "tools": {
+ "write": false,
+ "edit": false,
+ "bash": false
+ }
+ }
+ }
+}
+```
+
+### Markdown konfiguracija
+Također možete definirati načine rada koristeći mardown datoteke. Postavite ih u:
+- Globalno: `~/.config/opencode/modes/`
+- Projekat: `.opencode/modes/`
+```markdown title="~/.config/opencode/modes/review.md"
+---
+model: anthropic/claude-sonnet-4-20250514
+temperature: 0.1
+tools:
+ write: false
+ edit: false
+ bash: false
+---
+
+You are in code review mode. Focus on:
+
+- Code quality and best practices
+- Potential bugs and edge cases
+- Performance implications
+- Security considerations
+
+Provide constructive feedback without making direct changes.
+```
+
+Naziv datoteke s uštedom postaje naziv načina (npr. `review.md` kreira `review` način rada).
+Pogledajmo ove opcije konfiguracije detaljno.
+---
+
+### Model
+Koristite `model` konfiguraciju da nadjačate zadani model za ovaj način rada. Korisno za korištenje različitih modela optimiziranih za različite zadatke. Na primjer, brži model za planiranje, sposobniji model za implementaciju.
+```json title="opencode.json"
+{
+ "mode": {
+ "plan": {
+ "model": "anthropic/claude-haiku-4-20250514"
+ }
+ }
+}
+```
+
+---
+
+### Temperatura
+Kontrolišite slučajnost i kreativnost odgovora AI pomoću `temperature` konfiguracije. Niže vrijednosti čine odgovore fokusiranijim i determinističkim, dok veće vrijednosti povećavaju kreativnost i varijabilnost.
+```json title="opencode.json"
+{
+ "mode": {
+ "plan": {
+ "temperature": 0.1
+ },
+ "creative": {
+ "temperature": 0.8
+ }
+ }
+}
+```
+
+Vrijednosti temperature obično se kreću od 0,0 do 1,0:
+- **0,0-0,2**: Vrlo fokusirani i deterministički odgovori, idealni za analizu i planiranje koda
+- **0,3-0,5**: Uravnoteženi odgovori sa malo kreativnosti, dobro za opšte razvojne zadatke
+- **0,6-1,0**: kreativniji i raznovrsniji odgovori, korisni za razmišljanje i istraživanje
+```json title="opencode.json"
+{
+ "mode": {
+ "analyze": {
+ "temperature": 0.1,
+ "prompt": "{file:./prompts/analysis.txt}"
+ },
+ "build": {
+ "temperature": 0.3
+ },
+ "brainstorm": {
+ "temperature": 0.7,
+ "prompt": "{file:./prompts/creative.txt}"
+ }
+ }
+}
+```
+
+Ako temperatura nije navedena, opencode koristi zadane postavke specifične za model (obično 0 za većinu modela, 0,55 za Qwen modele).
+---
+
+### Prompt
+Navedite prilagođenu sistemsku datoteku prompta za ovaj način rada s konfiguracijom `prompt`. Datoteka s promptom treba da sadrži upute specifične za svrhu načina rada.
+```json title="opencode.json"
+{
+ "mode": {
+ "review": {
+ "prompt": "{file:./prompts/code-review.txt}"
+ }
+ }
+}
+```
+
+Ova putanja je relativna u odnosu na mjesto gdje se nalazi konfiguracijski fajl. Dakle, ovo radi za
+i globalnu konfiguraciju otvorenog koda i konfiguraciju specifične za projekat.
+---
+
+### Alati
+Kontrolirajte koji su alati dostupni u ovom načinu rada pomoću `tools` konfiguracije. Možete omogućiti ili onemogućiti određene alate tako što ćete ih postaviti na `true` ili `false`.
+```json
+{
+ "mode": {
+ "readonly": {
+ "tools": {
+ "write": false,
+ "edit": false,
+ "bash": false,
+ "read": true,
+ "grep": true,
+ "glob": true
+ }
+ }
+ }
+}
+```
+
+Ako nijedan alat nije specificiran, svi alati su omogućeni prema zadanim postavkama.
+---
+
+#### Dostupni alati
+Ovdje su svi alati koji se mogu kontrolirati kroz konfiguraciju načina rada.
+| Alat | Opis || ----------- | ----------------------- |
+| `bash` | Izvrši naredbe ljuske |
+| `edit` | Izmijenite postojeće datoteke |
+| `write` | Kreirajte nove fajlove |
+| `read` | Pročitajte sadržaj datoteke |
+| `grep` | Pretraži sadržaj datoteke |
+| `glob` | Pronađite datoteke po uzorku |
+| `list` | Lista sadržaja direktorija |
+| `patch` | Primijenite zakrpe na datoteke |
+| `todowrite` | Upravljanje listama zadataka |
+| `todoread` | Pročitajte liste obaveza |
+| `webfetch` | Dohvati web sadržaj |
+---
+
+## Prilagođeni načini rada
+Možete kreirati vlastite prilagođene modove tako što ćete ih dodati u konfiguraciju. Evo primjera koji koriste oba pristupa:
+### Korištenje JSON konfiguracije
+```json title="opencode.json" {4-14}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mode": {
+ "docs": {
+ "prompt": "{file:./prompts/documentation.txt}",
+ "tools": {
+ "write": true,
+ "edit": true,
+ "bash": false,
+ "read": true,
+ "grep": true,
+ "glob": true
+ }
+ }
+ }
+}
+```
+
+### Korištenje mardown fajlova
+Kreirajte fajlove načina u `.opencode/modes/` za specifične načine rada ili `~/.config/opencode/modes/` za globalne načine:
+```markdown title=".opencode/modes/debug.md"
+---
+temperature: 0.1
+tools:
+ bash: true
+ read: true
+ grep: true
+ write: false
+ edit: false
+---
+
+You are in debug mode. Your primary goal is to help investigate and diagnose issues.
+
+Focus on:
+
+- Understanding the problem through careful analysis
+- Using bash commands to inspect system state
+- Reading relevant files and logs
+- Searching for patterns and anomalies
+- Providing clear explanations of findings
+
+Do not make any changes to files. Only investigate and report.
+```
+
+```markdown title="~/.config/opencode/modes/refactor.md"
+---
+model: anthropic/claude-sonnet-4-20250514
+temperature: 0.2
+tools:
+ edit: true
+ read: true
+ grep: true
+ glob: true
+---
+
+You are in refactoring mode. Focus on improving code quality without changing functionality.
+
+Priorities:
+
+- Improve code readability and maintainability
+- Apply consistent naming conventions
+- Reduce code duplication
+- Optimize performance where appropriate
+- Ensure all tests continue to pass
+```
+
+---
+
+### Slučajevi upotrebe
+Evo nekoliko uobičajenih slučajeva upotrebe za različite načine rada.
+- **Način izgradnje**: Potpuni razvojni rad sa svim omogućenim alatima
+- **Način planiranja**: Analiza i planiranje bez izmjena
+- **Review mode**: Pregled koda sa pristupom samo za čitanje plus alati za dokumentaciju
+- **Režim za otklanjanje grešaka**: Fokusiran na istragu sa omogućenim bash i alatima za čitanje
+- **Režim dokumenata**: Pisanje dokumentacije sa operacijama datoteka, ali bez sistemskih naredbi
+Možda ćete također otkriti da su različiti modeli dobri za različite slučajeve upotrebe.
\ No newline at end of file
diff --git a/packages/web/src/content/docs/bs/network.mdx b/packages/web/src/content/docs/bs/network.mdx
new file mode 100644
index 000000000..31d8d3d85
--- /dev/null
+++ b/packages/web/src/content/docs/bs/network.mdx
@@ -0,0 +1,48 @@
+---
+title: Mreža
+description: Konfigurirajte proksije i prilagođene certifikate.
+---
+
+OpenCode podržava standardne varijable proxy okruženja i prilagođene sertifikate za mrežna okruženja preduzeća.
+---
+
+## Proxy
+OpenCode poštuje standardne varijable proxy okruženja.
+```bash
+# HTTPS proxy (recommended)
+export HTTPS_PROXY=https://proxy.example.com:8080
+
+# HTTP proxy (if HTTPS not available)
+export HTTP_PROXY=http://proxy.example.com:8080
+
+# Bypass proxy for local server (required)
+export NO_PROXY=localhost,127.0.0.1
+```
+
+:::oprez
+TUI komunicira sa lokalnim HTTP serverom. Morate zaobići proxy za ovu vezu kako biste spriječili petlje usmjeravanja.
+:::
+
+Možete konfigurirati port servera i ime hosta koristeći [CLI flags](/docs/cli#run).
+---
+
+### Autentikacija
+Ako vaš proxy zahtijeva osnovnu autentifikaciju, uključite vjerodajnice u URL.
+```bash
+export HTTPS_PROXY=http://username:password@proxy.example.com:8080
+```
+
+:::oprez
+Izbjegavajte tvrdo kodiranje lozinki. Koristite varijable okruženja ili sigurno skladište vjerodajnica.
+:::
+
+Za proxy servere koji zahtijevaju naprednu autentifikaciju kao što je NTLM ili Kerberos, razmislite o korištenju LLM Gatewaya koji podržava vašu metodu provjere autentičnosti.
+---
+
+## Prilagođeni certifikati
+Ako vaše preduzeće koristi prilagođene CA-ove za HTTPS veze, konfigurirajte OpenCode da im vjeruje.
+```bash
+export NODE_EXTRA_CA_CERTS=/path/to/ca-cert.pem
+```
+
+Ovo radi i za proxy veze i za direktan pristup API-ju.
\ No newline at end of file
diff --git a/packages/web/src/content/docs/bs/permissions.mdx b/packages/web/src/content/docs/bs/permissions.mdx
new file mode 100644
index 000000000..79e4a9b63
--- /dev/null
+++ b/packages/web/src/content/docs/bs/permissions.mdx
@@ -0,0 +1,201 @@
+---
+title: Dozvole
+description: Kontrolirajte koje radnje zahtijevaju odobrenje za pokretanje.
+---
+
+OpenCode koristi `permission` konfiguraciju da odluči da li će se određena radnja pokrenuti automatski, zatražiti od vas ili biti blokirana.
+Od `v1.1.1`, naslijeđena `tools` logička konfiguracija je zastarjela i spojena je u `permission`. Stara `tools` konfiguracija je još uvijek podržana za kompatibilnost unatrag.
+---
+
+## Akcije
+Svako pravilo dozvole rješava jedno od:
+- `"allow"` — pokrenuti bez odobrenja
+- `"ask"` — upit za odobrenje
+- `"deny"` — blokiraj akciju
+---
+
+## Konfiguracija
+Dozvole možete postaviti globalno (sa `*`) i nadjačati određene alate.
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "*": "ask",
+ "bash": "allow",
+ "edit": "deny"
+ }
+}
+```
+
+Također možete postaviti sve dozvole odjednom:
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": "allow"
+}
+```
+
+---
+
+## Granularna pravila (sintaksa objekta)
+Za većinu dozvola, možete koristiti objekt za primjenu različitih radnji na osnovu unosa alata.
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "bash": {
+ "*": "ask",
+ "git *": "allow",
+ "npm *": "allow",
+ "rm *": "deny",
+ "grep *": "allow"
+ },
+ "edit": {
+ "*": "deny",
+ "packages/web/src/content/docs/*.mdx": "allow"
+ }
+ }
+}
+```
+
+Pravila se procjenjuju na osnovu podudaranja uzorka, pri čemu **pobjeđuje **poslednje odgovarajuće pravilo**. Uobičajeni obrazac je da se prvo pravilo `"*"` stavi sveobuhvatno, a poslije njega konkretnija pravila.
+### Zamjenski znakovi
+Uzorci dozvola koriste jednostavno podudaranje zamjenskih znakova:
+- `*` odgovara nula ili više bilo kojeg znaka
+- `?` odgovara tačno jednom znaku
+- Svi ostali likovi se bukvalno podudaraju
+### Proširenje kućnog imenika
+Možete koristiti `~` ili `$HOME` na početku obrasca da referencirate svoj početni direktorij. Ovo je posebno korisno za [`external_directory`](#external-directories) pravila.
+- `~/projects/*` -> `/Users/username/projects/*`
+- `$HOME/projects/*` -> `/Users/username/projects/*`
+- `~` -> `/Users/username`
+### Vanjski imenici
+Koristite `external_directory` da dozvolite pozive alata koji dodiruju putanje izvan radnog direktorija gdje je OpenCode pokrenut. Ovo se odnosi na bilo koji alat koji uzima putanju kao ulaz (na primjer `read`, `edit`, `list`, `glob`, `grep` i mnoge `bash` komande).
+Proširenje kuće (poput `~/...`) utiče samo na način na koji je obrazac napisan. Ne čini vanjsku stazu dijelom trenutnog radnog prostora, tako da staze izvan radnog direktorija i dalje moraju biti dozvoljene preko `external_directory`.
+Na primjer, ovo omogućava pristup svemu pod `~/projects/personal/`:
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "external_directory": {
+ "~/projects/personal/**": "allow"
+ }
+ }
+}
+```
+
+Svaki direktorij koji je ovdje dozvoljen nasljeđuje iste zadane postavke kao trenutni radni prostor. Pošto je [`read` zadano na `allow`](#defaults), čitanje je također dozvoljeno za unose pod `external_directory` osim ako se ne poništi. Dodajte eksplicitna pravila kada bi alat trebao biti ograničen na ovim stazama, kao što je blokiranje uređivanja uz zadržavanje čitanja:
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "external_directory": {
+ "~/projects/personal/**": "allow"
+ },
+ "edit": {
+ "~/projects/personal/**": "deny"
+ }
+ }
+}
+```
+
+Neka lista bude fokusirana na pouzdane staze, a dodatni sloj dozvoljava ili odbija pravila prema potrebi za druge alate (na primjer `bash`).
+---
+
+## Dostupne dozvole
+Dozvole OpenCode-a su označene imenom alata, plus nekoliko sigurnosnih mjera:
+- `read` — čitanje datoteke (odgovara putanji datoteke)
+- `edit` — sve izmjene fajlova (pokriva `edit`, `write`, `patch`, `multiedit`)
+- `glob` — globbiranje fajla (odgovara glob uzorku)
+- `grep` — pretraga sadržaja (podudara se sa regularnim izrazom)
+- `list` — lista fajlova u direktorijumu (podudara se sa putanjom direktorijuma)
+- `bash` — izvođenje komandi ljuske (podudara se s raščlanjenim komandama kao što je `git status --porcelain`)
+- `task` — pokretanje subagenta (odgovara tipu podagenta)
+- `skill` — učitavanje vještine (odgovara nazivu vještine)
+- `lsp` — pokretanje LSP upita (trenutno negranularno)
+- `todoread`, `todowrite` — čitanje/ažuriranje liste obaveza
+- `webfetch` — dohvaćanje URL-a (odgovara URL-u)
+- `websearch`, `codesearch` — pretraživanje weba/koda (odgovara upitu)
+- `external_directory` — pokreće se kada alat dodirne staze izvan radnog direktorija projekta
+- `doom_loop` — aktivira se kada se isti poziv alata ponovi 3 puta sa identičnim unosom
+---
+
+## Defaults
+Ako ništa ne navedete, OpenCode počinje od dozvoljenih zadanih vrijednosti:
+- Većina dozvola je zadana na `"allow"`.
+- `doom_loop` i `external_directory` zadano na `"ask"`.
+- `read` je `"allow"`, ali `.env` fajlovi su po defaultu odbijeni:
+```json title="opencode.json"
+{
+ "permission": {
+ "read": {
+ "*": "allow",
+ "*.env": "deny",
+ "*.env.*": "deny",
+ "*.env.example": "allow"
+ }
+ }
+}
+```
+
+---
+
+## Šta radi “Ask”.
+Kada OpenCode zatraži odobrenje, korisničko sučelje nudi tri ishoda:
+- `once` — odobri samo ovaj zahtjev
+- `always` — odobri buduće zahtjeve koji odgovaraju predloženim obrascima (za ostatak trenutne OpenCode sesije)
+- `reject` — odbiti zahtjev
+Skup obrazaca koje bi `always` odobrio pruža alat (na primjer, bash odobrenja obično stavljaju na bijelu listu sigurni prefiks komande kao što je `git status*`).
+---
+
+## Agenti
+Možete nadjačati dozvole po agentu. Dozvole agenta su spojene sa globalnom konfiguracijom, a pravila agenta imaju prednost. [Saznajte više](/docs/agents#permissions) o dozvolama agenta.
+:::napomena
+Pogledajte gornji odjeljak [Granularna pravila (sintaksa objekata)](#granular-rules-object-syntax) za detaljnije primjere podudaranja uzoraka.
+:::
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "bash": {
+ "*": "ask",
+ "git *": "allow",
+ "git commit *": "deny",
+ "git push *": "deny",
+ "grep *": "allow"
+ }
+ },
+ "agent": {
+ "build": {
+ "permission": {
+ "bash": {
+ "*": "ask",
+ "git *": "allow",
+ "git commit *": "ask",
+ "git push *": "deny",
+ "grep *": "allow"
+ }
+ }
+ }
+ }
+}
+```
+
+Također možete konfigurirati dozvole agenta u Markdownu:
+```markdown title="~/.config/opencode/agents/review.md"
+---
+description: Code review without edits
+mode: subagent
+permission:
+ edit: deny
+ bash: ask
+ webfetch: deny
+---
+
+Only analyze code and suggest changes.
+```
+
+:::tip
+Koristite podudaranje uzoraka za naredbe s argumentima. `"grep *"` dozvoljava `grep pattern file.txt`, dok bi ga samo `"grep"` blokirao. Naredbe poput `git status` rade za zadano ponašanje, ali zahtijevaju eksplicitnu dozvolu (kao `"git status *"`) kada se prosljeđuju argumenti.
+:::
diff --git a/packages/web/src/content/docs/bs/plugins.mdx b/packages/web/src/content/docs/bs/plugins.mdx
new file mode 100644
index 000000000..99346fe2e
--- /dev/null
+++ b/packages/web/src/content/docs/bs/plugins.mdx
@@ -0,0 +1,309 @@
+---
+title: Plugins
+description: Napišite vlastite dodatke za proširenje OpenCode-a.
+---
+
+Dodaci vam omogućavaju da proširite OpenCode spajanjem na različite događaje i prilagođavanjem ponašanja. Možete kreirati dodatke za dodavanje novih funkcija, integraciju sa eksternim uslugama ili izmenu zadanog ponašanja OpenCode-a.
+Za primjere, pogledajte [plugins](/docs/ecosystem#plugins) kreirane od strane zajednice.
+---
+
+## Koristite dodatak
+Postoje dva načina za učitavanje dodataka.
+---
+
+### Iz lokalnih datoteka
+Postavite JavaScript ili TypeScript datoteke u direktorij dodataka.
+- `.opencode/plugins/` - Dodaci na nivou projekta
+- `~/.config/opencode/plugins/` - Globalni dodaci
+Datoteke u ovim direktorijumima se automatski učitavaju pri pokretanju.
+---
+
+### Od npm
+Navedite npm pakete u vašoj konfiguracijskoj datoteci.
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "plugin": ["opencode-helicone-session", "opencode-wakatime", "@my-org/custom-plugin"]
+}
+```
+
+Podržani su i regularni i npm paketi sa opsegom.
+Pregledajte dostupne dodatke u [ecosystem](/docs/ecosystem#plugins).
+---
+
+### Kako se instaliraju dodaci
+**npm dodaci** se instaliraju automatski pomoću Bun pri pokretanju. Paketi i njihove zavisnosti su keširani u `~/.cache/opencode/node_modules/`.
+**Lokalni dodaci** se učitavaju direktno iz direktorija dodataka. Da biste koristili vanjske pakete, morate kreirati `package.json` unutar svog konfiguracijskog direktorija (pogledajte [Zavisnosti](#dependencies)) ili objaviti dodatak na npm i [dodati ga u svoju konfiguraciju](/docs/config#plugins).
+---
+
+### Učitaj redoslijed
+Dodaci se učitavaju iz svih izvora i svi zakačnjaci rade u nizu. Redoslijed učitavanja je:
+1. Globalna konfiguracija (`~/.config/opencode/opencode.json`)
+2. Konfiguracija projekta (`opencode.json`)
+3. Globalni direktorij dodataka (`~/.config/opencode/plugins/`)
+4. Direktorij dodataka projekta (`.opencode/plugins/`)
+Duplicirani npm paketi sa istim imenom i verzijom se učitavaju jednom. Međutim, lokalni dodatak i npm dodatak sa sličnim nazivima se učitavaju odvojeno.
+---
+
+## Kreirajte dodatak
+Dodatak je **JavaScript/TypeScript modul** koji izvozi jedan ili više dodataka
+funkcije. Svaka funkcija prima objekt konteksta i vraća hooks objekt.
+---
+
+### Zavisnosti
+Lokalni dodaci i prilagođeni alati mogu koristiti vanjske npm pakete. Dodajte `package.json` u svoj konfiguracijski direktorij sa zavisnostima koje su vam potrebne.
+```json title=".opencode/package.json"
+{
+ "dependencies": {
+ "shescape": "^2.1.0"
+ }
+}
+```
+
+OpenCode pokreće `bun install` pri pokretanju da ih instalira. Vaši dodaci i alati ih zatim mogu uvesti.
+```ts title=".opencode/plugins/my-plugin.ts"
+import { escape } from "shescape"
+
+export const MyPlugin = async (ctx) => {
+ return {
+ "tool.execute.before": async (input, output) => {
+ if (input.tool === "bash") {
+ output.args.command = escape(output.args.command)
+ }
+ },
+ }
+}
+```
+
+---
+
+### Osnovna struktura
+```js title=".opencode/plugins/example.js"
+export const MyPlugin = async ({ project, client, $, directory, worktree }) => {
+ console.log("Plugin initialized!")
+
+ return {
+ // Hook implementations go here
+ }
+}
+```
+
+Funkcija dodatka prima:
+- `project`: Trenutne informacije o projektu.
+- `directory`: Trenutni radni direktorij.
+- `worktree`: Putanja git radnog stabla.
+- `client`: Opencode SDK klijent za interakciju sa AI.
+- `$`: Bun's [shell API](https://bun.com/docs/runtime/shell) za izvršavanje naredbi.
+---
+
+### Podrška za TypeScript
+Za TypeScript dodatke, možete uvesti tipove iz paketa dodataka:
+```ts title="my-plugin.ts" {1}
+import type { Plugin } from "@opencode-ai/plugin"
+
+export const MyPlugin: Plugin = async ({ project, client, $, directory, worktree }) => {
+ return {
+ // Type-safe hook implementations
+ }
+}
+```
+
+---
+
+### Događaji
+Dodaci se mogu pretplatiti na događaje kao što je prikazano ispod u odjeljku Primjeri. Evo liste različitih dostupnih događaja.
+#### Komandni događaji
+- `command.executed`
+#### Događaji datoteka
+- `file.edited`
+- `file.watcher.updated`
+#### Instalacijski događaji
+- `installation.updated`
+#### LSP događaji
+- `lsp.client.diagnostics`
+- `lsp.updated`
+#### Poruka Događaji
+- `message.part.removed`
+- `message.part.updated`
+- `message.removed`
+- `message.updated`
+#### Događaji dozvole
+- `permission.asked`
+- `permission.replied`
+#### Serverski događaji
+- `server.connected`
+#### Događaji sesije
+- `session.created`
+- `session.compacted`
+- `session.deleted`
+- `session.diff`
+- `session.error`
+- `session.idle`
+- `session.status`
+- `session.updated`
+#### Todo događaji
+- `todo.updated`
+#### Shell događaji
+- `shell.env`
+#### Alat Događaji
+- `tool.execute.after`
+- `tool.execute.before`
+#### TUI događaji
+- `tui.prompt.append`
+- `tui.command.execute`
+- `tui.toast.show`
+---
+
+## Primjeri
+Evo nekoliko primjera dodataka koje možete koristiti za proširenje otvorenog koda.
+---
+
+### Šalji obavještenja
+Pošaljite obavještenja kada se dogode određeni događaji:
+```js title=".opencode/plugins/notification.js"
+export const NotificationPlugin = async ({ project, client, $, directory, worktree }) => {
+ return {
+ event: async ({ event }) => {
+ // Send notification on session completion
+ if (event.type === "session.idle") {
+ await $`osascript -e 'display notification "Session completed!" with title "opencode"'`
+ }
+ },
+ }
+}
+```
+
+Koristimo `osascript` za pokretanje AppleScript-a na macOS-u. Ovdje ga koristimo za slanje obavještenja.
+:::napomena
+Ako koristite desktop aplikaciju OpenCode, ona može automatski slati sistemske obavijesti kada je odgovor spreman ili kada dođe do greške u sesiji.
+:::
+
+---
+
+### .env zaštita
+Spriječite opencode da čita `.env` fajlove:
+```javascript title=".opencode/plugins/env-protection.js"
+export const EnvProtection = async ({ project, client, $, directory, worktree }) => {
+ return {
+ "tool.execute.before": async (input, output) => {
+ if (input.tool === "read" && output.args.filePath.includes(".env")) {
+ throw new Error("Do not read .env files")
+ }
+ },
+ }
+}
+```
+
+---
+
+### Ubacite varijable okruženja
+Ubacite varijable okruženja u sva izvršavanja ljuske (AI alati i korisnički terminali):
+```javascript title=".opencode/plugins/inject-env.js"
+export const InjectEnvPlugin = async () => {
+ return {
+ "shell.env": async (input, output) => {
+ output.env.MY_API_KEY = "secret"
+ output.env.PROJECT_ROOT = input.cwd
+ },
+ }
+}
+```
+
+---
+
+### Prilagođeni alati
+Dodaci također mogu dodati prilagođene alate u opencode:
+```ts title=".opencode/plugins/custom-tools.ts"
+import { type Plugin, tool } from "@opencode-ai/plugin"
+
+export const CustomToolsPlugin: Plugin = async (ctx) => {
+ return {
+ tool: {
+ mytool: tool({
+ description: "This is a custom tool",
+ args: {
+ foo: tool.schema.string(),
+ },
+ async execute(args, context) {
+ const { directory, worktree } = context
+ return `Hello ${args.foo} from ${directory} (worktree: ${worktree})`
+ },
+ }),
+ },
+ }
+}
+```
+
+Pomoćnik `tool` kreira prilagođeni alat koji opencode može pozvati. Uzima funkciju Zod sheme i vraća definiciju alata sa:
+- `description`: Šta alat radi
+- `args`: Zod šema za argumente alata
+- `execute`: Funkcija koja se pokreće kada se pozove alat
+Vaši prilagođeni alati će biti dostupni za opencode zajedno sa ugrađenim alatima.
+---
+
+### Logging
+Koristite `client.app.log()` umjesto `console.log` za strukturirano bilježenje:
+```ts title=".opencode/plugins/my-plugin.ts"
+export const MyPlugin = async ({ client }) => {
+ await client.app.log({
+ body: {
+ service: "my-plugin",
+ level: "info",
+ message: "Plugin initialized",
+ extra: { foo: "bar" },
+ },
+ })
+}
+```
+
+Nivoi: `debug`, `info`, `warn`, `error`. Pogledajte [SDK dokumentaciju](https://opencode.ai/docs/sdk) za detalje.
+---
+
+### Kuke za sabijanje
+Prilagodite kontekst uključen kada se sesija zbije:
+```ts title=".opencode/plugins/compaction.ts"
+import type { Plugin } from "@opencode-ai/plugin"
+
+export const CompactionPlugin: Plugin = async (ctx) => {
+ return {
+ "experimental.session.compacting": async (input, output) => {
+ // Inject additional context into the compaction prompt
+ output.context.push(`
+## Custom Context
+
+Include any state that should persist across compaction:
+- Current task status
+- Important decisions made
+- Files being actively worked on
+`)
+ },
+ }
+}
+```
+
+`experimental.session.compacting` kuka se aktivira prije nego što LLM generira sažetak nastavka. Koristite ga za ubacivanje konteksta specifičnog za domenu koji bi zadani prompt za sažimanje propustio.
+Također možete u potpunosti zamijeniti prompt za sabijanje postavljanjem `output.prompt`:
+```ts title=".opencode/plugins/custom-compaction.ts"
+import type { Plugin } from "@opencode-ai/plugin"
+
+export const CustomCompactionPlugin: Plugin = async (ctx) => {
+ return {
+ "experimental.session.compacting": async (input, output) => {
+ // Replace the entire compaction prompt
+ output.prompt = `
+You are generating a continuation prompt for a multi-agent swarm session.
+
+Summarize:
+1. The current task and its status
+2. Which files are being modified and by whom
+3. Any blockers or dependencies between agents
+4. The next steps to complete the work
+
+Format as a structured prompt that a new agent can use to resume work.
+`
+ },
+ }
+}
+```
+
+Kada je `output.prompt` postavljen, on u potpunosti zamjenjuje zadani prompt za sažimanje. Niz `output.context` se zanemaruje u ovom slučaju.
\ No newline at end of file
diff --git a/packages/web/src/content/docs/bs/providers.mdx b/packages/web/src/content/docs/bs/providers.mdx
new file mode 100644
index 000000000..d88115713
--- /dev/null
+++ b/packages/web/src/content/docs/bs/providers.mdx
@@ -0,0 +1,2413 @@
+---
+title: Provajderi
+description: Korištenje bilo kojeg LLM provajdera u OpenCodeu.
+---
+
+import config from "../../../../config.mjs"
+export const console = config.console
+
+OpenCode koristi [AI SDK](https://ai-sdk.dev/) i [Models.dev](https://models.dev) za podršku **75+ LLM provajdera** i podržava pokretanje lokalnih modela.
+
+Za dodavanje provajdera potrebno je:
+
+1. Dodajte API ključeve za provajdera koristeći naredbu `/connect`.
+2. Konfigurirajte dobavljača u vašoj OpenCode konfiguraciji.
+
+---
+
+### Akreditacije
+
+Kada dodate API ključeve dobavljača sa naredbom `/connect`, oni se pohranjuju
+u `~/.local/share/opencode/auth.json`.
+
+---
+
+### Config
+
+Možete prilagoditi dobavljače putem odjeljka `provider` u vašem OpenCode-u
+config.
+
+---
+
+#### Osnovni URL
+
+Možete prilagoditi osnovni URL za bilo kojeg provajdera postavljanjem opcije `baseURL`. Ovo je korisno kada koristite proxy usluge ili prilagođene krajnje tačke.
+
+```json title="opencode.json" {6}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "anthropic": {
+ "options": {
+ "baseURL": "https://api.anthropic.com/v1"
+ }
+ }
+ }
+}
+```
+
+---
+
+## OpenCode Zen
+
+OpenCode Zen je lista modela koje je obezbedio OpenCode tim koji su bili
+testirano i potvrđeno da dobro radi sa OpenCodeom. [Saznajte više](/docs/zen).
+
+:::tip
+Ako ste novi, preporučujemo da počnete sa OpenCode Zen.
+:::
+
+1. Pokrenite naredbu `/connect` u TUI-u, odaberite opencode i idite na [opencode.ai/auth](https://opencode.ai/auth).
+
+
+
+```txt
+ /connect
+
+
+```
+
+2. Prijavite se, dodajte svoje detalje naplate i kopirajte svoj API ključ.
+
+3. Zalijepite svoj API ključ.
+
+
+
+```txt
+ ┌ API key
+ │
+ │
+ └ enter
+
+
+```
+
+4. Pokrenite `/models` u TUI da vidite listu modela koje preporučujemo.
+
+
+
+```txt
+ /models
+
+
+```
+
+Radi kao i svaki drugi provajder u OpenCode-u i potpuno je opcionalan za korištenje.
+
+---
+
+## Imenik
+
+Pogledajmo neke od provajdera detaljno. Ako želite dodati provajdera na
+listu, slobodno otvori PR.
+
+:::note
+Ne vidite provajdera ovdje? Pošaljite PR.
+:::
+
+---
+
+### 302.AI
+
+1. Idite na [302.AI konzolu](https://302.ai/), kreirajte račun i generirajte API ključ.
+
+2. Pokrenite naredbu `/connect` i potražite **302.AI**.
+
+
+
+```txt
+ /connect
+
+
+```
+
+3. Unesite svoj 302.AI API ključ.
+
+
+
+```txt
+ ┌ API key
+ │
+ │
+ └ enter
+
+
+```
+
+4. Pokrenite naredbu `/models` da odaberete model.
+
+
+
+```txt
+ /models
+
+
+```
+
+---
+
+### Amazon Bedrock
+
+Da biste koristili Amazon Bedrock s OpenCodeom:
+
+1. Idite na **Katalog modela** na Amazon Bedrock konzoli i zatražite
+ pristup modelima koje želite.
+
+ :::tip
+ Morate imati pristup modelu koji želite u Amazon Bedrock.
+ :::
+
+2. **Konfigurirajte autentifikaciju** koristeći jedan od sljedećih metoda:
+
+ #### Varijable okruženja (brzi početak)
+
+ Postavite jednu od ovih varijabli okruženja dok pokrećete opencode:
+
+
+
+```bash
+ # Option 1: Using AWS access keys
+ AWS_ACCESS_KEY_ID=XXX AWS_SECRET_ACCESS_KEY=YYY opencode
+
+ # Option 2: Using named AWS profile
+ AWS_PROFILE=my-profile opencode
+
+ # Option 3: Using Bedrock bearer token
+ AWS_BEARER_TOKEN_BEDROCK=XXX opencode
+
+
+```
+
+ Ili ih dodajte na svoj bash profil:
+
+
+
+```bash title="~/.bash_profile"
+ export AWS_PROFILE=my-dev-profile
+ export AWS_REGION=us-east-1
+
+
+```
+
+ #### Konfiguracijski fajl (preporučeno)
+
+ Za konfiguraciju specifičnu za projekat ili trajnu konfiguraciju, koristite `opencode.json`:
+
+
+
+```json title="opencode.json"
+ {
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "amazon-bedrock": {
+ "options": {
+ "region": "us-east-1",
+ "profile": "my-aws-profile"
+ }
+ }
+ }
+ }
+
+
+```
+
+ **Dostupne opcije:**
+ - `region` - AWS regija (npr. `us-east-1`, `eu-west-1`)
+ - `profile` - AWS je imenovao profil od `~/.aws/credentials`
+ - `endpoint` - URL prilagođene krajnje tačke za VPC krajnje tačke (pseudonim za generičku opciju `baseURL`)
+
+ :::tip
+ Opcije konfiguracijske datoteke imaju prednost nad varijablama okruženja.
+ :::
+
+ #### Napredno: VPC krajnje tačke
+
+ Ako koristite VPC krajnje tačke za Bedrock:
+
+
+
+```json title="opencode.json"
+ {
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "amazon-bedrock": {
+ "options": {
+ "region": "us-east-1",
+ "profile": "production",
+ "endpoint": "https://bedrock-runtime.us-east-1.vpce-xxxxx.amazonaws.com"
+ }
+ }
+ }
+ }
+
+
+```
+
+ :::note
+ Opcija `endpoint` je pseudonim za generičku opciju `baseURL`, koristeći terminologiju specifičnu za AWS. Ako su specificirani i `endpoint` i `baseURL`, `endpoint` ima prednost.
+ :::
+
+ #### Metode provjere autentičnosti
+ - **`AWS_ACCESS_KEY_ID` / `AWS_SECRET_ACCESS_KEY`**: Kreirajte IAM korisnika i generirajte pristupne ključeve u AWS konzoli
+ - **`AWS_PROFILE`**: Koristite imenovane profile od `~/.aws/credentials`. Prvo konfigurirajte sa `aws configure --profile my-profile` ili `aws sso login`
+ - **`AWS_BEARER_TOKEN_BEDROCK`**: Generirajte dugoročne API ključeve sa Amazon Bedrock konzole
+ - **`AWS_WEB_IDENTITY_TOKEN_FILE` / `AWS_ROLE_ARN`**: Za EKS IRSA (IAM uloge za servisne naloge) ili druga Kubernetes okruženja sa OIDC federacijom. Kubernetes automatski ubacuje ove varijable okruženja kada se koriste napomene naloga usluge.
+
+ #### Prioritet autentifikacije
+
+ Amazon Bedrock koristi sljedeći prioritet autentifikacije:
+ 1. **Token nosioca** - `AWS_BEARER_TOKEN_BEDROCK` varijabla okruženja ili token iz naredbe `/connect`
+ 2. **AWS lanac vjerodajnica** - profil, pristupni ključevi, dijeljeni vjerodajnici, IAM uloge, tokeni web identiteta (EKS IRSA), metapodaci instance
+
+ :::note
+ Kada se postavi token nosioca (putem `/connect` ili `AWS_BEARER_TOKEN_BEDROCK`), on ima prednost nad svim AWS metodama akreditiva uključujući konfigurirane profile.
+ :::
+
+3. Pokrenite naredbu `/models` da odaberete model koji želite.
+
+
+
+```txt
+ /models
+
+
+```
+
+:::note
+Za prilagođene profile zaključivanja, koristite ime modela i dobavljača u ključu i postavite svojstvo `id` na arn. Ovo osigurava ispravno keširanje:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "amazon-bedrock": {
+ // ...
+ "models": {
+ "anthropic-claude-sonnet-4.5": {
+ "id": "arn:aws:bedrock:us-east-1:xxx:application-inference-profile/yyy"
+ }
+ }
+ }
+ }
+}
+```
+
+:::
+
+---
+
+### Antropic
+
+1. Nakon što ste se prijavili, pokrenite naredbu `/connect` i odaberite Anthropic.
+
+
+
+```txt
+ /connect
+
+
+```
+
+2. Ovdje možete odabrati opciju **Claude Pro/Max** i ona će otvoriti vaš pretraživač
+ i traži od vas da se autentifikujete.
+
+
+
+```txt
+ ┌ Select auth method
+ │
+ │ Claude Pro/Max
+ │ Create an API Key
+ │ Manually enter API Key
+ └
+
+
+```
+
+3. Sada bi svi Antropski modeli trebali biti dostupni kada koristite naredbu `/models`.
+
+
+
+```txt
+ /models
+
+
+```
+
+:::info
+[Anthropic] (https://anthropic.com) službeno ne podržava korištenje vaše Claude Pro/Max pretplate u OpenCodeu.
+:::
+
+##### Korištenje API ključeva
+
+Također možete odabrati **Kreiraj API ključ** ako nemate Pro/Max pretplatu. Također će otvoriti vaš pretraživač i zatražiti od vas da se prijavite na Anthropic i dati vam kod koji možete zalijepiti u svoj terminal.
+
+Ili ako već imate API ključ, možete odabrati **Ručno unesite API ključ** i zalijepite ga u svoj terminal.
+
+---
+
+### Azure OpenAI
+
+:::note
+Ako naiđete na greške "Žao mi je, ali ne mogu pomoći s tim zahtjevom", pokušajte promijeniti filter sadržaja iz **DefaultV2** u **Default** u vašem Azure resursu.
+:::
+
+1. Idite na [Azure portal](https://portal.azure.com/) i kreirajte **Azure OpenAI** resurs. trebat će vam:
+ - **Naziv resursa**: Ovo postaje dio vaše krajnje tačke API-ja (`https://RESOURCE_NAME.openai.azure.com/`)
+ - **API ključ**: Ili `KEY 1` ili `KEY 2` sa vašeg izvora
+
+2. Idite na [Azure AI Foundry](https://ai.azure.com/) i implementirajte model.
+
+ :::note
+ Ime implementacije mora odgovarati imenu modela da bi opencode ispravno radio.
+ :::
+
+3. Pokrenite naredbu `/connect` i potražite **Azure**.
+
+
+
+```txt
+ /connect
+
+
+```
+
+4. Unesite svoj API ključ.
+
+
+
+```txt
+ ┌ API key
+ │
+ │
+ └ enter
+
+
+```
+
+5. Postavite ime vašeg resursa kao varijablu okruženja:
+
+
+
+```bash
+ AZURE_RESOURCE_NAME=XXX opencode
+
+
+```
+
+ Ili ga dodajte na svoj bash profil:
+
+
+
+```bash title="~/.bash_profile"
+ export AZURE_RESOURCE_NAME=XXX
+
+
+```
+
+6. Pokrenite naredbu `/models` da odaberete svoj raspoređeni model.
+
+
+
+```txt
+ /models
+
+
+```
+
+---
+
+### Azure Cognitive Services
+
+1. Idite na [Azure portal](https://portal.azure.com/) i kreirajte **Azure OpenAI** resurs. trebat će vam:
+ - **Naziv resursa**: Ovo postaje dio vaše krajnje tačke API-ja (`https://AZURE_COGNITIVE_SERVICES_RESOURCE_NAME.cognitiveservices.azure.com/`)
+ - **API ključ**: Ili `KEY 1` ili `KEY 2` sa vašeg izvora
+
+2. Idite na [Azure AI Foundry](https://ai.azure.com/) i implementirajte model.
+
+ :::note
+ Ime implementacije mora odgovarati imenu modela da bi opencode ispravno radio.
+ :::
+
+3. Pokrenite naredbu `/connect` i potražite **Azure kognitivne usluge**.
+
+
+
+```txt
+ /connect
+
+
+```
+
+4. Unesite svoj API ključ.
+
+
+
+```txt
+ ┌ API key
+ │
+ │
+ └ enter
+
+
+```
+
+5. Postavite ime vašeg resursa kao varijablu okruženja:
+
+
+
+```bash
+ AZURE_COGNITIVE_SERVICES_RESOURCE_NAME=XXX opencode
+
+
+```
+
+ Ili ga dodajte na svoj bash profil:
+
+
+
+```bash title="~/.bash_profile"
+ export AZURE_COGNITIVE_SERVICES_RESOURCE_NAME=XXX
+
+
+```
+
+6. Pokrenite naredbu `/models` da odaberete svoj raspoređeni model.
+
+
+
+```txt
+ /models
+
+
+```
+
+---
+
+### Baseten
+
+1. Idite na [Baseten](https://app.baseten.co/), kreirajte račun i generirajte API ključ.
+
+2. Pokrenite naredbu `/connect` i potražite **Baseten**.
+
+
+
+```txt
+ /connect
+
+
+```
+
+3. Unesite svoj Baseten API ključ.
+
+
+
+```txt
+ ┌ API key
+ │
+ │
+ └ enter
+
+
+```
+
+4. Pokrenite naredbu `/models` da odaberete model.
+
+
+
+```txt
+ /models
+
+
+```
+
+---
+
+### Cerebras
+
+1. Idite na [Cerebras konzolu](https://inference.cerebras.ai/), kreirajte račun i generirajte API ključ.
+
+2. Pokrenite naredbu `/connect` i potražite **Cerebras**.
+
+
+
+```txt
+ /connect
+
+
+```
+
+3. Unesite svoj Cerebras API ključ.
+
+
+
+```txt
+ ┌ API key
+ │
+ │
+ └ enter
+
+
+```
+
+4. Pokrenite naredbu `/models` da odaberete model kao što je _Qwen 3 Coder 480B_.
+
+
+
+```txt
+ /models
+
+
+```
+
+---
+
+### Cloudflare AI Gateway
+
+Cloudflare AI Gateway vam omogućava da pristupite modelima iz OpenAI, Anthropic, Workers AI i više preko objedinjene krajnje tačke. Sa [Unified Billing](https://developers.cloudflare.com/ai-gateway/features/unified-billing/) nisu vam potrebni posebni API ključevi za svakog provajdera.
+
+1. Idite na [Cloudflare kontrolnu tablu](https://dash.cloudflare.com/), idite na **AI** > **AI Gateway** i kreirajte novi pristupnik.
+
+2. Postavite svoj ID naloga i ID pristupnika kao varijable okruženja.
+
+
+
+```bash title="~/.bash_profile"
+ export CLOUDFLARE_ACCOUNT_ID=your-32-character-account-id
+ export CLOUDFLARE_GATEWAY_ID=your-gateway-id
+
+
+```
+
+3. Pokrenite naredbu `/connect` i potražite **Cloudflare AI Gateway**.
+
+
+
+```txt
+ /connect
+
+
+```
+
+4. Unesite svoj Cloudflare API token.
+
+
+
+```txt
+ ┌ API key
+ │
+ │
+ └ enter
+
+
+```
+
+ Ili ga postavite kao varijablu okruženja.
+
+
+
+```bash title="~/.bash_profile"
+ export CLOUDFLARE_API_TOKEN=your-api-token
+
+
+```
+
+5. Pokrenite naredbu `/models` da odaberete model.
+
+
+
+```txt
+ /models
+
+
+```
+
+ Također možete dodati modele kroz svoju opencode konfiguraciju.
+
+
+
+```json title="opencode.json"
+ {
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "cloudflare-ai-gateway": {
+ "models": {
+ "openai/gpt-4o": {},
+ "anthropic/claude-sonnet-4": {}
+ }
+ }
+ }
+ }
+
+
+```
+
+---
+
+### Cortecs
+
+1. Idite na [Cortecs konzolu](https://cortecs.ai/), kreirajte račun i generirajte API ključ.
+
+2. Pokrenite naredbu `/connect` i potražite **Cortecs**.
+
+
+
+```txt
+ /connect
+
+
+```
+
+3. Unesite svoj Cortecs API ključ.
+
+
+
+```txt
+ ┌ API key
+ │
+ │
+ └ enter
+
+
+```
+
+4. Pokrenite naredbu `/models` da odaberete model kao što je _Kimi K2 Instruct_.
+
+
+
+```txt
+ /models
+
+
+```
+
+---
+
+### DeepSeek
+
+1. Idite na [DeepSeek konzolu](https://platform.deepseek.com/), kreirajte nalog i kliknite na **Kreiraj novi API ključ**.
+
+2. Pokrenite naredbu `/connect` i potražite **DeepSeek**.
+
+
+
+```txt
+ /connect
+
+
+```
+
+3. Unesite svoj DeepSeek API ključ.
+
+
+
+```txt
+ ┌ API key
+ │
+ │
+ └ enter
+
+
+```
+
+4. Pokrenite naredbu `/models` da odaberete DeepSeek model kao što je _DeepSeek Reasoner_.
+
+
+
+```txt
+ /models
+
+
+```
+
+---
+
+### Duboka infra
+
+1. Idite na [Deep Infra kontrolnu tablu](https://deepinfra.com/dash), kreirajte nalog i generišite API ključ.
+
+2. Pokrenite naredbu `/connect` i potražite **Deep Infra**.
+
+
+
+```txt
+ /connect
+
+
+```
+
+3. Unesite svoj Deep Infra API ključ.
+
+
+
+```txt
+ ┌ API key
+ │
+ │
+ └ enter
+
+
+```
+
+4. Pokrenite naredbu `/models` da odaberete model.
+
+
+
+```txt
+ /models
+
+
+```
+
+---
+
+### Firmware
+
+1. Idite na [kontrolnu tablu firmvera](https://app.firmware.ai/signup), kreirajte nalog i generišite API ključ.
+
+2. Pokrenite naredbu `/connect` i potražite **Firmware**.
+
+
+
+```txt
+ /connect
+
+
+```
+
+3. Unesite svoj Firmware API ključ.
+
+
+
+```txt
+ ┌ API key
+ │
+ │
+ └ enter
+
+
+```
+
+4. Pokrenite naredbu `/models` da odaberete model.
+
+
+
+```txt
+ /models
+
+
+```
+
+---
+
+### Vatromet AI
+
+1. Idite na [Fireworks AI konzolu](https://app.fireworks.ai/), kreirajte račun i kliknite na **Kreiraj API ključ**.
+
+2. Pokrenite naredbu `/connect` i potražite **Fireworks AI**.
+
+
+
+```txt
+ /connect
+
+
+```
+
+3. Unesite svoj Fireworks AI API ključ.
+
+
+
+```txt
+ ┌ API key
+ │
+ │
+ └ enter
+
+
+```
+
+4. Pokrenite naredbu `/models` da odaberete model kao što je _Kimi K2 Instruct_.
+
+
+
+```txt
+ /models
+
+
+```
+
+---
+
+### GitLab Duo
+
+GitLab Duo pruža agentsko ćaskanje sa AI-om sa izvornim mogućnostima pozivanja alata preko GitLab-ovog Anthropic proxyja.
+
+1. Pokrenite naredbu `/connect` i odaberite GitLab.
+
+
+
+```txt
+ /connect
+
+
+```
+
+2. Odaberite svoj način autentifikacije:
+
+
+
+```txt
+ ┌ Select auth method
+ │
+ │ OAuth (Recommended)
+ │ Personal Access Token
+ └
+
+
+```
+
+ #### Korištenje OAuth-a (preporučeno)
+
+ Odaberite **OAuth** i vaš pretraživač će se otvoriti za autorizaciju.
+
+ #### Korištenje tokena ličnog pristupa
+ 1. Idite na [GitLab korisničke postavke > Pristupni tokeni](https://gitlab.com/-/user_settings/personal_access_tokens)
+ 2. Kliknite **Dodaj novi token**
+ 3. Naziv: `OpenCode`, opseg: `api`
+ 4. Kopirajte token (počinje sa `glpat-`)
+ 5. Unesite ga u terminal
+
+3. Pokrenite naredbu `/models` da vidite dostupne modele.
+
+
+
+```txt
+ /models
+
+
+```
+
+ Dostupna su tri modela bazirana na Claudeu:
+ - **duo-chat-haiku-4-5** (zadano) - Brzi odgovori za brze zadatke
+ - **duo-chat-sonnet-4-5** - Uravnotežene performanse za većinu tokova posla
+ - **duo-chat-opus-4-5** - Najsposobniji za kompleksnu analizu
+
+:::note
+Također možete odrediti 'GITLAB_TOKEN' varijablu okruženja ako ne želite
+da pohrani token u opencode auth memoriju.
+:::
+
+##### Samostalni GitLab
+
+:::note[compliance note]
+OpenCode koristi mali model za neke AI zadatke kao što je generiranje naslova sesije.
+Podrazumevano je konfigurisan da koristi gpt-5-nano, a hostuje ga Zen. Da zaključate OpenCode
+da biste koristili samo svoju vlastitu instancu koju hostuje GitLab, dodajte sljedeće u svoju
+`opencode.json` fajl. Također se preporučuje da onemogućite dijeljenje sesije.
+
+```json
+{
+ "$schema": "https://opencode.ai/config.json",
+ "small_model": "gitlab/duo-chat-haiku-4-5",
+ "share": "disabled"
+}
+```
+
+:::
+
+Za GitLab instance koje hostuju sami:
+
+```bash
+export GITLAB_INSTANCE_URL=https://gitlab.company.com
+export GITLAB_TOKEN=glpat-...
+```
+
+Ako vaša instanca pokreće prilagođeni AI Gateway:
+
+```bash
+GITLAB_AI_GATEWAY_URL=https://ai-gateway.company.com
+```
+
+Ili dodajte na svoj bash profil:
+
+```bash title="~/.bash_profile"
+export GITLAB_INSTANCE_URL=https://gitlab.company.com
+export GITLAB_AI_GATEWAY_URL=https://ai-gateway.company.com
+export GITLAB_TOKEN=glpat-...
+```
+
+:::note
+Vaš GitLab administrator mora omogućiti sljedeće:
+
+1. [Duo Agent Platforma](https://docs.gitlab.com/user/gitlab_duo/turn_on_off/) za korisnika, grupu ili instancu
+2. Zastavice funkcija (preko Rails konzole):
+ - `agent_platform_claude_code`
+ - `third_party_agents_enabled`
+ :::
+
+##### OAuth za self-hosted instance
+
+Da bi Oauth radio za vašu instancu koju sami hostujete, morate kreirati
+novu aplikaciju (Podešavanja → Aplikacije) sa
+URL povratnog poziva `http://127.0.0.1:8080/callback` i sljedeći opseg:
+
+- api (pristupite API-ju u svoje ime)
+- read_user (Pročitajte svoje lične podatke)
+- read_repository (omogućava pristup spremištu samo za čitanje)
+
+Zatim izložite ID aplikacije kao varijablu okruženja:
+
+```bash
+export GITLAB_OAUTH_CLIENT_ID=your_application_id_here
+```
+
+Više dokumentacije na početnoj stranici [opencode-gitlab-auth](https://www.npmjs.com/package/@gitlab/opencode-gitlab-auth).
+
+##### Konfiguracija
+
+Prilagodite putem `opencode.json`:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "gitlab": {
+ "options": {
+ "instanceUrl": "https://gitlab.com",
+ "featureFlags": {
+ "duo_agent_platform_agentic_chat": true,
+ "duo_agent_platform": true
+ }
+ }
+ }
+ }
+}
+```
+
+##### GitLab API alati (opciono, ali se preporučuje)
+
+Za pristup GitLab alatima (zahtjevi za spajanje, problemi, cjevovodi, CI/CD, itd.):
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "plugin": ["@gitlab/opencode-gitlab-plugin"]
+}
+```
+
+Ovaj dodatak pruža sveobuhvatne mogućnosti upravljanja GitLab repozitorijumom, uključujući MR preglede, praćenje problema, praćenje procesa i još mnogo toga.
+
+---
+
+### GitHub Copilot
+
+Da biste koristili svoju GitHub Copilot pretplatu s opencodeom:
+
+:::note
+Neki modeli će možda trebati [Pro+
+pretplata](https://github.com/features/copilot/plans) za korištenje.
+
+Neki modeli moraju biti ručno omogućeni u vašim [postavkama GitHub Copilot](https://docs.github.com/en/copilot/how-tos/use-ai-models/configure-access-to-ai-models#setup-for-individual-use).
+:::
+
+1. Pokrenite naredbu `/connect` i potražite GitHub Copilot.
+
+
+
+```txt
+ /connect
+
+
+```
+
+2. Idite na [github.com/login/device](https://github.com/login/device) i unesite kod.
+
+
+
+```txt
+ ┌ Login with GitHub Copilot
+ │
+ │ https://github.com/login/device
+ │
+ │ Enter code: 8F43-6FCF
+ │
+ └ Waiting for authorization...
+
+
+```
+
+3. Sada pokrenite naredbu `/models` da odaberete model koji želite.
+
+
+
+```txt
+ /models
+
+
+```
+
+---
+
+### Google Vertex AI
+
+Za korištenje Google Vertex AI s OpenCodeom:
+
+1. Idite do **Model Garden** u Google Cloud Console i provjerite
+ modeli dostupni u vašoj regiji.
+
+ :::note
+ Morate imati Google Cloud projekat sa omogućenim Vertex AI API.
+ :::
+
+2. Postavite potrebne varijable okruženja:
+ - `GOOGLE_CLOUD_PROJECT`: ID vašeg Google Cloud projekta
+ - `VERTEX_LOCATION` (opciono): Region za Vertex AI (podrazumevano na `global`)
+ - Autentifikacija (odaberite jednu):
+ - `GOOGLE_APPLICATION_CREDENTIALS`: Put do JSON ključnog fajla vašeg naloga usluge
+ - Autentifikacija koristeći gcloud CLI: `gcloud auth application-default login`
+
+ Postavite ih dok se pokreće opencode.
+
+
+
+```bash
+ GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json GOOGLE_CLOUD_PROJECT=your-project-id opencode
+
+
+```
+
+ Ili ih dodajte svom bash profilu.
+
+
+
+```bash title="~/.bash_profile"
+ export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json
+ export GOOGLE_CLOUD_PROJECT=your-project-id
+ export VERTEX_LOCATION=global
+
+
+```
+
+:::tip
+Regija `global` poboljšava dostupnost i smanjuje greške bez dodatnih troškova. Koristite regionalne krajnje tačke (npr. `us-central1`) za zahtjeve rezidentnosti podataka. [Saznajte više](https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models#regional_and_global_endpoints)
+:::
+
+3. Pokrenite naredbu `/models` da odaberete model koji želite.
+
+
+
+```txt
+ /models
+
+
+```
+
+---
+
+### Groq
+
+1. Idite na [Groq konzolu](https://console.groq.com/), kliknite **Kreiraj API ključ** i kopirajte ključ.
+
+2. Pokrenite naredbu `/connect` i potražite Groq.
+
+
+
+```txt
+ /connect
+
+
+```
+
+3. Unesite API ključ za provajdera.
+
+
+
+```txt
+ ┌ API key
+ │
+ │
+ └ enter
+
+
+```
+
+4. Pokrenite naredbu `/models` da odaberete onu koju želite.
+
+
+
+```txt
+ /models
+
+
+```
+
+---
+
+### Hugging Face
+
+[Hugging Face Inference Providers](https://huggingface.co/docs/inference-providers) omogućava pristup otvorenim modelima koje podržava 17+ provajdera.
+
+1. Idite na [Postavke zagrljaja](https://huggingface.co/settings/tokens/new?ownUserPermissions=inference.serverless.write&tokenType=fineGrained) da kreirate token s dozvolom za upućivanje poziva dobavljačima inference.
+
+2. Pokrenite naredbu `/connect` i potražite **Hugging Face**.
+
+
+
+```txt
+ /connect
+
+
+```
+
+3. Unesite svoj token Hugging Face.
+
+
+
+```txt
+ ┌ API key
+ │
+ │
+ └ enter
+
+
+```
+
+4. Pokrenite naredbu `/models` da odaberete model kao što je _Kimi-K2-Instruct_ ili _GLM-4.6_.
+
+
+
+```txt
+ /models
+
+
+```
+
+---
+
+### Helicone
+
+[Helicone](https://helicone.ai) je platforma za praćenje LLM koja pruža evidenciju, praćenje i analitiku za vaše AI aplikacije. Helicone AI Gateway automatski usmjerava vaše zahtjeve do odgovarajućeg provajdera na osnovu modela.
+
+1. Idite na [Helicone](https://helicone.ai), kreirajte račun i generirajte API ključ sa svoje kontrolne table.
+
+2. Pokrenite naredbu `/connect` i potražite **Helicone**.
+
+
+
+```txt
+ /connect
+
+
+```
+
+3. Unesite svoj Helicone API ključ.
+
+
+
+```txt
+ ┌ API key
+ │
+ │
+ └ enter
+
+
+```
+
+4. Pokrenite naredbu `/models` da odaberete model.
+
+
+
+```txt
+ /models
+
+
+```
+
+Za više provajdera i napredne funkcije kao što su keširanje i ograničavanje brzine, provjerite [Helicone dokumentaciju](https://docs.helicone.ai).
+
+#### Opcione konfiguracije
+
+U slučaju da vidite funkciju ili model iz Helicone-a koji nije automatski konfiguriran putem opencodea, uvijek ga možete sami konfigurirati.
+
+Evo [Heliconeov katalog modela](https://helicone.ai/models), ovo će vam trebati da preuzmete ID-ove modela koje želite dodati.
+
+```jsonc title="~/.config/opencode/opencode.jsonc"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "helicone": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "Helicone",
+ "options": {
+ "baseURL": "https://ai-gateway.helicone.ai",
+ },
+ "models": {
+ "gpt-4o": {
+ // Model ID (from Helicone's model directory page)
+ "name": "GPT-4o", // Your own custom name for the model
+ },
+ "claude-sonnet-4-20250514": {
+ "name": "Claude Sonnet 4",
+ },
+ },
+ },
+ },
+}
+```
+
+#### Prilagođena zaglavlja
+
+Helicone podržava prilagođena zaglavlja za funkcije kao što su keširanje, praćenje korisnika i upravljanje sesijom. Dodajte ih u konfiguraciju svog provajdera koristeći `options.headers`:
+
+```jsonc title="~/.config/opencode/opencode.jsonc"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "helicone": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "Helicone",
+ "options": {
+ "baseURL": "https://ai-gateway.helicone.ai",
+ "headers": {
+ "Helicone-Cache-Enabled": "true",
+ "Helicone-User-Id": "opencode",
+ },
+ },
+ },
+ },
+}
+```
+
+##### Praćenje sesije
+
+Heliconeova funkcija [Sessions](https://docs.helicone.ai/features/sessions) vam omogućava da grupišete povezane LLM zahtjeve zajedno. Koristite dodatak [opencode-helicone-session](https://github.com/H2Shami/opencode-helicone-session) da automatski prijavite svaki OpenCode razgovor kao sesiju u Helicone-u.
+
+```bash
+npm install -g opencode-helicone-session
+```
+
+Dodajte ga u svoju konfiguraciju.
+
+```json title="opencode.json"
+{
+ "plugin": ["opencode-helicone-session"]
+}
+```
+
+Dodatak ubacuje zaglavlja `Helicone-Session-Id` i `Helicone-Session-Name` u vaše zahtjeve. Na stranici Helicone Sessions, vidjet ćete svaki OpenCode razgovor naveden kao zasebna sesija.
+
+##### Uobičajena Helicone zaglavlja
+
+| Header | Opis |
+| -------------------------- | ------------------------------------------------------------- |
+| `Helicone-Cache-Enabled` | Omogući keširanje odgovora (`true`/`false`) |
+| `Helicone-User-Id` | Pratite metriku po korisniku |
+| `Helicone-Property-[Name]` | Dodajte prilagođena svojstva (npr. `Helicone-Property-Environment`) |
+| `Helicone-Prompt-Id` | Povezivanje zahtjeva sa brzim verzijama |
+
+Pogledajte [Helicone Header Directory](https://docs.helicone.ai/helicone-headers/header-directory) za sva dostupna zaglavlja.
+
+---
+
+### llama.cpp
+
+Možete konfigurirati opencode za korištenje lokalnih modela putem [llama.cpp's](https://github.com/ggml-org/llama.cpp) uslužnog programa llama-server
+
+```json title="opencode.json" "llama.cpp" {5, 6, 8, 10-15}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "llama.cpp": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "llama-server (local)",
+ "options": {
+ "baseURL": "http://127.0.0.1:8080/v1"
+ },
+ "models": {
+ "qwen3-coder:a3b": {
+ "name": "Qwen3-Coder: a3b-30b (local)",
+ "limit": {
+ "context": 128000,
+ "output": 65536
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+U ovom primjeru:
+
+- `llama.cpp` je ID prilagođenog provajdera. Ovo može biti bilo koji niz koji želite.
+- `npm` specificira paket koji će se koristiti za ovog provajdera. Ovdje se `@ai-sdk/openai-compatible` koristi za bilo koji OpenAI kompatibilan API.
+- `name` je ime za prikaz za provajdera u korisničkom sučelju.
+- `options.baseURL` je krajnja tačka za lokalni server.
+- `models` je mapa ID-ova modela prema njihovim konfiguracijama. Naziv modela će biti prikazan na listi za odabir modela.
+
+---
+
+### IO.NET
+
+IO.NET nudi 17 modela optimiziranih za različite slučajeve upotrebe:
+
+1. Idite na [IO.NET konzolu](https://ai.io.net/), kreirajte račun i generirajte API ključ.
+
+2. Pokrenite naredbu `/connect` i potražite **IO.NET**.
+
+
+
+```txt
+ /connect
+
+
+```
+
+3. Unesite svoj IO.NET API ključ.
+
+
+
+```txt
+ ┌ API key
+ │
+ │
+ └ enter
+
+
+```
+
+4. Pokrenite naredbu `/models` da odaberete model.
+
+
+
+```txt
+ /models
+
+
+```
+
+---
+
+### LM Studio
+
+Možete konfigurirati opencode za korištenje lokalnih modela preko LM Studio.
+
+```json title="opencode.json" "lmstudio" {5, 6, 8, 10-14}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "lmstudio": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "LM Studio (local)",
+ "options": {
+ "baseURL": "http://127.0.0.1:1234/v1"
+ },
+ "models": {
+ "google/gemma-3n-e4b": {
+ "name": "Gemma 3n-e4b (local)"
+ }
+ }
+ }
+ }
+}
+```
+
+U ovom primjeru:
+
+- `lmstudio` je ID prilagođenog provajdera. Ovo može biti bilo koji niz koji želite.
+- `npm` specificira paket koji će se koristiti za ovog provajdera. Ovdje se `@ai-sdk/openai-compatible` koristi za bilo koji OpenAI kompatibilan API.
+- `name` je ime za prikaz za provajdera u korisničkom sučelju.
+- `options.baseURL` je krajnja tačka za lokalni server.
+- `models` je mapa ID-ova modela prema njihovim konfiguracijama. Naziv modela će biti prikazan na listi za odabir modela.
+
+---
+
+### Moonshot AI
+
+Da biste koristili Kimi K2 iz Moonshot AI:
+
+1. Idite na [Moonshot AI konzolu](https://platform.moonshot.ai/console), kreirajte nalog i kliknite na **Kreiraj API ključ**.
+
+2. Pokrenite naredbu `/connect` i potražite **Moonshot AI**.
+
+
+
+```txt
+ /connect
+
+
+```
+
+3. Unesite svoj Moonshot API ključ.
+
+
+
+```txt
+ ┌ API key
+ │
+ │
+ └ enter
+
+
+```
+
+4. Pokrenite naredbu `/models` da odaberete _Kimi K2_.
+
+
+
+```txt
+ /models
+
+
+```
+
+---
+
+### MiniMax
+
+1. Prijeđite na [MiniMax API konzolu](https://platform.minimax.io/login), kreirajte račun i generirajte API ključ.
+
+2. Pokrenite naredbu `/connect` i potražite **MiniMax**.
+
+
+
+```txt
+ /connect
+
+
+```
+
+3. Unesite svoj MiniMax API ključ.
+
+
+
+```txt
+ ┌ API key
+ │
+ │
+ └ enter
+
+
+```
+
+4. Pokrenite naredbu `/models` da odaberete model kao što je _M2.1_.
+
+
+
+```txt
+ /models
+
+
+```
+
+---
+
+### Nebius Token Factory
+
+1. Idite na [Nebius Token Factory konzolu](https://tokenfactory.nebius.com/), kreirajte nalog i kliknite na **Dodaj ključ**.
+
+2. Pokrenite naredbu `/connect` i potražite **Nebius Token Factory**.
+
+
+
+```txt
+ /connect
+
+
+```
+
+3. Unesite svoj Nebius Token Factory API ključ.
+
+
+
+```txt
+ ┌ API key
+ │
+ │
+ └ enter
+
+
+```
+
+4. Pokrenite naredbu `/models` da odaberete model kao što je _Kimi K2 Instruct_.
+
+
+
+```txt
+ /models
+
+
+```
+
+---
+
+### Ollama
+
+Možete konfigurirati opencode za korištenje lokalnih modela putem Ollame.
+
+:::tip
+Ollama se može automatski konfigurirati za OpenCode. Pogledajte [Ollama integracijske dokumente](https://docs.ollama.com/integrations/opencode) za detalje.
+:::
+
+```json title="opencode.json" "ollama" {5, 6, 8, 10-14}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "ollama": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "Ollama (local)",
+ "options": {
+ "baseURL": "http://localhost:11434/v1"
+ },
+ "models": {
+ "llama2": {
+ "name": "Llama 2"
+ }
+ }
+ }
+ }
+}
+```
+
+U ovom primjeru:
+
+- `ollama` je ID prilagođenog provajdera. Ovo može biti bilo koji niz koji želite.
+- `npm` specificira paket koji će se koristiti za ovog provajdera. Ovdje se `@ai-sdk/openai-compatible` koristi za bilo koji OpenAI kompatibilan API.
+- `name` je ime za prikaz za provajdera u korisničkom sučelju.
+- `options.baseURL` je krajnja tačka za lokalni server.
+- `models` je mapa ID-ova modela prema njihovim konfiguracijama. Naziv modela će biti prikazan na listi za odabir modela.
+
+:::tip
+Ako pozivi alata ne rade, pokušajte povećati `num_ctx` u Ollama. Počnite oko 16k - 32k.
+:::
+
+---
+
+### Ollama Cloud
+
+Da biste koristili Ollama Cloud s OpenCodeom:
+
+1. Idite na [https://ollama.com/](https://ollama.com/) i prijavite se ili kreirajte račun.
+
+2. Idite na **Postavke** > **Ključevi** i kliknite na **Dodaj API ključ** da generišete novi API ključ.
+
+3. Kopirajte API ključ za korištenje u OpenCodeu.
+
+4. Pokrenite naredbu `/connect` i potražite **Ollama Cloud**.
+
+
+
+```txt
+ /connect
+
+
+```
+
+5. Unesite svoj Ollama Cloud API ključ.
+
+
+
+```txt
+ ┌ API key
+ │
+ │
+ └ enter
+
+
+```
+
+6. **Važno**: Prije upotrebe modela oblaka u OpenCodeu, morate lokalno povući informacije o modelu:
+
+
+
+```bash
+ ollama pull gpt-oss:20b-cloud
+
+
+```
+
+7. Pokrenite naredbu `/models` da odaberete svoj model Ollama Cloud.
+
+
+
+```txt
+ /models
+
+
+```
+
+---
+
+### OpenAI
+
+Preporučujemo da se prijavite za [ChatGPT Plus ili Pro](https://chatgpt.com/pricing).
+
+1. Nakon što ste se prijavili, pokrenite naredbu `/connect` i odaberite OpenAI.
+
+
+
+```txt
+ /connect
+
+
+```
+
+2. Ovdje možete odabrati opciju **ChatGPT Plus/Pro** i ona će otvoriti vaš pretraživač
+ i traži od vas da se autentifikujete.
+
+
+
+```txt
+ ┌ Select auth method
+ │
+ │ ChatGPT Plus/Pro
+ │ Manually enter API Key
+ └
+
+
+```
+
+3. Sada bi svi OpenAI modeli trebali biti dostupni kada koristite naredbu `/models`.
+
+
+
+```txt
+ /models
+
+
+```
+
+##### Korištenje API ključeva
+
+Ako već imate API ključ, možete odabrati **Ručno unesite API ključ** i zalijepite ga u svoj terminal.
+
+---
+
+### OpenCode Zen
+
+OpenCode Zen je lista testiranih i verifikovanih modela koju je obezbedio OpenCode tim. [Saznajte više](/docs/zen).
+
+1. Prijavite se na **OpenCode Zen** i kliknite na **Kreiraj API ključ**.
+
+2. Pokrenite naredbu `/connect` i potražite **OpenCode Zen**.
+
+
+
+```txt
+ /connect
+
+
+```
+
+3. Unesite svoj OpenCode API ključ.
+
+
+
+```txt
+ ┌ API key
+ │
+ │
+ └ enter
+
+
+```
+
+4. Pokrenite naredbu `/models` da odaberete model kao što je _Qwen 3 Coder 480B_.
+
+
+
+```txt
+ /models
+
+
+```
+
+---
+
+### OpenRouter
+
+1. Idite na [OpenRouter nadzornu ploču](https://openrouter.ai/settings/keys), kliknite na **Kreiraj API ključ** i kopirajte ključ.
+
+2. Pokrenite naredbu `/connect` i potražite OpenRouter.
+
+
+
+```txt
+ /connect
+
+
+```
+
+3. Unesite API ključ za provajdera.
+
+
+
+```txt
+ ┌ API key
+ │
+ │
+ └ enter
+
+
+```
+
+4. Mnogi OpenRouter modeli su unapred učitani po defaultu, pokrenite naredbu `/models` da odaberete onaj koji želite.
+
+
+
+```txt
+ /models
+
+
+```
+
+ Također možete dodati dodatne modele putem vaše opencode konfiguracije.
+
+
+
+```json title="opencode.json" {6}
+ {
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "openrouter": {
+ "models": {
+ "somecoolnewmodel": {}
+ }
+ }
+ }
+ }
+
+
+```
+
+5. Također ih možete prilagoditi putem vaše opencode konfiguracije. Evo primjera navođenja provajdera
+
+
+
+```json title="opencode.json"
+ {
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "openrouter": {
+ "models": {
+ "moonshotai/kimi-k2": {
+ "options": {
+ "provider": {
+ "order": ["baseten"],
+ "allow_fallbacks": false
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+
+```
+
+---
+
+### SAP AI Core
+
+SAP AI Core omogućava pristup preko 40+ modela iz OpenAI, Anthropic, Google, Amazon, Meta, Mistral i AI21 putem objedinjene platforme.
+
+1. Idite na vaš [SAP BTP Cockpit](https://account.hana.ondemand.com/), idite na instancu usluge SAP AI Core i kreirajte servisni ključ.
+
+ :::tip
+ Servisni ključ je JSON objekat koji sadrži `clientid`, `clientsecret`, `url` i `serviceurls.AI_API_URL`. Svoju AI Core instancu možete pronaći pod **Usluge** > **Instance i pretplate** u BTP kokpitu.
+ :::
+
+2. Pokrenite naredbu `/connect` i potražite **SAP AI Core**.
+
+
+
+```txt
+ /connect
+
+
+```
+
+3. Unesite JSON svoj servisni ključ.
+
+
+
+```txt
+ ┌ Service key
+ │
+ │
+ └ enter
+
+
+```
+
+ Ili postavite varijablu okruženja `AICORE_SERVICE_KEY`:
+
+
+
+```bash
+ AICORE_SERVICE_KEY='{"clientid":"...","clientsecret":"...","url":"...","serviceurls":{"AI_API_URL":"..."}}' opencode
+
+
+```
+
+ Ili ga dodajte na svoj bash profil:
+
+
+
+```bash title="~/.bash_profile"
+ export AICORE_SERVICE_KEY='{"clientid":"...","clientsecret":"...","url":"...","serviceurls":{"AI_API_URL":"..."}}'
+
+
+```
+
+4. Opciono postavite ID implementacije i grupu resursa:
+
+
+
+```bash
+ AICORE_DEPLOYMENT_ID=your-deployment-id AICORE_RESOURCE_GROUP=your-resource-group opencode
+
+
+```
+
+ :::note
+ Ove postavke su opcione i treba ih konfigurirati u skladu s vašim SAP AI Core postavkama.
+ :::
+
+5. Pokrenite naredbu `/models` da odaberete između 40+ dostupnih modela.
+
+
+
+```txt
+ /models
+
+
+```
+
+---
+
+### OVHcloud AI krajnje tačke
+
+1. Idite na [OVHcloud panel](https://ovh.com/manager). Idite do odjeljka `Public Cloud`, `AI & Machine Learning` > `AI Endpoints` i na kartici `API Keys` kliknite na **Kreiraj novi API ključ**.
+
+2. Pokrenite naredbu `/connect` i potražite **OVHcloud AI krajnje točke**.
+
+
+
+```txt
+ /connect
+
+
+```
+
+3. Unesite svoj OVHcloud AI Endpoints API ključ.
+
+
+
+```txt
+ ┌ API key
+ │
+ │
+ └ enter
+
+
+```
+
+4. Pokrenite naredbu `/models` da odaberete model kao što je _gpt-oss-120b_.
+
+
+
+```txt
+ /models
+
+
+```
+
+---
+
+### Scaleway
+
+Da biste koristili [Scaleway Generative APIs](https://www.scaleway.com/en/docs/generative-apis/) sa Opencodeom:
+
+1. Prijeđite na [Scaleway Console IAM postavke](https://console.scaleway.com/iam/api-keys) da generišete novi API ključ.
+
+2. Pokrenite naredbu `/connect` i potražite **Scaleway**.
+
+
+
+```txt
+ /connect
+
+
+```
+
+3. Unesite svoj Scaleway API ključ.
+
+
+
+```txt
+ ┌ API key
+ │
+ │
+ └ enter
+
+
+```
+
+4. Pokrenite naredbu `/models` da odaberete model kao što je _devstral-2-123b-instruct-2512_ ili _gpt-oss-120b_.
+
+
+
+```txt
+ /models
+
+
+```
+
+---
+
+### Zajedno AI
+
+1. Idite na [Together AI console](https://api.together.ai), kreirajte nalog i kliknite na **Dodaj ključ**.
+
+2. Pokrenite naredbu `/connect` i potražite **Zajedno AI**.
+
+
+
+```txt
+ /connect
+
+
+```
+
+3. Unesite svoj Together AI API ključ.
+
+
+
+```txt
+ ┌ API key
+ │
+ │
+ └ enter
+
+
+```
+
+4. Pokrenite naredbu `/models` da odaberete model kao što je _Kimi K2 Instruct_.
+
+
+
+```txt
+ /models
+
+
+```
+
+---
+
+### Venice AI
+
+1. Idite na [Venice AI konzolu](https://venice.ai), kreirajte račun i generirajte API ključ.
+
+2. Pokrenite naredbu `/connect` i potražite **Venice AI**.
+
+
+
+```txt
+ /connect
+
+
+```
+
+3. Unesite svoj Venice AI API ključ.
+
+
+
+```txt
+ ┌ API key
+ │
+ │
+ └ enter
+
+
+```
+
+4. Pokrenite naredbu `/models` da odaberete model kao što je _Llama 3.3 70B_.
+
+
+
+```txt
+ /models
+
+
+```
+
+---
+
+### Vercel AI Gateway
+
+Vercel AI Gateway vam omogućava da pristupite modelima iz OpenAI, Anthropic, Google, xAI i drugih putem objedinjene krajnje tačke. Modeli se nude po kataloškim cijenama bez maraka.
+
+1. Idite na [Vercel kontrolnu tablu](https://vercel.com/), idite na karticu **AI Gateway** i kliknite na **API ključevi** da kreirate novi API ključ.
+
+2. Pokrenite naredbu `/connect` i potražite **Vercel AI Gateway**.
+
+
+
+```txt
+ /connect
+
+
+```
+
+3. Unesite svoj Vercel AI Gateway API ključ.
+
+
+
+```txt
+ ┌ API key
+ │
+ │
+ └ enter
+
+
+```
+
+4. Pokrenite naredbu `/models` da odaberete model.
+
+
+
+```txt
+ /models
+
+
+```
+
+Također možete prilagoditi modele kroz svoju opencode konfiguraciju. Evo primjera specificiranja redoslijeda usmjeravanja dobavljača.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "vercel": {
+ "models": {
+ "anthropic/claude-sonnet-4": {
+ "options": {
+ "order": ["anthropic", "vertex"]
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+Neke korisne opcije rutiranja:
+
+| Opcija | Opis |
+| ------------------- | ---------------------------------------------------- |
+| `order` | Redoslijed dobavljača za pokušaj |
+| `only` | Ograničiti na određene provajdere |
+| `zeroDataRetention` | Koristite samo provajdere sa nultom politikom zadržavanja podataka |
+
+---
+
+### xAI
+
+1. Prijeđite na [xAI konzolu](https://console.x.ai/), kreirajte račun i generirajte API ključ.
+
+2. Pokrenite naredbu `/connect` i potražite **xAI**.
+
+
+
+```txt
+ /connect
+
+
+```
+
+3. Unesite svoj xAI API ključ.
+
+
+
+```txt
+ ┌ API key
+ │
+ │
+ └ enter
+
+
+```
+
+4. Pokrenite naredbu `/models` da odaberete model kao što je _Grok Beta_.
+
+
+
+```txt
+ /models
+
+
+```
+
+---
+
+### Z.AI
+
+1. Idite na [Z.AI API konzolu](https://z.ai/manage-apikey/apikey-list), kreirajte nalog i kliknite na **Kreiraj novi API ključ**.
+
+2. Pokrenite naredbu `/connect` i potražite **Z.AI**.
+
+
+
+```txt
+ /connect
+
+
+```
+
+ Ako ste pretplaćeni na **GLM plan kodiranja**, odaberite **Z.AI plan kodiranja**.
+
+3. Unesite svoj Z.AI API ključ.
+
+
+
+```txt
+ ┌ API key
+ │
+ │
+ └ enter
+
+
+```
+
+4. Pokrenite naredbu `/models` da odaberete model kao što je _GLM-4.7_.
+
+
+
+```txt
+ /models
+
+
+```
+
+---
+
+### ZenMux
+
+1. Idite na [ZenMux kontrolnu tablu](https://zenmux.ai/settings/keys), kliknite na **Kreiraj API ključ** i kopirajte ključ.
+
+2. Pokrenite naredbu `/connect` i potražite ZenMux.
+
+
+
+```txt
+ /connect
+
+
+```
+
+3. Unesite API ključ za provajdera.
+
+
+
+```txt
+ ┌ API key
+ │
+ │
+ └ enter
+
+
+```
+
+4. Mnogi ZenMux modeli su unaprijed učitani po defaultu, pokrenite naredbu `/models` da odaberete onaj koji želite.
+
+
+
+```txt
+ /models
+
+
+```
+
+ Također možete dodati dodatne modele putem vaše opencode konfiguracije.
+
+
+
+```json title="opencode.json" {6}
+ {
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "zenmux": {
+ "models": {
+ "somecoolnewmodel": {}
+ }
+ }
+ }
+ }
+
+
+```
+
+---
+
+## Prilagođeni provajder
+
+Da biste dodali bilo kojeg **OpenAI-kompatibilnog** provajdera koji nije naveden u naredbi `/connect`:
+
+:::tip
+Možete koristiti bilo kojeg OpenAI kompatibilnog provajdera s opencode-om. Većina modernih AI provajdera nudi API-je kompatibilne sa OpenAI.
+:::
+
+1. Pokrenite naredbu `/connect` i pomaknite se prema dolje do **Ostalo**.
+
+
+
+```bash
+ $ /connect
+
+ ┌ Add credential
+ │
+ ◆ Select provider
+ │ ...
+ │ ● Other
+ └
+
+
+```
+
+2. Unesite jedinstveni ID za provajdera.
+
+
+
+```bash
+ $ /connect
+
+ ┌ Add credential
+ │
+ ◇ Enter provider id
+ │ myprovider
+ └
+
+
+```
+
+ :::note
+ Odaberite ID koji se pamti, to ćete koristiti u svom konfiguracijskom fajlu.
+ :::
+
+3. Unesite svoj API ključ za provajdera.
+
+
+
+```bash
+ $ /connect
+
+ ┌ Add credential
+ │
+ ▲ This only stores a credential for myprovider - you will need to configure it in opencode.json, check the docs for examples.
+ │
+ ◇ Enter your API key
+ │ sk-...
+ └
+
+
+```
+
+4. Kreirajte ili ažurirajte svoju `opencode.json` datoteku u direktoriju projekta:
+
+
+
+```json title="opencode.json" ""myprovider"" {5-15}
+ {
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "myprovider": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "My AI ProviderDisplay Name",
+ "options": {
+ "baseURL": "https://api.myprovider.com/v1"
+ },
+ "models": {
+ "my-model-name": {
+ "name": "My Model Display Name"
+ }
+ }
+ }
+ }
+ }
+
+
+```
+
+ Evo opcija konfiguracije:
+ - **npm**: AI SDK paket za korištenje, `@ai-sdk/openai-compatible` za OpenAI-kompatibilne provajdere
+ - **name**: Ime za prikaz u korisničkom sučelju.
+ - **modeli**: Dostupni modeli.
+ - **options.baseURL**: URL krajnje tačke API-ja.
+ - **options.apiKey**: Opciono postavite API ključ, ako ne koristite auth.
+ - **options.headers**: Opciono postavite prilagođena zaglavlja.
+
+ Više o naprednim opcijama u primjeru ispod.
+
+5. Pokrenite naredbu `/models` i vaš prilagođeni provajder i modeli će se pojaviti na listi izbora.
+
+---
+
+##### Primjer
+
+Evo primjera postavljanja opcija `apiKey`, `headers` i modela `limit`.
+
+```json title="opencode.json" {9,11,17-20}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "myprovider": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "My AI ProviderDisplay Name",
+ "options": {
+ "baseURL": "https://api.myprovider.com/v1",
+ "apiKey": "{env:ANTHROPIC_API_KEY}",
+ "headers": {
+ "Authorization": "Bearer custom-token"
+ }
+ },
+ "models": {
+ "my-model-name": {
+ "name": "My Model Display Name",
+ "limit": {
+ "context": 200000,
+ "output": 65536
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+Detalji konfiguracije:
+
+- **apiKey**: Postavite pomoću sintakse varijable `env`, [saznajte više](/docs/config#env-vars).
+- **zaglavlja**: Prilagođena zaglavlja se šalju sa svakim zahtjevom.
+- **limit.context**: Maksimalni ulazni tokeni koje model prihvata.
+- **limit.output**: Maksimalni tokeni koje model može generirati.
+
+Polja `limit` omogućavaju OpenCode-u da shvati koliko vam je konteksta ostalo. Standardni dobavljači ih automatski preuzimaju sa models.dev.
+
+---
+
+## Rješavanje problema
+
+Ako imate problema s konfiguracijom provajdera, provjerite sljedeće:
+
+1. **Provjerite postavke autentifikacije**: Pokrenite `opencode auth list` da vidite da li su vjerodajnice
+ za provajdera se dodaju u vašu konfiguraciju.
+
+ Ovo se ne odnosi na dobavljače kao što je Amazon Bedrock, koji se oslanjaju na varijable okruženja za svoju autentifikaciju.
+
+2. Za prilagođene provajdere, provjerite konfiguraciju otvorenog koda i:
+ - Uvjerite se da ID provajdera korišten u naredbi `/connect` odgovara ID-u u vašoj opencode konfiguraciji.
+ - Za provajdera se koristi pravi npm paket. Na primjer, koristite `@ai-sdk/cerebras` za Cerebras. A za sve ostale OpenAI kompatibilne provajdere, koristite `@ai-sdk/openai-compatible`.
+ - Provjerite da li se ispravna krajnja tačka API-ja koristi u polju `options.baseURL`.
diff --git a/packages/web/src/content/docs/bs/rules.mdx b/packages/web/src/content/docs/bs/rules.mdx
new file mode 100644
index 000000000..620e489a7
--- /dev/null
+++ b/packages/web/src/content/docs/bs/rules.mdx
@@ -0,0 +1,180 @@
+---
+title: Pravila
+description: Postavite prilagodena uputstva za opencode.
+---
+
+Mozete dodati prilagodena uputstva za opencode tako sto kreirate `AGENTS.md` datoteku. Ovo je slicno pravilima u Cursoru. Sadrzi uputstva koja se ubacuju u LLM kontekst da prilagode ponasanje za vas projekat.
+
+---
+
+## Inicijalizacija
+
+Da kreirate novu `AGENTS.md` datoteku, pokrenite `/init` komandu u opencode.
+
+:::tip
+Preporuceno je da `AGENTS.md` iz projekta commitujete u Git.
+:::
+
+Ovo skenira projekat i njegov sadrzaj, razumije cemu projekat sluzi i generise `AGENTS.md`. Tako opencode bolje navigira kroz kod.
+
+Ako vec imate `AGENTS.md`, komanda ce pokusati da ga dopuni.
+
+---
+
+## Primjer
+
+Datoteku mozete napraviti i rucno. Evo primjera sta mozete staviti u `AGENTS.md`.
+
+```markdown title="AGENTS.md"
+# SST v3 Monorepo Project
+
+This is an SST v3 monorepo with TypeScript. The project uses bun workspaces for package management.
+
+## Project Structure
+
+- `packages/` - Contains all workspace packages (functions, core, web, etc.)
+- `infra/` - Infrastructure definitions split by service (storage.ts, api.ts, web.ts)
+- `sst.config.ts` - Main SST configuration with dynamic imports
+
+## Code Standards
+
+- Use TypeScript with strict mode enabled
+- Shared code goes in `packages/core/` with proper exports configuration
+- Functions go in `packages/functions/`
+- Infrastructure should be split into logical files in `infra/`
+
+## Monorepo Conventions
+
+- Import shared modules using workspace names: `@my-app/core/example`
+```
+
+Ovdje dodajete uputstva specificna za projekat koja se dijele sa timom.
+
+---
+
+## Tipovi
+
+opencode podrzava citanje `AGENTS.md` datoteke sa vise lokacija. Svaka lokacija ima drugu svrhu.
+
+### Projekat
+
+Stavite `AGENTS.md` u korijen projekta za pravila specificna za taj projekat. Primjenjuju se samo kada radite u tom direktoriju ili poddirektorijima.
+
+### Globalno
+
+Mozete imati i globalna pravila u `~/.config/opencode/AGENTS.md`. Ona se primjenjuju u svim opencode sesijama.
+
+Posto se ovo ne commituje u Git niti dijeli s timom, najbolje je da ovdje cuvate licna pravila koja LLM treba pratiti.
+
+### Kompatibilnost s Claude Code
+
+Za korisnike koji prelaze sa Claude Code, OpenCode podrzava i Claude konvencije datoteka kao rezervu:
+
+- **Pravila projekta**: `CLAUDE.md` u direktoriju projekta (koristi se ako ne postoji `AGENTS.md`)
+- **Globalna pravila**: `~/.claude/CLAUDE.md` (koristi se ako ne postoji `~/.config/opencode/AGENTS.md`)
+- **Skills**: `~/.claude/skills/` — pogledajte [Agent Skills](/docs/skills/) za detalje
+
+Da iskljucite kompatibilnost sa Claude Code, postavite jednu od ovih varijabli okruzenja:
+
+```bash
+export OPENCODE_DISABLE_CLAUDE_CODE=1 # Disable all .claude support
+export OPENCODE_DISABLE_CLAUDE_CODE_PROMPT=1 # Disable only ~/.claude/CLAUDE.md
+export OPENCODE_DISABLE_CLAUDE_CODE_SKILLS=1 # Disable only .claude/skills
+```
+
+---
+
+## Prioritet
+
+Kada se opencode pokrene, trazi datoteke pravila ovim redoslijedom:
+
+1. **Lokalne datoteke** pretrazivanjem prema gore od trenutnog direktorija (`AGENTS.md`, `CLAUDE.md`)
+2. **Globalna datoteka** na `~/.config/opencode/AGENTS.md`
+3. **Claude Code datoteka** na `~/.claude/CLAUDE.md` (osim ako je iskljucena)
+
+Prva pronadena datoteka pobjeduje u svakoj kategoriji. Na primjer, ako imate i `AGENTS.md` i `CLAUDE.md`, koristi se samo `AGENTS.md`. Isto tako, `~/.config/opencode/AGENTS.md` ima prednost nad `~/.claude/CLAUDE.md`.
+
+---
+
+## Prilagodena uputstva
+
+Mozete navesti prilagodene datoteke uputstava u `opencode.json` ili globalnom `~/.config/opencode/opencode.json`. Tako vi i tim ponovo koristite postojeca pravila bez dupliranja u AGENTS.md.
+
+Primjer:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
+}
+```
+
+Mozete koristiti i udaljene URL-ove za ucitavanje uputstava sa weba.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "instructions": ["https://raw.githubusercontent.com/my-org/shared-rules/main/style.md"]
+}
+```
+
+Udaljena uputstva se preuzimaju uz timeout od 5 sekundi.
+
+Sve datoteke uputstava se kombinuju sa vasim `AGENTS.md` datotekama.
+
+---
+
+## Referenciranje eksternih datoteka
+
+Iako opencode ne parsira automatski reference datoteka u `AGENTS.md`, slicno ponasanje mozete dobiti na dva nacina:
+
+### Koristenje opencode.json
+
+Preporuceni pristup je da koristite `instructions` polje u `opencode.json`:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "instructions": ["docs/development-standards.md", "test/testing-guidelines.md", "packages/*/AGENTS.md"]
+}
+```
+
+### Rucna uputstva u AGENTS.md
+
+Mozete nauciti opencode da cita eksterne datoteke tako sto cete dati eksplicitna uputstva u `AGENTS.md`. Evo prakticnog primjera:
+
+```markdown title="AGENTS.md"
+# TypeScript Project Rules
+
+## External File Loading
+
+CRITICAL: When you encounter a file reference (e.g., @rules/general.md), use your Read tool to load it on a need-to-know basis. They're relevant to the SPECIFIC task at hand.
+
+Instructions:
+
+- Do NOT preemptively load all references - use lazy loading based on actual need
+- When loaded, treat content as mandatory instructions that override defaults
+- Follow references recursively when needed
+
+## Development Guidelines
+
+For TypeScript code style and best practices: @docs/typescript-guidelines.md
+For React component architecture and hooks patterns: @docs/react-patterns.md
+For REST API design and error handling: @docs/api-standards.md
+For testing strategies and coverage requirements: @test/testing-guidelines.md
+
+## General Guidelines
+
+Read the following file immediately as it's relevant to all workflows: @rules/general-guidelines.md.
+```
+
+Ovaj pristup vam omogucava da:
+
+- Kreirate modularne datoteke pravila koje se mogu ponovo koristiti
+- Dijelite pravila izmedu projekata kroz symlinkove ili git submodule
+- Drzite AGENTS.md kratkim dok upucujete na detaljne smjernice
+- Osigurate da opencode ucitava datoteke samo kad su potrebne za konkretan zadatak
+
+:::tip
+Za monorepo projekte ili projekte sa zajednickim standardima, odrzivije je koristiti `opencode.json` sa glob obrascima (npr. `packages/*/AGENTS.md`) nego rucna uputstva.
+:::
diff --git a/packages/web/src/content/docs/bs/sdk.mdx b/packages/web/src/content/docs/bs/sdk.mdx
new file mode 100644
index 000000000..a73978b4a
--- /dev/null
+++ b/packages/web/src/content/docs/bs/sdk.mdx
@@ -0,0 +1,391 @@
+---
+title: SDK
+description: Type-safe JS klijent za opencode server.
+---
+
+import config from "../../../../config.mjs"
+export const typesUrl = `${config.github}/blob/dev/packages/sdk/js/src/gen/types.gen.ts`
+
+opencode JS/TS SDK pruza type-safe klijent za interakciju sa serverom.
+Koristite ga za izradu integracija i programsko upravljanje opencode-om.
+
+[Saznajte vise](/docs/server) kako server radi. Za primjere pogledajte [projects](/docs/ecosystem#projects) koje je napravila zajednica.
+
+---
+
+## Install
+
+Instalirajte SDK sa npm-a:
+
+```bash
+npm install @opencode-ai/sdk
+```
+
+---
+
+## Create client
+
+Kreirajte instancu opencode-a:
+
+```javascript
+import { createOpencode } from "@opencode-ai/sdk"
+
+const { client } = await createOpencode()
+```
+
+Ovo pokrece i server i klijent
+
+#### Options
+
+| Opcija | Tip | Opis | Default |
+| ---------- | ------------- | ----------------------------- | ----------- |
+| `hostname` | `string` | Hostname servera | `127.0.0.1` |
+| `port` | `number` | Port servera | `4096` |
+| `signal` | `AbortSignal` | Abort signal za otkazivanje | `undefined` |
+| `timeout` | `number` | Timeout u ms za start servera | `5000` |
+| `config` | `Config` | Konfiguracijski objekat | `{}` |
+
+---
+
+## Config
+
+Mozete proslijediti konfiguracijski objekat za prilagodavanje ponasanja. Instanca i dalje ucitava `opencode.json`, ali konfiguraciju mozete nadjacati ili dodati inline:
+
+```javascript
+import { createOpencode } from "@opencode-ai/sdk"
+
+const opencode = await createOpencode({
+ hostname: "127.0.0.1",
+ port: 4096,
+ config: {
+ model: "anthropic/claude-3-5-sonnet-20241022",
+ },
+})
+
+console.log(`Server running at ${opencode.server.url}`)
+
+opencode.server.close()
+```
+
+## Client only
+
+Ako vec imate pokrenutu opencode instancu, mozete napraviti klijentsku instancu i povezati se na nju:
+
+```javascript
+import { createOpencodeClient } from "@opencode-ai/sdk"
+
+const client = createOpencodeClient({
+ baseUrl: "http://localhost:4096",
+})
+```
+
+#### Options
+
+| Opcija | Tip | Opis | Default |
+| --------------- | ---------- | --------------------------------- | ----------------------- |
+| `baseUrl` | `string` | URL servera | `http://localhost:4096` |
+| `fetch` | `function` | Prilagodena fetch implementacija | `globalThis.fetch` |
+| `parseAs` | `string` | Metoda parsiranja odgovora | `auto` |
+| `responseStyle` | `string` | Stil povrata: `data` ili `fields` | `fields` |
+| `throwOnError` | `boolean` | Baci greske umjesto povrata | `false` |
+
+---
+
+## Types
+
+SDK ukljucuje TypeScript definicije za sve API tipove. Uvezite ih direktno:
+
+```typescript
+import type { Session, Message, Part } from "@opencode-ai/sdk"
+```
+
+Svi tipovi su generisani iz OpenAPI specifikacije servera i dostupni u types datoteci.
+
+---
+
+## Errors
+
+SDK moze baciti greske koje mozete uhvatiti i obraditi:
+
+```typescript
+try {
+ await client.session.get({ path: { id: "invalid-id" } })
+} catch (error) {
+ console.error("Failed to get session:", (error as Error).message)
+}
+```
+
+---
+
+## APIs
+
+SDK izlaže sve server API-je kroz type-safe klijent.
+
+---
+
+### Global
+
+| Metoda | Opis | Odgovor |
+| ----------------- | --------------------------- | ------------------------------------ |
+| `global.health()` | Provjera zdravlja i verzije | `{ healthy: true, version: string }` |
+
+---
+
+#### Examples
+
+```javascript
+const health = await client.global.health()
+console.log(health.data.version)
+```
+
+---
+
+### App
+
+| Metoda | Opis | Odgovor |
+| -------------- | ----------------------- | ------------------------------------------- |
+| `app.log()` | Upis log zapisa | `boolean` |
+| `app.agents()` | Lista dostupnih agenata | Agent[] |
+
+---
+
+#### Examples
+
+```javascript
+// Write a log entry
+await client.app.log({
+ body: {
+ service: "my-app",
+ level: "info",
+ message: "Operation completed",
+ },
+})
+
+// List available agents
+const agents = await client.app.agents()
+```
+
+---
+
+### Project
+
+| Metoda | Opis | Odgovor |
+| ------------------- | -------------------- | --------------------------------------------- |
+| `project.list()` | Lista svih projekata | Project[] |
+| `project.current()` | Trenutni projekat | Project |
+
+---
+
+#### Examples
+
+```javascript
+// List all projects
+const projects = await client.project.list()
+
+// Get current project
+const currentProject = await client.project.current()
+```
+
+---
+
+### Path
+
+| Metoda | Opis | Odgovor |
+| ------------ | ---------------- | ---------------------------------------- |
+| `path.get()` | Trenutna putanja | Path |
+
+---
+
+#### Examples
+
+```javascript
+// Get current path information
+const pathInfo = await client.path.get()
+```
+
+---
+
+### Config
+
+| Metoda | Opis | Odgovor |
+| -------------------- | --------------------------------- | ----------------------------------------------------------------------------------------------------- |
+| `config.get()` | Info o konfiguraciji | Config |
+| `config.providers()` | Lista provajdera i default modela | `{ providers: `Provider[]`, default: { [key: string]: string } }` |
+
+---
+
+#### Examples
+
+```javascript
+const config = await client.config.get()
+
+const { providers, default: defaults } = await client.config.providers()
+```
+
+---
+
+### Sessions
+
+| Method | Description | Notes |
+| ---------------------------------------------------------- | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
+| `session.list()` | List sessions | Returns Session[] |
+| `session.get({ path })` | Get session | Returns Session |
+| `session.children({ path })` | List child sessions | Returns Session[] |
+| `session.create({ body })` | Create session | Returns Session |
+| `session.delete({ path })` | Delete session | Returns `boolean` |
+| `session.update({ path, body })` | Update session properties | Returns Session |
+| `session.init({ path, body })` | Analyze app and create `AGENTS.md` | Returns `boolean` |
+| `session.abort({ path })` | Abort a running session | Returns `boolean` |
+| `session.share({ path })` | Share session | Returns Session |
+| `session.unshare({ path })` | Unshare session | Returns Session |
+| `session.summarize({ path, body })` | Summarize session | Returns `boolean` |
+| `session.messages({ path })` | List messages in a session | Returns `{ info: `Message`, parts: `Part[]`}[]` |
+| `session.message({ path })` | Get message details | Returns `{ info: `Message`, parts: `Part[]`}` |
+| `session.prompt({ path, body })` | Send prompt message | `body.noReply: true` returns UserMessage (context only). Default returns AssistantMessage with AI response |
+| `session.command({ path, body })` | Send command to session | Returns `{ info: `AssistantMessage`, parts: `Part[]`}` |
+| `session.shell({ path, body })` | Run a shell command | Returns AssistantMessage |
+| `session.revert({ path, body })` | Revert a message | Returns Session |
+| `session.unrevert({ path })` | Restore reverted messages | Returns Session |
+| `postSessionByIdPermissionsByPermissionId({ path, body })` | Respond to a permission request | Returns `boolean` |
+
+---
+
+#### Examples
+
+```javascript
+// Create and manage sessions
+const session = await client.session.create({
+ body: { title: "My session" },
+})
+
+const sessions = await client.session.list()
+
+// Send a prompt message
+const result = await client.session.prompt({
+ path: { id: session.id },
+ body: {
+ model: { providerID: "anthropic", modelID: "claude-3-5-sonnet-20241022" },
+ parts: [{ type: "text", text: "Hello!" }],
+ },
+})
+
+// Inject context without triggering AI response (useful for plugins)
+await client.session.prompt({
+ path: { id: session.id },
+ body: {
+ noReply: true,
+ parts: [{ type: "text", text: "You are a helpful assistant." }],
+ },
+})
+```
+
+---
+
+### Files
+
+| Method | Description | Response |
+| ------------------------- | ---------------------------------- | ------------------------------------------------------------------------------------------- |
+| `find.text({ query })` | Search for text in files | Array of match objects with `path`, `lines`, `line_number`, `absolute_offset`, `submatches` |
+| `find.files({ query })` | Find files and directories by name | `string[]` (paths) |
+| `find.symbols({ query })` | Find workspace symbols | Symbol[] |
+| `file.read({ query })` | Read a file | `{ type: "raw" \| "patch", content: string }` |
+| `file.status({ query? })` | Get status for tracked files | File[] |
+
+`find.files` supports a few optional query fields:
+
+- `type`: `"file"` or `"directory"`
+- `directory`: override the project root for the search
+- `limit`: max results (1–200)
+
+---
+
+#### Examples
+
+```javascript
+// Search and read files
+const textResults = await client.find.text({
+ query: { pattern: "function.*opencode" },
+})
+
+const files = await client.find.files({
+ query: { query: "*.ts", type: "file" },
+})
+
+const directories = await client.find.files({
+ query: { query: "packages", type: "directory", limit: 20 },
+})
+
+const content = await client.file.read({
+ query: { path: "src/index.ts" },
+})
+```
+
+---
+
+### TUI
+
+| Method | Description | Response |
+| ------------------------------ | ------------------------- | --------- |
+| `tui.appendPrompt({ body })` | Append text to the prompt | `boolean` |
+| `tui.openHelp()` | Open the help dialog | `boolean` |
+| `tui.openSessions()` | Open the session selector | `boolean` |
+| `tui.openThemes()` | Open the theme selector | `boolean` |
+| `tui.openModels()` | Open the model selector | `boolean` |
+| `tui.submitPrompt()` | Submit the current prompt | `boolean` |
+| `tui.clearPrompt()` | Clear the prompt | `boolean` |
+| `tui.executeCommand({ body })` | Execute a command | `boolean` |
+| `tui.showToast({ body })` | Show toast notification | `boolean` |
+
+---
+
+#### Examples
+
+```javascript
+// Control TUI interface
+await client.tui.appendPrompt({
+ body: { text: "Add this to prompt" },
+})
+
+await client.tui.showToast({
+ body: { message: "Task completed", variant: "success" },
+})
+```
+
+---
+
+### Auth
+
+| Method | Description | Response |
+| ------------------- | ------------------------------ | --------- |
+| `auth.set({ ... })` | Set authentication credentials | `boolean` |
+
+---
+
+#### Examples
+
+```javascript
+await client.auth.set({
+ path: { id: "anthropic" },
+ body: { type: "api", key: "your-api-key" },
+})
+```
+
+---
+
+### Events
+
+| Method | Description | Response |
+| ------------------- | ------------------------- | ------------------------- |
+| `event.subscribe()` | Server-sent events stream | Server-sent events stream |
+
+---
+
+#### Examples
+
+```javascript
+// Listen to real-time events
+const events = await client.event.subscribe()
+for await (const event of events.stream) {
+ console.log("Event:", event.type, event.properties)
+}
+```
diff --git a/packages/web/src/content/docs/bs/server.mdx b/packages/web/src/content/docs/bs/server.mdx
new file mode 100644
index 000000000..c2a106de9
--- /dev/null
+++ b/packages/web/src/content/docs/bs/server.mdx
@@ -0,0 +1,284 @@
+---
+title: Server
+description: Komunicirajte s opencode serverom preko HTTP-a.
+---
+
+import config from "../../../../config.mjs"
+export const typesUrl = `${config.github}/blob/dev/packages/sdk/js/src/gen/types.gen.ts`
+
+Komanda `opencode serve` pokrece headless HTTP server koji izlaže OpenAPI endpoint koji opencode klijent moze koristiti.
+
+---
+
+### Usage
+
+```bash
+opencode serve [--port ] [--hostname ] [--cors ]
+```
+
+#### Options
+
+| Zastava | Opis | Default |
+| --------------- | ----------------------------------- | ---------------- |
+| `--port` | Port na kojem slusa | `4096` |
+| `--hostname` | Hostname na kojem slusa | `127.0.0.1` |
+| `--mdns` | Ukljuci mDNS otkrivanje | `false` |
+| `--mdns-domain` | Prilagodeni domen za mDNS servis | `opencode.local` |
+| `--cors` | Dodatni browser origin-i koje dozv. | `[]` |
+
+`--cors` mozete navesti vise puta:
+
+```bash
+opencode serve --cors http://localhost:5173 --cors https://app.example.com
+```
+
+---
+
+### Authentication
+
+Postavite `OPENCODE_SERVER_PASSWORD` da zastitite server HTTP basic auth mehanizmom. Korisnicko ime je po defaultu `opencode`, ili postavite `OPENCODE_SERVER_USERNAME` za nadjacavanje. Ovo vazi i za `opencode serve` i za `opencode web`.
+
+```bash
+OPENCODE_SERVER_PASSWORD=your-password opencode serve
+```
+
+---
+
+### How it works
+
+Kada pokrenete `opencode`, pokrecu se TUI i server. TUI je klijent koji komunicira sa serverom. Server izlaže OpenAPI 3.1 spec endpoint koji se koristi i za generisanje [SDK-a](/docs/sdk).
+
+:::tip
+Koristite opencode server za programsku interakciju sa opencode-om.
+:::
+
+Ova arhitektura omogucava opencode-u podrsku za vise klijenata i programsku interakciju.
+
+Mozete pokrenuti `opencode serve` da startate standalone server. Ako je opencode TUI vec pokrenut, `opencode serve` ce pokrenuti novi server.
+
+---
+
+#### Connect to an existing server
+
+Kada pokrenete TUI, port i hostname se nasumicno dodijele. Umjesto toga, mozete zadati `--hostname` i `--port` [zastave](/docs/cli), pa se povezati na taj server.
+
+Endpoint [`/tui`](#tui) mozete koristiti za upravljanje TUI-jem kroz server. Na primjer, mozete unaprijed popuniti ili pokrenuti prompt. Ovaj setup koriste OpenCode [IDE](/docs/ide) pluginovi.
+
+---
+
+## Spec
+
+Server objavljuje OpenAPI 3.1 specifikaciju koju mozete vidjeti na:
+
+```
+http://:/doc
+```
+
+Na primjer, `http://localhost:4096/doc`. Koristite specifikaciju da generisete klijente ili pregledate tipove zahtjeva i odgovora. Mozete je otvoriti i u Swagger exploreru.
+
+---
+
+## APIs
+
+opencode server izlaže sljedece API-je.
+
+---
+
+### Global
+
+| Method | Path | Description | Response |
+| ------ | ---------------- | ------------------------------ | ------------------------------------ |
+| `GET` | `/global/health` | Get server health and version | `{ healthy: true, version: string }` |
+| `GET` | `/global/event` | Get global events (SSE stream) | Event stream |
+
+---
+
+### Project
+
+| Method | Path | Description | Response |
+| ------ | ------------------ | ----------------------- | --------------------------------------------- |
+| `GET` | `/project` | List all projects | Project[] |
+| `GET` | `/project/current` | Get the current project | Project |
+
+---
+
+### Path & VCS
+
+| Method | Path | Description | Response |
+| ------ | ------- | ------------------------------------ | ------------------------------------------- |
+| `GET` | `/path` | Get the current path | Path |
+| `GET` | `/vcs` | Get VCS info for the current project | VcsInfo |
+
+---
+
+### Instance
+
+| Method | Path | Description | Response |
+| ------ | ------------------- | ---------------------------- | --------- |
+| `POST` | `/instance/dispose` | Dispose the current instance | `boolean` |
+
+---
+
+### Config
+
+| Method | Path | Description | Response |
+| ------- | ------------------- | --------------------------------- | ---------------------------------------------------------------------------------------- |
+| `GET` | `/config` | Get config info | Config |
+| `PATCH` | `/config` | Update config | Config |
+| `GET` | `/config/providers` | List providers and default models | `{ providers: `Provider[]`, default: { [key: string]: string } }` |
+
+---
+
+### Provider
+
+| Method | Path | Description | Response |
+| ------ | -------------------------------- | ------------------------------------ | ----------------------------------------------------------------------------------- |
+| `GET` | `/provider` | List all providers | `{ all: `Provider[]`, default: {...}, connected: string[] }` |
+| `GET` | `/provider/auth` | Get provider authentication methods | `{ [providerID: string]: `ProviderAuthMethod[]` }` |
+| `POST` | `/provider/{id}/oauth/authorize` | Authorize a provider using OAuth | ProviderAuthAuthorization |
+| `POST` | `/provider/{id}/oauth/callback` | Handle OAuth callback for a provider | `boolean` |
+
+---
+
+### Sessions
+
+| Method | Path | Description | Notes |
+| -------- | ---------------------------------------- | ------------------------------------- | ---------------------------------------------------------------------------------- |
+| `GET` | `/session` | List all sessions | Returns Session[] |
+| `POST` | `/session` | Create a new session | body: `{ parentID?, title? }`, returns Session |
+| `GET` | `/session/status` | Get session status for all sessions | Returns `{ [sessionID: string]: `SessionStatus` }` |
+| `GET` | `/session/:id` | Get session details | Returns Session |
+| `DELETE` | `/session/:id` | Delete a session and all its data | Returns `boolean` |
+| `PATCH` | `/session/:id` | Update session properties | body: `{ title? }`, returns Session |
+| `GET` | `/session/:id/children` | Get a session's child sessions | Returns Session[] |
+| `GET` | `/session/:id/todo` | Get the todo list for a session | Returns Todo[] |
+| `POST` | `/session/:id/init` | Analyze app and create `AGENTS.md` | body: `{ messageID, providerID, modelID }`, returns `boolean` |
+| `POST` | `/session/:id/fork` | Fork an existing session at a message | body: `{ messageID? }`, returns Session |
+| `POST` | `/session/:id/abort` | Abort a running session | Returns `boolean` |
+| `POST` | `/session/:id/share` | Share a session | Returns Session |
+| `DELETE` | `/session/:id/share` | Unshare a session | Returns Session |
+| `GET` | `/session/:id/diff` | Get the diff for this session | query: `messageID?`, returns FileDiff[] |
+| `POST` | `/session/:id/summarize` | Summarize the session | body: `{ providerID, modelID }`, returns `boolean` |
+| `POST` | `/session/:id/revert` | Revert a message | body: `{ messageID, partID? }`, returns `boolean` |
+| `POST` | `/session/:id/unrevert` | Restore all reverted messages | Returns `boolean` |
+| `POST` | `/session/:id/permissions/:permissionID` | Respond to a permission request | body: `{ response, remember? }`, returns `boolean` |
+
+---
+
+### Messages
+
+| Method | Path | Description | Notes |
+| ------ | --------------------------------- | --------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `GET` | `/session/:id/message` | List messages in a session | query: `limit?`, returns `{ info: `Message`, parts: `Part[]`}[]` |
+| `POST` | `/session/:id/message` | Send a message and wait for response | body: `{ messageID?, model?, agent?, noReply?, system?, tools?, parts }`, returns `{ info: `Message`, parts: `Part[]`}` |
+| `GET` | `/session/:id/message/:messageID` | Get message details | Returns `{ info: `Message`, parts: `Part[]`}` |
+| `POST` | `/session/:id/prompt_async` | Send a message asynchronously (no wait) | body: same as `/session/:id/message`, returns `204 No Content` |
+| `POST` | `/session/:id/command` | Execute a slash command | body: `{ messageID?, agent?, model?, command, arguments }`, returns `{ info: `Message`, parts: `Part[]`}` |
+| `POST` | `/session/:id/shell` | Run a shell command | body: `{ agent, model?, command }`, returns `{ info: `Message`, parts: `Part[]`}` |
+
+---
+
+### Commands
+
+| Method | Path | Description | Response |
+| ------ | ---------- | ----------------- | --------------------------------------------- |
+| `GET` | `/command` | List all commands | Command[] |
+
+---
+
+### Files
+
+| Method | Path | Description | Response |
+| ------ | ------------------------ | ---------------------------------- | ------------------------------------------------------------------------------------------- |
+| `GET` | `/find?pattern=` | Search for text in files | Array of match objects with `path`, `lines`, `line_number`, `absolute_offset`, `submatches` |
+| `GET` | `/find/file?query=` | Find files and directories by name | `string[]` (paths) |
+| `GET` | `/find/symbol?query=` | Find workspace symbols | Symbol[] |
+| `GET` | `/file?path=` | List files and directories | FileNode[] |
+| `GET` | `/file/content?path=` | Read a file | FileContent |
+| `GET` | `/file/status` | Get status for tracked files | File[] |
+
+#### `/find/file` query parameters
+
+- `query` (required) — search string (fuzzy match)
+- `type` (optional) — limit results to `"file"` or `"directory"`
+- `directory` (optional) — override the project root for the search
+- `limit` (optional) — max results (1–200)
+- `dirs` (optional) — legacy flag (`"false"` returns only files)
+
+---
+
+### Tools (Experimental)
+
+| Method | Path | Description | Response |
+| ------ | ------------------------------------------- | ---------------------------------------- | -------------------------------------------- |
+| `GET` | `/experimental/tool/ids` | List all tool IDs | ToolIDs |
+| `GET` | `/experimental/tool?provider=
&model=` | List tools with JSON schemas for a model | ToolList |
+
+---
+
+### LSP, Formatters & MCP
+
+| Method | Path | Description | Response |
+| ------ | ------------ | -------------------------- | -------------------------------------------------------- |
+| `GET` | `/lsp` | Get LSP server status | LSPStatus[] |
+| `GET` | `/formatter` | Get formatter status | FormatterStatus[] |
+| `GET` | `/mcp` | Get MCP server status | `{ [name: string]: `MCPStatus` }` |
+| `POST` | `/mcp` | Add MCP server dynamically | body: `{ name, config }`, returns MCP status object |
+
+---
+
+### Agents
+
+| Method | Path | Description | Response |
+| ------ | -------- | ------------------------- | ------------------------------------------- |
+| `GET` | `/agent` | List all available agents | Agent[] |
+
+---
+
+### Logging
+
+| Method | Path | Description | Response |
+| ------ | ------ | ------------------------------------------------------------ | --------- |
+| `POST` | `/log` | Write log entry. Body: `{ service, level, message, extra? }` | `boolean` |
+
+---
+
+### TUI
+
+| Method | Path | Description | Response |
+| ------ | ----------------------- | ------------------------------------------- | ---------------------- |
+| `POST` | `/tui/append-prompt` | Append text to the prompt | `boolean` |
+| `POST` | `/tui/open-help` | Open the help dialog | `boolean` |
+| `POST` | `/tui/open-sessions` | Open the session selector | `boolean` |
+| `POST` | `/tui/open-themes` | Open the theme selector | `boolean` |
+| `POST` | `/tui/open-models` | Open the model selector | `boolean` |
+| `POST` | `/tui/submit-prompt` | Submit the current prompt | `boolean` |
+| `POST` | `/tui/clear-prompt` | Clear the prompt | `boolean` |
+| `POST` | `/tui/execute-command` | Execute a command (`{ command }`) | `boolean` |
+| `POST` | `/tui/show-toast` | Show toast (`{ title?, message, variant }`) | `boolean` |
+| `GET` | `/tui/control/next` | Wait for the next control request | Control request object |
+| `POST` | `/tui/control/response` | Respond to a control request (`{ body }`) | `boolean` |
+
+---
+
+### Auth
+
+| Method | Path | Description | Response |
+| ------ | ----------- | --------------------------------------------------------------- | --------- |
+| `PUT` | `/auth/:id` | Set authentication credentials. Body must match provider schema | `boolean` |
+
+---
+
+### Events
+
+| Method | Path | Description | Response |
+| ------ | -------- | ----------------------------------------------------------------------------- | ------------------------- |
+| `GET` | `/event` | Server-sent events stream. First event is `server.connected`, then bus events | Server-sent events stream |
+
+---
+
+### Docs
+
+| Method | Path | Description | Response |
+| ------ | ------ | ------------------------- | --------------------------- |
+| `GET` | `/doc` | OpenAPI 3.1 specification | HTML page with OpenAPI spec |
diff --git a/packages/web/src/content/docs/bs/share.mdx b/packages/web/src/content/docs/bs/share.mdx
new file mode 100644
index 000000000..43959d16b
--- /dev/null
+++ b/packages/web/src/content/docs/bs/share.mdx
@@ -0,0 +1,127 @@
+---
+title: Dijeljenje
+description: Dijelite OpenCode razgovore javnim linkovima.
+---
+
+OpenCode opcija dijeljenja vam omogucava da kreirate javne linkove za razgovore. Tako lakse saradujete s timom ili trazite pomoc od drugih.
+
+:::note
+Dijeljeni razgovori su javno dostupni svakome ko ima link.
+:::
+
+---
+
+## Kako radi
+
+Kada podijelite razgovor, OpenCode:
+
+1. Kreira jedinstveni javni URL za vasu sesiju
+2. Sinhronizuje historiju razgovora na nase servere
+3. Cini razgovor dostupnim preko linka za dijeljenje — `opncd.ai/s/`
+
+---
+
+## Sharing
+
+OpenCode podrzava tri nacina dijeljenja koji odreduju kako se razgovori dijele:
+
+---
+
+### Manual (default)
+
+Po defaultu, OpenCode koristi rucni nacin dijeljenja. Sesije se ne dijele automatski, ali ih mozete rucno podijeliti komandom `/share`:
+
+```
+/share
+```
+
+Ovo ce generisati jedinstveni URL i kopirati ga u clipboard.
+
+Da eksplicitno postavite rucni nacin u [config datoteci](/docs/config):
+
+```json title="opencode.json"
+{
+ "$schema": "https://opncd.ai/config.json",
+ "share": "manual"
+}
+```
+
+---
+
+### Auto-share
+
+Mozete ukljuciti automatsko dijeljenje za sve nove razgovore tako sto `share` postavite na `"auto"` u [config datoteci](/docs/config):
+
+```json title="opencode.json"
+{
+ "$schema": "https://opncd.ai/config.json",
+ "share": "auto"
+}
+```
+
+Kada je auto-share ukljucen, svaki novi razgovor se automatski dijeli i kreira se link.
+
+---
+
+### Disabled
+
+Dijeljenje mozete potpuno iskljuciti tako sto `share` postavite na `"disabled"` u [config datoteci](/docs/config):
+
+```json title="opencode.json"
+{
+ "$schema": "https://opncd.ai/config.json",
+ "share": "disabled"
+}
+```
+
+Da ovo vazi za cijeli tim u odredenom projektu, dodajte postavku u projektni `opencode.json` i commitujte u Git.
+
+---
+
+## Uklanjanje dijeljenja
+
+Da prestanete dijeliti razgovor i uklonite javni pristup:
+
+```
+/unshare
+```
+
+Ovo uklanja link za dijeljenje i brise podatke povezane s razgovorom.
+
+---
+
+## Privatnost
+
+Imajte na umu nekoliko stvari prije dijeljenja razgovora.
+
+---
+
+### Cuvanje podataka
+
+Dijeljeni razgovori ostaju dostupni dok ih eksplicitno ne uklonite iz dijeljenja. Ovo ukljucuje:
+
+- Kompletnu historiju razgovora
+- Sve poruke i odgovore
+- Metapodatke sesije
+
+---
+
+### Preporuke
+
+- Dijelite samo razgovore koji ne sadrze osjetljive informacije.
+- Pregledajte sadrzaj razgovora prije dijeljenja.
+- Uklonite dijeljenje kad saradnja zavrsi.
+- Izbjegavajte dijeljenje razgovora s vlasnickim kodom ili povjerljivim podacima.
+- Za osjetljive projekte potpuno iskljucite dijeljenje.
+
+---
+
+## Za enterprise
+
+Za enterprise okruzenja, opcija dijeljenja moze biti:
+
+- **Iskljucena** u potpunosti radi sigurnosne uskladenosti
+- **Ogranicena** samo na korisnike autentifikovane kroz SSO
+- **Self-hosted** na vasoj infrastrukturi
+
+[Saznajte vise](/docs/enterprise) o koristenju opencode u organizaciji.
diff --git a/packages/web/src/content/docs/bs/skills.mdx b/packages/web/src/content/docs/bs/skills.mdx
new file mode 100644
index 000000000..ec144af74
--- /dev/null
+++ b/packages/web/src/content/docs/bs/skills.mdx
@@ -0,0 +1,222 @@
+---
+title: "Skills agenata"
+description: "Definisite ponasanje koje se moze ponovo koristiti"
+---
+
+Agent skills omogucavaju OpenCode-u da pronade uputstva koja se mogu ponovo koristiti iz repozitorija ili home direktorija.
+Skills se ucitavaju po potrebi kroz ugradeni `skill` alat - agenti vide dostupne skills i ucitavaju puni sadrzaj kad zatreba.
+
+---
+
+## Postavite datoteke
+
+Kreirajte jedan folder po nazivu skill-a i stavite `SKILL.md` unutar njega.
+OpenCode pretrazuje ove lokacije:
+
+- Konfiguracija projekta: `.opencode/skills//SKILL.md`
+- Globalna konfiguracija: `~/.config/opencode/skills//SKILL.md`
+- Claude kompatibilno u projektu: `.claude/skills//SKILL.md`
+- Globalno Claude kompatibilno: `~/.claude/skills//SKILL.md`
+- Agent kompatibilno u projektu: `.agents/skills//SKILL.md`
+- Globalno agent kompatibilno: `~/.agents/skills//SKILL.md`
+
+---
+
+## Razumijte otkrivanje
+
+Za projektne lokalne putanje, OpenCode ide prema gore od trenutnog radnog direktorija dok ne dode do git worktree-ja.
+Usput ucitava sve odgovarajuce `skills/*/SKILL.md` u `.opencode/` i odgovarajuce `.claude/skills/*/SKILL.md` ili `.agents/skills/*/SKILL.md`.
+
+Globalne definicije se takoder ucitavaju iz `~/.config/opencode/skills/*/SKILL.md`, `~/.claude/skills/*/SKILL.md` i `~/.agents/skills/*/SKILL.md`.
+
+---
+
+## Napisite frontmatter
+
+Svaki `SKILL.md` mora poceti YAML frontmatter-om.
+Prepoznaju se samo ova polja:
+
+- `name` (obavezno)
+- `description` (obavezno)
+- `license` (opcionalno)
+- `compatibility` (opcionalno)
+- `metadata` (opcionalno, mapa string->string)
+
+Nepoznata frontmatter polja se ignorisu.
+
+---
+
+## Validirajte nazive
+
+`name` mora:
+
+- Imati 1-64 karaktera
+- Biti malim slovima i brojevima sa jednim crticama kao razdvajacima
+- Ne pocinjati ni zavrsavati sa `-`
+- Ne sadrzavati uzastopno `--`
+- Odgovarati nazivu direktorija koji sadrzi `SKILL.md`
+
+Ekvivalentni regex:
+
+```text
+^[a-z0-9]+(-[a-z0-9]+)*$
+```
+
+---
+
+## Pratite pravila duzine
+
+`description` mora imati 1-1024 karaktera.
+Neka bude dovoljno precizan da agent moze pravilno odabrati.
+
+---
+
+## Koristite primjer
+
+Kreirajte `.opencode/skills/git-release/SKILL.md` ovako:
+
+```markdown
+---
+name: git-release
+description: Create consistent releases and changelogs
+license: MIT
+compatibility: opencode
+metadata:
+ audience: maintainers
+ workflow: github
+---
+
+## What I do
+
+- Draft release notes from merged PRs
+- Propose a version bump
+- Provide a copy-pasteable `gh release create` command
+
+## When to use me
+
+Use this when you are preparing a tagged release.
+Ask clarifying questions if the target versioning scheme is unclear.
+```
+
+---
+
+## Prepoznajte opis alata
+
+OpenCode navodi dostupne skills u opisu `skill` alata.
+Svaki unos sadrzi naziv i opis skill-a:
+
+```xml
+
+
+ git-release
+ Create consistent releases and changelogs
+
+
+```
+
+Agent ucitava skill pozivom alata:
+
+```
+skill({ name: "git-release" })
+```
+
+---
+
+## Konfigurisite dozvole
+
+Kontrolisite kojim skills agenti mogu pristupiti pomocu dozvola baziranih na obrascima u `opencode.json`:
+
+```json
+{
+ "permission": {
+ "skill": {
+ "*": "allow",
+ "pr-review": "allow",
+ "internal-*": "deny",
+ "experimental-*": "ask"
+ }
+ }
+}
+```
+
+| Dozvola | Ponasanje |
+| ------- | ------------------------------------------- |
+| `allow` | Skill se ucitava odmah |
+| `deny` | Skill je skriven od agenta, pristup odbijen |
+| `ask` | Korisnik mora odobriti prije ucitavanja |
+
+Obrasci podrzavaju wildcard znakove: `internal-*` poklapa `internal-docs`, `internal-tools` itd.
+
+---
+
+## Nadjacajte po agentu
+
+Dajte odredenim agentima drugacije dozvole od globalnih defaulta.
+
+**Za prilagodene agente** (u frontmatter-u agenta):
+
+```yaml
+---
+permission:
+ skill:
+ "documents-*": "allow"
+---
+```
+
+**Za ugradene agente** (u `opencode.json`):
+
+```json
+{
+ "agent": {
+ "plan": {
+ "permission": {
+ "skill": {
+ "internal-*": "allow"
+ }
+ }
+ }
+ }
+}
+```
+
+---
+
+## Iskljucite skill alat
+
+Potpuno iskljucite skills za agente koji ih ne bi trebali koristiti:
+
+**Za prilagodene agente**:
+
+```yaml
+---
+tools:
+ skill: false
+---
+```
+
+**Za ugradene agente**:
+
+```json
+{
+ "agent": {
+ "plan": {
+ "tools": {
+ "skill": false
+ }
+ }
+ }
+}
+```
+
+Kada je iskljuceno, sekcija `` se potpuno izostavlja.
+
+---
+
+## Rjesavanje problema s ucitavanjem
+
+Ako se skill ne pojavi:
+
+1. Provjerite da je naziv `SKILL.md` napisan velikim slovima
+2. Provjerite da frontmatter sadrzi `name` i `description`
+3. Potvrdite da su nazivi skill-ova jedinstveni na svim lokacijama
+4. Provjerite dozvole - skills sa `deny` su skriveni od agenata
diff --git a/packages/web/src/content/docs/bs/themes.mdx b/packages/web/src/content/docs/bs/themes.mdx
new file mode 100644
index 000000000..4508075bd
--- /dev/null
+++ b/packages/web/src/content/docs/bs/themes.mdx
@@ -0,0 +1,369 @@
+---
+title: Teme
+description: Izaberite ugradenu temu ili napravite svoju.
+---
+
+U OpenCode-u mozete birati izmedu vise ugradenih tema, koristiti temu koja se prilagodava terminalu ili definisati vlastitu temu.
+
+Po defaultu, OpenCode koristi nasu `opencode` temu.
+
+---
+
+## Zahtjevi terminala
+
+Da bi teme bile prikazane ispravno sa punom paletom boja, terminal mora podrzavati **truecolor** (24-bitne boje). Vecina modernih terminala to podrzava, ali nekad ga treba ukljuciti:
+
+- **Provjerite podrsku**: Pokrenite `echo $COLORTERM` - trebalo bi vratiti `truecolor` ili `24bit`
+- **Ukljucite truecolor**: Postavite varijablu okruzenja `COLORTERM=truecolor` u shell profilu
+- **Kompatibilnost terminala**: Potvrdite da emulator terminala podrzava 24-bitne boje (vecina modernih terminala kao iTerm2, Alacritty, Kitty, Windows Terminal i novije verzije GNOME Terminala)
+
+Bez truecolor podrske, teme mogu imati slabiju preciznost boja ili pasti na najblizu 256-color aproksimaciju.
+
+---
+
+## Ugradene teme
+
+OpenCode dolazi sa vise ugradenih tema.
+
+| Naziv | Opis |
+| ---------------------- | -------------------------------------------------------------------------- |
+| `system` | Prilagodava se boji pozadine vaseg terminala |
+| `tokyonight` | Bazirana na [Tokyonight](https://github.com/folke/tokyonight.nvim) temi |
+| `everforest` | Bazirana na [Everforest](https://github.com/sainnhe/everforest) temi |
+| `ayu` | Bazirana na [Ayu](https://github.com/ayu-theme) dark temi |
+| `catppuccin` | Bazirana na [Catppuccin](https://github.com/catppuccin) temi |
+| `catppuccin-macchiato` | Bazirana na [Catppuccin](https://github.com/catppuccin) temi |
+| `gruvbox` | Bazirana na [Gruvbox](https://github.com/morhetz/gruvbox) temi |
+| `kanagawa` | Bazirana na [Kanagawa](https://github.com/rebelot/kanagawa.nvim) temi |
+| `nord` | Bazirana na [Nord](https://github.com/nordtheme/nord) temi |
+| `matrix` | Hacker stil zelena-na-crnom tema |
+| `one-dark` | Bazirana na [Atom One](https://github.com/Th3Whit3Wolf/one-nvim) Dark temi |
+
+I jos mnogo njih, stalno dodajemo nove teme.
+
+---
+
+## System tema
+
+`system` tema je napravljena da se automatski prilagodi sem i boja vaseg terminala. Za razliku od tradicionalnih tema sa fiksnim bojama, _system_ tema:
+
+- **Generise sivu skalu**: Pravi prilagodenu sivu skalu na osnovu boje pozadine terminala za optimalan kontrast.
+- **Koristi ANSI boje**: Koristi standardne ANSI boje (0-15) za sintaksno isticanje i UI elemente, uz postovanje palete terminala.
+- **Cuva terminalske defaulte**: Koristi `none` za boju teksta i pozadine da zadrzi izvorni izgled terminala.
+
+System tema je za korisnike koji:
+
+- Zele da OpenCode odgovara izgledu njihovog terminala
+- Koriste prilagodene seme boja terminala
+- Preferiraju konzistentan izgled kroz sve terminalske aplikacije
+
+---
+
+## Koristenje teme
+
+Temu mozete izabrati preko selektora tema komandom `/theme`. Mozete je navesti i u [configu](/docs/config).
+
+```json title="opencode.json" {3}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "theme": "tokyonight"
+}
+```
+
+---
+
+## Prilagodene teme
+
+OpenCode podrzava fleksibilan sistem tema baziran na JSON-u koji olaksava kreiranje i prilagodavanje tema.
+
+---
+
+### Hijerarhija
+
+Teme se ucitavaju iz vise direktorija ovim redoslijedom, gdje kasniji direktoriji prepisuju ranije:
+
+1. **Ugradene teme** - Ugradene su u binarni fajl
+2. **Korisnicki config direktorij** - `~/.config/opencode/themes/*.json` ili `$XDG_CONFIG_HOME/opencode/themes/*.json`
+3. **Korijenski direktorij projekta** - `/.opencode/themes/*.json`
+4. **Trenutni radni direktorij** - `./.opencode/themes/*.json`
+
+Ako vise direktorija sadrzi temu istog naziva, koristit ce se tema iz direktorija s vecim prioritetom.
+
+---
+
+### Kreiranje teme
+
+Da kreirate prilagodenu temu, napravite JSON datoteku u jednom od direktorija za teme.
+
+Za korisnicke teme na nivou sistema:
+
+```bash no-frame
+mkdir -p ~/.config/opencode/themes
+vim ~/.config/opencode/themes/my-theme.json
+```
+
+I za teme specificne za projekat.
+
+```bash no-frame
+mkdir -p .opencode/themes
+vim .opencode/themes/my-theme.json
+```
+
+---
+
+### JSON format
+
+Teme koriste fleksibilan JSON format koji podrzava:
+
+- **Hex boje**: `"#ffffff"`
+- **ANSI boje**: `3` (0-255)
+- **Reference boja**: `"primary"` ili prilagodene definicije
+- **Dark/light varijante**: `{"dark": "#000", "light": "#fff"}`
+- **Bez boje**: `"none"` - koristi defaultnu boju terminala ili transparentno
+
+---
+
+### Definicije boja
+
+Sekcija `defs` je opcionalna i omogucava da definisete boje koje se mogu ponovo koristiti kroz temu.
+
+---
+
+### Terminalski defaulti
+
+Specijalna vrijednost `"none"` moze se koristiti za bilo koju boju da naslijedi defaultnu boju terminala. Ovo je korisno za teme koje se prirodno uklapaju u semu boja terminala:
+
+- `"text": "none"` - koristi defaultnu boju teksta terminala
+- `"background": "none"` - koristi defaultnu boju pozadine terminala
+
+---
+
+### Example
+
+Evo primjera prilagodene teme:
+
+```json title="my-theme.json"
+{
+ "$schema": "https://opencode.ai/theme.json",
+ "defs": {
+ "nord0": "#2E3440",
+ "nord1": "#3B4252",
+ "nord2": "#434C5E",
+ "nord3": "#4C566A",
+ "nord4": "#D8DEE9",
+ "nord5": "#E5E9F0",
+ "nord6": "#ECEFF4",
+ "nord7": "#8FBCBB",
+ "nord8": "#88C0D0",
+ "nord9": "#81A1C1",
+ "nord10": "#5E81AC",
+ "nord11": "#BF616A",
+ "nord12": "#D08770",
+ "nord13": "#EBCB8B",
+ "nord14": "#A3BE8C",
+ "nord15": "#B48EAD"
+ },
+ "theme": {
+ "primary": {
+ "dark": "nord8",
+ "light": "nord10"
+ },
+ "secondary": {
+ "dark": "nord9",
+ "light": "nord9"
+ },
+ "accent": {
+ "dark": "nord7",
+ "light": "nord7"
+ },
+ "error": {
+ "dark": "nord11",
+ "light": "nord11"
+ },
+ "warning": {
+ "dark": "nord12",
+ "light": "nord12"
+ },
+ "success": {
+ "dark": "nord14",
+ "light": "nord14"
+ },
+ "info": {
+ "dark": "nord8",
+ "light": "nord10"
+ },
+ "text": {
+ "dark": "nord4",
+ "light": "nord0"
+ },
+ "textMuted": {
+ "dark": "nord3",
+ "light": "nord1"
+ },
+ "background": {
+ "dark": "nord0",
+ "light": "nord6"
+ },
+ "backgroundPanel": {
+ "dark": "nord1",
+ "light": "nord5"
+ },
+ "backgroundElement": {
+ "dark": "nord1",
+ "light": "nord4"
+ },
+ "border": {
+ "dark": "nord2",
+ "light": "nord3"
+ },
+ "borderActive": {
+ "dark": "nord3",
+ "light": "nord2"
+ },
+ "borderSubtle": {
+ "dark": "nord2",
+ "light": "nord3"
+ },
+ "diffAdded": {
+ "dark": "nord14",
+ "light": "nord14"
+ },
+ "diffRemoved": {
+ "dark": "nord11",
+ "light": "nord11"
+ },
+ "diffContext": {
+ "dark": "nord3",
+ "light": "nord3"
+ },
+ "diffHunkHeader": {
+ "dark": "nord3",
+ "light": "nord3"
+ },
+ "diffHighlightAdded": {
+ "dark": "nord14",
+ "light": "nord14"
+ },
+ "diffHighlightRemoved": {
+ "dark": "nord11",
+ "light": "nord11"
+ },
+ "diffAddedBg": {
+ "dark": "#3B4252",
+ "light": "#E5E9F0"
+ },
+ "diffRemovedBg": {
+ "dark": "#3B4252",
+ "light": "#E5E9F0"
+ },
+ "diffContextBg": {
+ "dark": "nord1",
+ "light": "nord5"
+ },
+ "diffLineNumber": {
+ "dark": "nord2",
+ "light": "nord4"
+ },
+ "diffAddedLineNumberBg": {
+ "dark": "#3B4252",
+ "light": "#E5E9F0"
+ },
+ "diffRemovedLineNumberBg": {
+ "dark": "#3B4252",
+ "light": "#E5E9F0"
+ },
+ "markdownText": {
+ "dark": "nord4",
+ "light": "nord0"
+ },
+ "markdownHeading": {
+ "dark": "nord8",
+ "light": "nord10"
+ },
+ "markdownLink": {
+ "dark": "nord9",
+ "light": "nord9"
+ },
+ "markdownLinkText": {
+ "dark": "nord7",
+ "light": "nord7"
+ },
+ "markdownCode": {
+ "dark": "nord14",
+ "light": "nord14"
+ },
+ "markdownBlockQuote": {
+ "dark": "nord3",
+ "light": "nord3"
+ },
+ "markdownEmph": {
+ "dark": "nord12",
+ "light": "nord12"
+ },
+ "markdownStrong": {
+ "dark": "nord13",
+ "light": "nord13"
+ },
+ "markdownHorizontalRule": {
+ "dark": "nord3",
+ "light": "nord3"
+ },
+ "markdownListItem": {
+ "dark": "nord8",
+ "light": "nord10"
+ },
+ "markdownListEnumeration": {
+ "dark": "nord7",
+ "light": "nord7"
+ },
+ "markdownImage": {
+ "dark": "nord9",
+ "light": "nord9"
+ },
+ "markdownImageText": {
+ "dark": "nord7",
+ "light": "nord7"
+ },
+ "markdownCodeBlock": {
+ "dark": "nord4",
+ "light": "nord0"
+ },
+ "syntaxComment": {
+ "dark": "nord3",
+ "light": "nord3"
+ },
+ "syntaxKeyword": {
+ "dark": "nord9",
+ "light": "nord9"
+ },
+ "syntaxFunction": {
+ "dark": "nord8",
+ "light": "nord8"
+ },
+ "syntaxVariable": {
+ "dark": "nord7",
+ "light": "nord7"
+ },
+ "syntaxString": {
+ "dark": "nord14",
+ "light": "nord14"
+ },
+ "syntaxNumber": {
+ "dark": "nord15",
+ "light": "nord15"
+ },
+ "syntaxType": {
+ "dark": "nord7",
+ "light": "nord7"
+ },
+ "syntaxOperator": {
+ "dark": "nord9",
+ "light": "nord9"
+ },
+ "syntaxPunctuation": {
+ "dark": "nord4",
+ "light": "nord0"
+ }
+ }
+}
+```
diff --git a/packages/web/src/content/docs/bs/tools.mdx b/packages/web/src/content/docs/bs/tools.mdx
new file mode 100644
index 000000000..26a3fee97
--- /dev/null
+++ b/packages/web/src/content/docs/bs/tools.mdx
@@ -0,0 +1,379 @@
+---
+title: Alati
+description: Upravljajte alatima koje LLM moze koristiti.
+---
+
+Alati omogucavaju LLM-u da izvrsava akcije u vasem kodu. OpenCode dolazi sa skupom ugradenih alata, a mozete ga prosiriti kroz [custom tools](/docs/custom-tools) ili [MCP servers](/docs/mcp-servers).
+
+Po defaultu su svi alati **ukljuceni** i ne traze dozvolu za pokretanje. Ponasanje alata kontrolisete kroz [permissions](/docs/permissions).
+
+---
+
+## Configure
+
+Koristite polje `permission` za kontrolu ponasanja alata. Za svaki alat mozete postaviti allow, deny ili ask.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "edit": "deny",
+ "bash": "ask",
+ "webfetch": "allow"
+ }
+}
+```
+
+Mozete koristiti i wildcard obrasce da kontrolisete vise alata odjednom. Na primjer, da trazite odobrenje za sve alate jednog MCP servera:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "mymcp_*": "ask"
+ }
+}
+```
+
+[Saznajte vise](/docs/permissions) o konfigurisanju dozvola.
+
+---
+
+## Built-in
+
+Ovo su svi ugradeni alati dostupni u OpenCode-u.
+
+---
+
+### bash
+
+Izvrsava shell komande u okruzenju projekta.
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "bash": "allow"
+ }
+}
+```
+
+Ovaj alat omogucava LLM-u da pokrece terminalske komande kao `npm install`, `git status` i druge shell komande.
+
+---
+
+### edit
+
+Mijenja postojece datoteke tacnim zamjenama stringova.
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "edit": "allow"
+ }
+}
+```
+
+Ovaj alat radi precizne izmjene datoteka zamjenom tacnih poklapanja teksta. To je glavni nacin na koji LLM mijenja kod.
+
+---
+
+### write
+
+Kreira nove datoteke ili prepisuje postojece.
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "edit": "allow"
+ }
+}
+```
+
+Koristite ovo da dozvolite LLM-u kreiranje novih datoteka. Ako datoteka vec postoji, bit ce prepisana.
+
+:::note
+`write` alat kontrolise `edit` dozvola, koja pokriva sve izmjene datoteka (`edit`, `write`, `patch`, `multiedit`).
+:::
+
+---
+
+### read
+
+Cita sadrzaj datoteka iz vaseg koda.
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "read": "allow"
+ }
+}
+```
+
+Ovaj alat cita datoteke i vraca njihov sadrzaj. Podrzava citanje odredenih raspona linija kod velikih fajlova.
+
+---
+
+### grep
+
+Pretrazuje sadrzaj datoteka pomocu regularnih izraza.
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "grep": "allow"
+ }
+}
+```
+
+Brza pretraga sadrzaja kroz cijeli kod. Podrzava puni regex i filtriranje po obrascima datoteka.
+
+---
+
+### glob
+
+Pronalazi datoteke po obrascima.
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "glob": "allow"
+ }
+}
+```
+
+Trazi datoteke koristeci glob obrasce kao `**/*.js` ili `src/**/*.ts`. Vraca putanje sortirane po vremenu izmjene.
+
+---
+
+### list
+
+Ispisuje datoteke i direktorije na zadanoj putanji.
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "list": "allow"
+ }
+}
+```
+
+Ovaj alat ispisuje sadrzaj direktorija. Prihvata glob obrasce za filtriranje rezultata.
+
+---
+
+### lsp (experimental)
+
+Komunicira sa konfigurisanim LSP serverima za funkcije inteligencije koda kao definicije, reference, hover info i hijerarhija poziva.
+
+:::note
+Ovaj alat je dostupan samo kada je `OPENCODE_EXPERIMENTAL_LSP_TOOL=true` (ili `OPENCODE_EXPERIMENTAL=true`).
+:::
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "lsp": "allow"
+ }
+}
+```
+
+Podrzane operacije ukljucuju `goToDefinition`, `findReferences`, `hover`, `documentSymbol`, `workspaceSymbol`, `goToImplementation`, `prepareCallHierarchy`, `incomingCalls` i `outgoingCalls`.
+
+Za konfiguraciju dostupnih LSP servera u projektu, pogledajte [LSP Servers](/docs/lsp).
+
+---
+
+### patch
+
+Primjenjuje zakrpe na datoteke.
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "edit": "allow"
+ }
+}
+```
+
+Ovaj alat primjenjuje patch datoteke na kod. Koristan je za diffs i patch-eve iz razlicitih izvora.
+
+:::note
+`patch` alat kontrolise `edit` dozvola, koja pokriva sve izmjene datoteka (`edit`, `write`, `patch`, `multiedit`).
+:::
+
+---
+
+### skill
+
+Ucitajte [skill](/docs/skills) (`SKILL.md` datoteku) i vratite njegov sadrzaj u razgovor.
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "skill": "allow"
+ }
+}
+```
+
+---
+
+### todowrite
+
+Upravlja todo listama tokom coding sesija.
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "todowrite": "allow"
+ }
+}
+```
+
+Kreira i azurira liste zadataka za pracenje napretka tokom slozenih operacija. LLM ovo koristi za organizaciju zadataka u vise koraka.
+
+:::note
+Ovaj alat je po defaultu iskljucen za subagente, ali ga mozete rucno ukljuciti. [Saznajte vise](/docs/agents/#permissions)
+:::
+
+---
+
+### todoread
+
+Cita postojece todo liste.
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "todoread": "allow"
+ }
+}
+```
+
+Cita trenutno stanje todo liste. LLM ga koristi da prati sta je na cekanju i sta je zavrseno.
+
+:::note
+Ovaj alat je po defaultu iskljucen za subagente, ali ga mozete rucno ukljuciti. [Saznajte vise](/docs/agents/#permissions)
+:::
+
+---
+
+### webfetch
+
+Preuzima web sadrzaj.
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "webfetch": "allow"
+ }
+}
+```
+
+Omogucava LLM-u da preuzima i cita web stranice. Korisno za dokumentaciju i online istrazivanje.
+
+---
+
+### websearch
+
+Pretrazuje web za informacije.
+
+:::note
+Ovaj alat je dostupan samo uz OpenCode provajdera ili kada je varijabla `OPENCODE_ENABLE_EXA` postavljena na truthy vrijednost (npr. `true` ili `1`).
+
+Da ukljucite pri pokretanju OpenCode-a:
+
+```bash
+OPENCODE_ENABLE_EXA=1 opencode
+```
+
+:::
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "websearch": "allow"
+ }
+}
+```
+
+Vrsi web pretrage preko Exa AI da pronade relevantne informacije online. Korisno za istrazivanje tema, aktuelnosti i podataka van granice trening skupa.
+
+API kljuc nije potreban - alat se direktno povezuje na Exa AI hosted MCP servis bez autentifikacije.
+
+:::tip
+Koristite `websearch` kada trebate pronaci informacije (discovery), a `webfetch` kada trebate preuzeti sadrzaj sa konkretnog URL-a (retrieval).
+:::
+
+---
+
+### question
+
+Postavlja korisniku pitanja tokom izvrsavanja.
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "question": "allow"
+ }
+}
+```
+
+Ovaj alat omogucava LLM-u da postavlja pitanja korisniku tokom zadatka. Koristan je za:
+
+- Prikupljanje korisnickih preferencija i zahtjeva
+- Razjasnjavanje nejasnih uputstava
+- Donosenje odluka oko implementacije
+- Nudjenje izbora o smjeru rada
+
+Svako pitanje ukljucuje naslov, tekst pitanja i listu opcija. Korisnici mogu izabrati ponudenu opciju ili upisati vlastiti odgovor. Kada ima vise pitanja, mogu se kretati izmedu njih prije slanja svih odgovora.
+
+---
+
+## Custom tools
+
+Custom tools vam omogucavaju da definisete vlastite funkcije koje LLM moze pozivati. Definisu se u config datoteci i mogu izvrsavati proizvoljan kod.
+
+[Saznajte vise](/docs/custom-tools) o kreiranju custom tools.
+
+---
+
+## MCP servers
+
+MCP (Model Context Protocol) serveri omogucavaju integraciju eksternih alata i servisa. Ovo ukljucuje pristup bazama, API integracije i third-party servise.
+
+[Saznajte vise](/docs/mcp-servers) o konfigurisanju MCP servera.
+
+---
+
+## Internals
+
+Interno, alati kao `grep`, `glob` i `list` koriste [ripgrep](https://github.com/BurntSushi/ripgrep). Po defaultu, ripgrep postuje `.gitignore` obrasce, pa se fajlovi i direktoriji iz `.gitignore` izostavljaju iz pretraga i listinga.
+
+---
+
+### Ignore patterns
+
+Da ukljucite fajlove koji bi inace bili ignorisani, kreirajte `.ignore` datoteku u korijenu projekta. Ova datoteka moze eksplicitno dozvoliti odredene putanje.
+
+```text title=".ignore"
+!node_modules/
+!dist/
+!build/
+```
+
+Na primjer, ova `.ignore` datoteka dozvoljava ripgrep-u da pretrazuje `node_modules/`, `dist/` i `build/` direktorije i kada su navedeni u `.gitignore`.
diff --git a/packages/web/src/content/docs/bs/troubleshooting.mdx b/packages/web/src/content/docs/bs/troubleshooting.mdx
new file mode 100644
index 000000000..69ae66368
--- /dev/null
+++ b/packages/web/src/content/docs/bs/troubleshooting.mdx
@@ -0,0 +1,308 @@
+---
+title: Rješavanje problema
+description: Uobičajeni problemi i kako ih riješiti.
+---
+
+Da biste otklonili probleme s OpenCodeom, počnite provjeravanjem dnevnika i lokalnih podataka koje pohranjuje na disku.
+
+---
+
+## Dnevnici
+
+Log fajlovi se pišu na:
+
+- **macOS/Linux**: `~/.local/share/opencode/log/`
+- **Windows**: Pritisnite `WIN+R` i zalijepite `%USERPROFILE%\.local\share\opencode\log`
+
+Datoteke evidencije se imenuju vremenskim oznakama (npr. `2025-01-09T123456.log`) i čuvaju se najnovijih 10 datoteka dnevnika.
+
+Možete postaviti nivo dnevnika pomoću opcije komandne linije `--log-level` da biste dobili detaljnije informacije o otklanjanju grešaka. Na primjer, `opencode --log-level DEBUG`.
+
+---
+
+## Skladištenje
+
+opencode pohranjuje podatke o sesiji i druge podatke aplikacije na disku na:
+
+- **macOS/Linux**: `~/.local/share/opencode/`
+- **Windows**: Pritisnite `WIN+R` i zalijepite `%USERPROFILE%\.local\share\opencode`
+
+Ovaj direktorij sadrži:
+
+- `auth.json` - Podaci o autentifikaciji kao što su API ključevi, OAuth tokeni
+- `log/` - Dnevnici aplikacije
+- `project/` - Podaci specifični za projekat kao što su podaci o sesiji i poruci
+ - Ako je projekat unutar Git repo-a, on je pohranjen u `.//storage/`
+ - Ako nije Git repo, pohranjuje se u `./global/storage/`
+
+---
+
+## Desktop aplikacija
+
+OpenCode Desktop pokreće lokalni OpenCode server (`opencode-cli` sidecar) u pozadini. Većina problema je uzrokovana nedostatkom dodatka, oštećenom keš memorijom ili lošim postavkama servera.
+
+### Brze provjere
+
+- Potpuno zatvorite i ponovo pokrenite aplikaciju.
+- Ako aplikacija prikaže ekran s greškom, kliknite na **Restart** i kopirajte detalje o grešci.
+- samo za macOS: `OpenCode` meni -> **Ponovo učitaj Webview** (pomaže ako je korisnički interfejs prazan/zamrznut).
+
+---
+
+### Onemogući dodatke
+
+Ako se desktop aplikacija ruši pri pokretanju, visi ili se čudno ponaša, počnite s onemogućavanjem dodataka.
+
+#### Provjerite globalnu konfiguraciju
+
+Otvorite svoju globalnu konfiguracijsku datoteku i potražite ključ `plugin`.
+
+- **macOS/Linux**: `~/.config/opencode/opencode.jsonc` (ili `~/.config/opencode/opencode.json`)
+- **macOS/Linux** (starije instalacije): `~/.local/share/opencode/opencode.jsonc`
+- **Windows**: Pritisnite `WIN+R` i zalijepite `%USERPROFILE%\.config\opencode\opencode.jsonc`
+
+Ako imate konfigurirane dodatke, privremeno ih onemogućite uklanjanjem ključa ili postavljanjem na prazan niz:
+
+```jsonc
+{
+ "$schema": "https://opencode.ai/config.json",
+ "plugin": [],
+}
+```
+
+#### Provjerite imenike dodataka
+
+OpenCode također može učitati lokalne dodatke s diska. Privremeno ih maknite s puta (ili preimenujte folder) i ponovo pokrenite desktop aplikaciju:
+
+- **Globalni dodaci**
+ - **macOS/Linux**: `~/.config/opencode/plugins/`
+ - **Windows**: Pritisnite `WIN+R` i zalijepite `%USERPROFILE%\.config\opencode\plugins`
+- **Projektni dodaci** (samo ako koristite konfiguraciju po projektu)
+ - `/.opencode/plugins/`
+
+Ako aplikacija ponovo počne raditi, ponovo omogućite dodatke jedan po jedan kako biste otkrili koji od njih uzrokuje problem.
+
+---
+
+### Očisti keš memoriju
+
+Ako onemogućavanje dodataka ne pomogne (ili se instalacija dodatka zaglavila), obrišite keš memoriju kako bi ga OpenCode mogao ponovo izgraditi.
+
+1. Potpuno zatvorite OpenCode Desktop.
+2. Izbrišite keš direktorij:
+
+- **macOS**: Finder -> `Cmd+Shift+G` -> zalijepi `~/.cache/opencode`
+- **Linux**: obrišite `~/.cache/opencode` (ili pokrenite `rm -rf ~/.cache/opencode`)
+- **Windows**: Pritisnite `WIN+R` i zalijepite `%USERPROFILE%\.cache\opencode`
+
+3. Ponovo pokrenite OpenCode Desktop.
+
+---
+
+### Popravite probleme sa vezom na serveru
+
+OpenCode Desktop može ili pokrenuti svoj lokalni server (podrazumevano) ili se povezati na URL servera koji ste konfigurisali.
+
+Ako vidite dijaloški okvir **"Povezivanje nije uspjelo"** (ili aplikacija nikada ne prođe kroz početni ekran), provjerite da li postoji prilagođeni URL servera.
+
+#### Obrišite zadani URL servera radne površine
+
+Na početnom ekranu kliknite na ime servera (sa tačkom statusa) da otvorite birač servera. U odjeljku **Podrazumevani server** kliknite na **Obriši**.
+
+#### Uklonite `server.port` / `server.hostname` iz vaše konfiguracije
+
+Ako vaš `opencode.json(c)` sadrži odjeljak `server`, privremeno ga uklonite i ponovo pokrenite desktop aplikaciju.
+
+#### Provjerite varijable okruženja
+
+Ako ste postavili `OPENCODE_PORT` u svom okruženju, desktop aplikacija će pokušati da koristi taj port za lokalni server.
+
+- Poništite `OPENCODE_PORT` (ili odaberite slobodan port) i ponovo pokrenite.
+
+---
+
+### Linux: Wayland / X11 problemi
+
+Na Linuxu, neka podešavanja Waylanda mogu uzrokovati prazne prozore ili greške sastavljača.
+
+- Ako ste na Waylandu, a aplikacija je prazna/ispada, pokušajte pokrenuti sa `OC_ALLOW_WAYLAND=1`.
+- Ako to pogorša stvari, uklonite ga i pokušajte pokrenuti pod X11 sesijom umjesto toga.
+
+---
+
+### Windows: WebView2 runtime
+
+Na Windows-u, OpenCode Desktop zahtijeva Microsoft Edge **WebView2 Runtime**. Ako se aplikacija otvori u praznom prozoru ili se ne pokrene, instalirajte/ažurirajte WebView2 i pokušajte ponovo.
+
+---
+
+### Windows: Opšti problemi sa performansama
+
+Ako imate spore performanse, probleme s pristupom datotekama ili probleme s terminalom na Windows-u, pokušajte koristiti [WSL (Windows podsistem za Linux)](/docs/windows-wsl). WSL pruža Linux okruženje koje radi neprimetnije sa OpenCode-ovim karakteristikama.
+
+---
+
+### Obavještenja se ne prikazuju
+
+OpenCode Desktop prikazuje sistemska obavještenja samo kada:
+
+- obavještenja su omogućena za OpenCode u postavkama vašeg OS-a, i
+- prozor aplikacije nije fokusiran.
+
+---
+
+### Poništi pohranu desktop aplikacija (posljednje rješenje)
+
+Ako se aplikacija ne pokrene i ne možete izbrisati postavke unutar korisničkog sučelja, resetirajte spremljeno stanje desktop aplikacije.
+
+1. Zatvorite OpenCode Desktop.
+2. Pronađite i izbrišite ove datoteke (oni žive u direktoriju podataka OpenCode Desktop aplikacije):
+
+- `opencode.settings.dat` (URL zadanog servera za desktop)
+- `opencode.global.dat` i `opencode.workspace.*.dat` (stanje korisničkog interfejsa poput nedavnih servera/projekata)
+
+Da brzo pronađete direktorij:
+
+- **macOS**: Finder -> `Cmd+Shift+G` -> `~/Library/Application Support` (onda potražite nazive fajlova iznad)
+- **Linux**: potražite nazive fajlova iznad pod `~/.local/share`
+- **Windows**: Pritisnite `WIN+R` -> `%APPDATA%` (zatim potražite nazive fajlova iznad)
+
+---
+
+## Dobivanje pomoći
+
+Ako imate problema s OpenCodeom:
+
+1. **Prijavite probleme na GitHub**
+
+ Najbolji način da prijavite greške ili zatražite funkcije je putem našeg GitHub spremišta:
+
+ [**github.com/anomalyco/opencode/issues**](https://github.com/anomalyco/opencode/issues)
+
+ Prije kreiranja novog problema, pretražite postojeće probleme da vidite je li vaš problem već prijavljen.
+
+2. **Pridružite se našem Discordu**
+
+ Za pomoć u stvarnom vremenu i diskusiju u zajednici, pridružite se našem Discord serveru:
+
+ [**opencode.ai/discord**](https://opencode.ai/discord)
+
+---
+
+## Uobičajeni problemi
+
+Evo nekih uobičajenih problema i kako ih riješiti.
+
+---
+
+### OpenCode se neće pokrenuti
+
+1. Provjerite dnevnike za poruke o greškama
+2. Pokušajte pokrenuti sa `--print-logs` da vidite izlaz u terminalu
+3. Uvjerite se da imate najnoviju verziju sa `opencode upgrade`
+
+---
+
+### Problemi s autentifikacijom
+
+1. Pokušajte ponovo autentifikovati sa naredbom `/connect` u TUI
+2. Provjerite da li su vaši API ključevi važeći
+3. Uvjerite se da vaša mreža dozvoljava veze s API-jem provajdera
+
+---
+
+### Model nije dostupan
+
+1. Provjerite jeste li se autentifikovali kod provajdera
+2. Provjerite je li naziv modela u vašoj konfiguraciji tačan
+3. Neki modeli mogu zahtijevati poseban pristup ili pretplate
+
+Ako naiđete na `ProviderModelNotFoundError` najvjerovatnije niste u pravu
+referenciranje modela negdje.
+Modele treba referencirati ovako: `/`
+
+primjeri:
+
+- `openai/gpt-4.1`
+- `openrouter/google/gemini-2.5-flash`
+- `opencode/kimi-k2`
+
+Da saznate kojim modelima imate pristup, pokrenite `opencode models`
+
+---
+
+### ProviderInitError
+
+Ako naiđete na grešku ProviderInitError, vjerovatno imate nevažeću ili oštećenu konfiguraciju.
+
+Da biste ovo riješili:
+
+1. Prvo provjerite da li je vaš provajder ispravno postavljen slijedeći [vodič za pružatelje](/docs/providers)
+2. Ako se problem nastavi, pokušajte obrisati pohranjenu konfiguraciju:
+
+
+
+```bash
+ rm -rf ~/.local/share/opencode
+
+
+```
+
+ Na Windows-u pritisnite `WIN+R` i izbrišite: `%USERPROFILE%\.local\share\opencode`
+
+3. Ponovo izvršite autentifikaciju kod svog provajdera koristeći naredbu `/connect` u TUI.
+
+---
+
+### AI_APICallError i problemi sa paketom dobavljača
+
+Ako naiđete na greške API poziva, to može biti zbog zastarjelih paketa dobavljača. opencode dinamički instalira pakete dobavljača (OpenAI, Anthropic, Google, itd.) po potrebi i kešira ih lokalno.
+
+Da biste riješili probleme s paketom dobavljača:
+
+1. Obrišite keš paketa provajdera:
+
+
+
+```bash
+ rm -rf ~/.cache/opencode
+
+
+```
+
+ Na Windows-u pritisnite `WIN+R` i izbrišite: `%USERPROFILE%\.cache\opencode`
+
+2. Ponovo pokrenite opencode da ponovo instalirate najnovije pakete dobavljača
+
+Ovo će prisiliti opencode da preuzme najnovije verzije paketa dobavljača, što često rješava probleme kompatibilnosti s parametrima modela i promjenama API-ja.
+
+---
+
+### Copy/paste ne radi na Linuxu
+
+Korisnici Linuxa moraju imati instaliran jedan od sljedećih uslužnih programa međuspremnika da bi funkcionirala funkcionalnost kopiranja/lijepljenja:
+
+**Za X11 sisteme:**
+
+```bash
+apt install -y xclip
+# or
+apt install -y xsel
+```
+
+**Za Wayland sisteme:**
+
+```bash
+apt install -y wl-clipboard
+```
+
+**Za okruženja bez glave:**
+
+```bash
+apt install -y xvfb
+# and run:
+Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
+export DISPLAY=:99.0
+```
+
+opencode će otkriti da li koristite Wayland i preferirate `wl-clipboard`, u suprotnom će pokušati pronaći alate međuspremnika po redoslijedu: `xclip` i `xsel`.
diff --git a/packages/web/src/content/docs/bs/tui.mdx b/packages/web/src/content/docs/bs/tui.mdx
new file mode 100644
index 000000000..2d6c2926b
--- /dev/null
+++ b/packages/web/src/content/docs/bs/tui.mdx
@@ -0,0 +1,402 @@
+---
+title: TUI
+description: Korištenje korisničkog interfejsa OpenCode terminala.
+---
+
+import { Tabs, TabItem } from "@astrojs/starlight/components"
+
+OpenCode pruža interaktivni terminalski interfejs ili TUI za rad na vašim projektima sa LLM.
+
+Pokretanje OpenCode-a pokreće TUI za trenutni direktorij.
+
+```bash
+opencode
+```
+
+Ili ga možete pokrenuti za određeni radni direktorij.
+
+```bash
+opencode /path/to/project
+```
+
+Kada uđete u TUI, možete to zatražiti porukom.
+
+```text
+Give me a quick summary of the codebase.
+```
+
+---
+
+## Reference fajlova
+
+Možete referencirati datoteke u svojim porukama koristeći `@`. Ovo vrši nejasnu pretragu datoteka u trenutnom radnom direktoriju.
+
+:::tip
+Također možete koristiti `@` da referencirate datoteke u svojim porukama.
+:::
+
+```text "@packages/functions/src/api/index.ts"
+How is auth handled in @packages/functions/src/api/index.ts?
+```
+
+Sadržaj datoteke se automatski dodaje u razgovor.
+
+---
+
+## Bash komande
+
+Započnite poruku sa `!` da pokrenete komandu ljuske.
+
+```bash frame="none"
+!ls -la
+```
+
+Izlaz naredbe se dodaje u razgovor kao rezultat alata.
+
+---
+
+## Komande
+
+Kada koristite OpenCode TUI, možete upisati `/` nakon čega slijedi ime komande da biste brzo izvršili radnje. na primjer:
+
+```bash frame="none"
+/help
+```
+
+Većina naredbi također ima vezu pomoću `ctrl+x` kao vodeće tipke, gdje je `ctrl+x` zadani vodeći ključ. [Saznajte više](/docs/keybinds).
+
+Ovdje su sve dostupne komande kose crte:
+
+---
+
+### connect
+
+Dodajte provajdera u OpenCode. Omogućava vam da odaberete između dostupnih provajdera i dodate njihove API ključeve.
+
+```bash frame="none"
+/connect
+```
+
+---
+
+### compact
+
+Sažimanje trenutne sesije. _Alias_: `/summarize`
+
+```bash frame="none"
+/compact
+```
+
+**Tastatura:** `ctrl+x c`
+
+---
+
+### details
+
+Prebacite detalje o izvršavanju alata.
+
+```bash frame="none"
+/details
+```
+
+**Tastatura:** `ctrl+x d`
+
+---
+
+### editor
+
+Otvorite vanjski uređivač za sastavljanje poruka. Koristi editor postavljen u vašoj varijabli okruženja `EDITOR`. [Saznajte više](#editor-setup).
+
+```bash frame="none"
+/editor
+```
+
+**Tastatura:** `ctrl+x e`
+
+---
+
+### exit
+
+Izađite iz OpenCode-a. _Aliases_: `/quit`, `/q`
+
+```bash frame="none"
+/exit
+```
+
+**Tastatura:** `ctrl+x q`
+
+---
+
+### export
+
+Izvezite trenutni razgovor u Markdown i otvorite ga u zadanom uređivaču. Koristi editor postavljen u vašoj varijabli okruženja `EDITOR`. [Saznajte više](#editor-setup).
+
+```bash frame="none"
+/export
+```
+
+**Tastatura:** `ctrl+x x`
+
+---
+
+### help
+
+Prikaži dijalog pomoći.
+
+```bash frame="none"
+/help
+```
+
+**Tastatura:** `ctrl+x h`
+
+---
+
+### init
+
+Kreirajte ili ažurirajte datoteku `AGENTS.md`. [Saznajte više](/docs/rules).
+
+```bash frame="none"
+/init
+```
+
+**Tastatura:** `ctrl+x i`
+
+---
+
+### models
+
+Navedite dostupne modele.
+
+```bash frame="none"
+/models
+```
+
+**Tastatura:** `ctrl+x m`
+
+---
+
+### new
+
+Započnite novu sesiju. _Alias_: `/clear`
+
+```bash frame="none"
+/new
+```
+
+**Tastatura:** `ctrl+x n`
+
+---
+
+### redo
+
+Ponovite prethodno poništenu poruku. Dostupno samo nakon korištenja `/undo`.
+
+:::tip
+Sve promjene fajla će također biti vraćene.
+:::
+
+Interno, ovo koristi Git za upravljanje promjenama datoteke. Dakle, vaš projekat **treba
+biti Git spremište**.
+
+```bash frame="none"
+/redo
+```
+
+**Tastatura:** `ctrl+x r`
+
+---
+
+### sessions
+
+Listanje i prebacivanje između sesija. _Aliases_: `/resume`, `/continue`
+
+```bash frame="none"
+/sessions
+```
+
+**Tastatura:** `ctrl+x l`
+
+---
+
+### share
+
+Podijelite trenutnu sesiju. [Saznajte više](/docs/share).
+
+```bash frame="none"
+/share
+```
+
+**Tastatura:** `ctrl+x s`
+
+---
+
+### themes
+
+Navedite dostupne teme.
+
+```bash frame="none"
+/theme
+```
+
+**Tastatura:** `ctrl+x t`
+
+---
+
+### thinking
+
+Uključite/isključite vidljivost blokova razmišljanja/rezoniranja u razgovoru. Kada je omogućeno, možete vidjeti proces rezonovanja modela za modele koji podržavaju prošireno razmišljanje.
+
+:::note
+Ova naredba samo kontrolira da li se blokovi razmišljanja **prikažu** - ne omogućava niti onemogućuje mogućnosti razmišljanja modela. Da biste uključili stvarne mogućnosti zaključivanja, koristite `ctrl+t` za kretanje kroz varijante modela.
+:::
+
+```bash frame="none"
+/thinking
+```
+
+---
+
+### undo
+
+Poništi posljednju poruku u razgovoru. Uklanja najnoviju korisničku poruku, sve naknadne odgovore i sve promjene datoteke.
+
+:::tip
+Sve promjene u fajlu će također biti poništene.
+:::
+
+Interno, ovo koristi Git za upravljanje promjenama datoteke. Dakle, vaš projekat **treba
+biti Git spremište**.
+
+```bash frame="none"
+/undo
+```
+
+**Tastatura:** `ctrl+x u`
+
+---
+
+### unshare
+
+Poništi dijeljenje trenutne sesije. [Saznajte više](/docs/share#un-sharing).
+
+```bash frame="none"
+/unshare
+```
+
+---
+
+## Podešavanje uređivača
+
+Obje naredbe `/editor` i `/export` koriste editor specificiran u vašoj varijabli okruženja `EDITOR`.
+
+
+
+
+
+```bash
+ # Example for nano or vim
+ export EDITOR=nano
+ export EDITOR=vim
+
+ # For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
+ # include --wait
+ export EDITOR="code --wait"
+
+
+```
+
+ Da biste ga učinili trajnim, dodajte ovo u svoj shell profil;
+ `~/.bashrc`, `~/.zshrc`, itd.
+
+
+
+
+
+
+```bash
+ set EDITOR=notepad
+
+ # For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
+ # include --wait
+ set EDITOR=code --wait
+
+
+```
+
+ Da biste ga učinili trajnim, koristite **Svojstva sistema** > **Okruženje
+ Varijable**.
+
+
+
+
+
+
+```powershell
+ $env:EDITOR = "notepad"
+
+ # For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
+ # include --wait
+ $env:EDITOR = "code --wait"
+
+
+```
+
+ Da biste ga učinili trajnim, dodajte ovo u svoj PowerShell profil.
+
+
+
+
+Popularne opcije uređivača uključuju:
+
+- `code` - Visual Studio Code
+- `cursor` - Kursor
+- `windsurf` - jedrenje na dasci
+- `nvim` - Neovim editorom
+- `vim` - Vim editor
+- `nano` - Nano editor
+- `notepad` - Windows Notepad
+- `subl` - Uzvišeni tekst
+
+:::note
+Neki uređivači kao što je VS Code moraju biti pokrenuti sa `--wait` zastavicom.
+:::
+
+Nekim uređivačima su potrebni argumenti komandne linije da bi se pokrenuli u načinu blokiranja. Oznaka `--wait` blokira proces uređivača dok se ne zatvori.
+
+---
+
+## Konfiguriši
+
+Možete prilagoditi TUI ponašanje putem vašeg OpenCode konfiguracionog fajla.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "tui": {
+ "scroll_speed": 3,
+ "scroll_acceleration": {
+ "enabled": true
+ }
+ }
+}
+```
+
+### Opcije
+
+- `scroll_acceleration` - Omogućite ubrzanje pomicanja u macOS stilu za glatko, prirodno pomicanje. Kada je omogućeno, brzina pomicanja se povećava brzim pokretima pomicanja i ostaje precizna za sporije pokrete. **Ova postavka ima prednost nad `scroll_speed` i nadjačava je kada je omogućena.**
+- `scroll_speed` - Kontrolira koliko brzo TUI skroluje kada se koriste komande za pomeranje (minimalno: `1`). Podrazumevano je `3`. **Napomena: Ovo se zanemaruje ako je `scroll_acceleration.enabled` postavljeno na `true`.**
+
+---
+
+## Prilagođavanje
+
+Možete prilagoditi različite aspekte TUI prikaza koristeći paletu komandi (`ctrl+x h` ili `/help`). Ove postavke traju i nakon ponovnog pokretanja.
+
+---
+
+#### Prikaz korisničkog imena
+
+Uključite da li se vaše korisničko ime pojavljuje u porukama za ćaskanje. Pristupite ovome putem:
+
+- Paleta naredbi: Potražite "korisničko ime" ili "sakrij korisničko ime"
+- Postavka se automatski nastavlja i pamtit će se tijekom TUI sesija
diff --git a/packages/web/src/content/docs/bs/web.mdx b/packages/web/src/content/docs/bs/web.mdx
new file mode 100644
index 000000000..6da5da4f3
--- /dev/null
+++ b/packages/web/src/content/docs/bs/web.mdx
@@ -0,0 +1,142 @@
+---
+title: Web
+description: Korišćenje OpenCode-a u vašem pretraživaču.
+---
+
+OpenCode može raditi kao web aplikacija u vašem pretraživaču, pružajući isto moćno iskustvo AI kodiranja bez potrebe za terminalom.
+
+
+
+## Početak rada
+
+Pokrenite web interfejs tako što ćete pokrenuti:
+
+```bash
+opencode web
+```
+
+Ovo pokreće lokalni server na `127.0.0.1` sa nasumičnim dostupnim portom i automatski otvara OpenCode u vašem podrazumevanom pretraživaču.
+
+:::caution
+Ako `OPENCODE_SERVER_PASSWORD` nije postavljen, server će biti nezaštićen. Ovo je u redu za lokalnu upotrebu, ali bi trebalo biti postavljeno za pristup mreži.
+:::
+
+:::tip[Windows Users]
+Za najbolje iskustvo, pokrenite `opencode web` iz [WSL](/docs/windows-wsl) umjesto PowerShell-a. Ovo osigurava pravilan pristup sistemu datoteka i integraciju terminala.
+:::
+
+---
+
+## Konfiguracija
+
+Možete konfigurirati web server koristeći oznake komandne linije ili u vašoj [config file](/docs/config).
+
+### Port
+
+OpenCode podrazumevano bira dostupni port. Možete odrediti port:
+
+```bash
+opencode web --port 4096
+```
+
+### Ime hosta
+
+Podrazumevano, server se vezuje za `127.0.0.1` (samo lokalni host). Da biste OpenCode učinili dostupnim na vašoj mreži:
+
+```bash
+opencode web --hostname 0.0.0.0
+```
+
+Kada koristite `0.0.0.0`, OpenCode će prikazati i lokalne i mrežne adrese:
+
+```
+ Local access: http://localhost:4096
+ Network access: http://192.168.1.100:4096
+```
+
+### mDNS Discovery
+
+Omogućite mDNS kako bi vaš server bio vidljiv na lokalnoj mreži:
+
+```bash
+opencode web --mdns
+```
+
+Ovo automatski postavlja ime hosta na `0.0.0.0` i oglašava server kao `opencode.local`.
+
+Možete prilagoditi ime mDNS domene za pokretanje više instanci na istoj mreži:
+
+```bash
+opencode web --mdns --mdns-domain myproject.local
+```
+
+### CORS
+
+Da biste omogućili dodatne domene za CORS (korisno za prilagođene frontendove):
+
+```bash
+opencode web --cors https://example.com
+```
+
+### Autentifikacija
+
+Da biste zaštitili pristup, postavite lozinku koristeći varijablu okruženja `OPENCODE_SERVER_PASSWORD`:
+
+```bash
+OPENCODE_SERVER_PASSWORD=secret opencode web
+```
+
+Korisničko ime podrazumevano je `opencode`, ali se može promeniti sa `OPENCODE_SERVER_USERNAME`.
+
+---
+
+## Korištenje web sučelja
+
+Jednom pokrenut, web sučelje pruža pristup vašim OpenCode sesijama.
+
+### Sesije
+
+Pregledajte i upravljajte svojim sesijama sa početne stranice. Možete vidjeti aktivne sesije i započeti nove.
+
+
+
+### Status servera
+
+Kliknite "Pogledajte servere" da vidite povezane servere i njihov status.
+
+
+
+---
+
+## Povezivanje terminala
+
+Možete priključiti TUI terminala na aktivni web server:
+
+```bash
+# Start the web server
+opencode web --port 4096
+
+# In another terminal, attach the TUI
+opencode attach http://localhost:4096
+```
+
+Ovo vam omogućava da istovremeno koristite i web sučelje i terminal, dijeleći iste sesije i stanje.
+
+---
+
+## Konfiguracioni fajl
+
+Također možete konfigurirati postavke servera u svom `opencode.json` konfiguracijskom fajlu:
+
+```json
+{
+ "server": {
+ "port": 4096,
+ "hostname": "0.0.0.0",
+ "mdns": true,
+ "cors": ["https://example.com"]
+ }
+}
+```
+
+Oznake komandne linije imaju prednost nad postavkama konfiguracione datoteke.
diff --git a/packages/web/src/content/docs/bs/windows-wsl.mdx b/packages/web/src/content/docs/bs/windows-wsl.mdx
new file mode 100644
index 000000000..cace9c182
--- /dev/null
+++ b/packages/web/src/content/docs/bs/windows-wsl.mdx
@@ -0,0 +1,113 @@
+---
+title: Windows (WSL)
+description: Pokrenite OpenCode na Windowsu preko WSL-a.
+---
+
+import { Steps } from "@astrojs/starlight/components"
+
+Iako OpenCode moze raditi direktno na Windowsu, preporucujemo [Windows Subsystem for Linux (WSL)](https://learn.microsoft.com/en-us/windows/wsl/install) za najbolje iskustvo. WSL daje Linux okruzenje koje glatko radi sa OpenCode funkcijama.
+
+:::tip[Why WSL?]
+WSL nudi bolje performanse fajl sistema, punu terminalsku podrsku i kompatibilnost s razvojnim alatima na koje se OpenCode oslanja.
+:::
+
+---
+
+## Setup
+
+
+
+1. **Instalirajte WSL**
+
+ Ako vec niste, [instalirajte WSL](https://learn.microsoft.com/en-us/windows/wsl/install) prema zvanicnom Microsoft vodicu.
+
+2. **Instalirajte OpenCode u WSL-u**
+
+ Kad je WSL spreman, otvorite WSL terminal i instalirajte OpenCode jednom od [metoda instalacije](/docs/).
+
+ ```bash
+ curl -fsSL https://opencode.ai/install | bash
+ ```
+
+3. **Koristite OpenCode iz WSL-a**
+
+ Idite u direktorij projekta (Windows fajlovima pristupate preko `/mnt/c/`, `/mnt/d/` itd.) i pokrenite OpenCode.
+
+ ```bash
+ cd /mnt/c/Users/YourName/project
+ opencode
+ ```
+
+
+
+---
+
+## Desktop App + WSL Server
+
+Ako preferirate OpenCode Desktop aplikaciju, ali zelite da server radi u WSL-u:
+
+1. **Pokrenite server u WSL-u** sa `--hostname 0.0.0.0` da dozvolite vanjske konekcije:
+
+ ```bash
+ opencode serve --hostname 0.0.0.0 --port 4096
+ ```
+
+2. **Povezite Desktop aplikaciju** na `http://localhost:4096`
+
+:::note
+Ako `localhost` ne radi u vasem setupu, povezte se preko WSL IP adrese (u WSL-u: `hostname -I`) i koristite `http://:4096`.
+:::
+
+:::caution
+Kada koristite `--hostname 0.0.0.0`, postavite `OPENCODE_SERVER_PASSWORD` da zastitite server.
+
+```bash
+OPENCODE_SERVER_PASSWORD=your-password opencode serve --hostname 0.0.0.0
+```
+
+:::
+
+---
+
+## Web Client + WSL
+
+Za najbolje web iskustvo na Windowsu:
+
+1. **Pokrenite `opencode web` u WSL terminalu** umjesto u PowerShell-u:
+
+ ```bash
+ opencode web --hostname 0.0.0.0
+ ```
+
+2. **Otvorite iz Windows browsera** na `http://localhost:` (OpenCode ispisuje URL)
+
+Pokretanje `opencode web` iz WSL-a osigurava ispravan pristup fajl sistemu i terminalsku integraciju, a i dalje je dostupno iz Windows browsera.
+
+---
+
+## Pristup Windows fajlovima
+
+WSL moze pristupiti svim Windows fajlovima kroz `/mnt/` direktorij:
+
+- Disk `C:` → `/mnt/c/`
+- Disk `D:` → `/mnt/d/`
+- I tako dalje...
+
+Primjer:
+
+```bash
+cd /mnt/c/Users/YourName/Documents/project
+opencode
+```
+
+:::tip
+Za najgladje iskustvo, razmislite da klonirate/kopirate repo u WSL fajl sistem (npr. pod `~/code/`) i tu pokrenete OpenCode.
+:::
+
+---
+
+## Tips
+
+- Drzite OpenCode u WSL-u za projekte na Windows diskovima - pristup fajlovima je jednostavan
+- Koristite VS Code [WSL ekstenziju](https://code.visualstudio.com/docs/remote/wsl) uz OpenCode za integrisan tok rada
+- Vase OpenCode konfiguracije i sesije cuvaju se u WSL okruzenju na `~/.local/share/opencode/`
diff --git a/packages/web/src/content/docs/bs/zen.mdx b/packages/web/src/content/docs/bs/zen.mdx
new file mode 100644
index 000000000..6ae22551a
--- /dev/null
+++ b/packages/web/src/content/docs/bs/zen.mdx
@@ -0,0 +1,236 @@
+---
+title: Zen
+description: Kurirana lista modela koje nudi OpenCode.
+---
+
+import config from "../../../../config.mjs"
+export const console = config.console
+export const email = `mailto:${config.email}`
+
+OpenCode Zen je lista testiranih i provjerenih modela koje obezbjeduje OpenCode tim.
+
+:::note
+OpenCode Zen je trenutno u beta fazi.
+:::
+
+Zen radi kao i svaki drugi provajder u OpenCode-u. Prijavite se u OpenCode Zen i uzmete API kljuc. Ovo je **potpuno opcionalno** i ne morate ga koristiti da biste koristili OpenCode.
+
+---
+
+## Background
+
+Postoji veliki broj modela, ali samo mali dio radi dobro kao coding agent. Dodatno, vecina provajdera je drugacije konfigurisana, pa su performanse i kvalitet cesto neujednaceni.
+
+:::tip
+Testirali smo odabranu grupu modela i provajdera koji dobro rade s OpenCode-om.
+:::
+
+Ako model koristite preko servisa poput OpenRouter-a, cesto ne mozete biti sigurni da dobijate najbolju verziju zeljenog modela.
+
+Da to rijesimo, uradili smo nekoliko stvari:
+
+1. Testirali smo odabrane modele i razgovarali sa njihovim timovima kako ih najbolje pokretati.
+2. Zatim smo saradjivali s nekoliko provajdera da potvrdimo da se modeli isporucuju ispravno.
+3. Na kraju smo benchmarkirali kombinacije model/provajder i sastavili listu koju preporucujemo.
+
+OpenCode Zen je AI gateway koji vam daje pristup tim modelima.
+
+---
+
+## Kako radi
+
+OpenCode Zen radi kao i svaki drugi provajder u OpenCode-u.
+
+1. Prijavite se na **OpenCode Zen**, dodajte billing podatke i kopirajte API kljuc.
+2. U TUI-ju pokrenite `/connect`, izaberite OpenCode Zen i zalijepite API kljuc.
+3. Pokrenite `/models` u TUI-ju da vidite listu preporucenih modela.
+
+Naplata je po zahtjevu i mozete dodavati kredit na racun.
+
+---
+
+## Endpoints
+
+Nasim modelima mozete pristupiti i preko sljedecih API endpointa.
+
+| Model | Model ID | Endpoint | AI SDK Package |
+| ------------------ | ------------------ | -------------------------------------------------- | --------------------------- |
+| GPT 5.2 | gpt-5.2 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
+| GPT 5.2 Codex | gpt-5.2-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
+| GPT 5.1 | gpt-5.1 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
+| GPT 5.1 Codex | gpt-5.1-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
+| GPT 5.1 Codex Max | gpt-5.1-codex-max | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
+| GPT 5.1 Codex Mini | gpt-5.1-codex-mini | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
+| GPT 5 | gpt-5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
+| GPT 5 Codex | gpt-5-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
+| GPT 5 Nano | gpt-5-nano | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
+| Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
+| Claude Sonnet 4 | claude-sonnet-4 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
+| Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
+| Claude Haiku 3.5 | claude-3-5-haiku | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
+| Claude Opus 4.6 | claude-opus-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
+| Claude Opus 4.5 | claude-opus-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
+| Claude Opus 4.1 | claude-opus-4-1 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
+| Gemini 3 Pro | gemini-3-pro | `https://opencode.ai/zen/v1/models/gemini-3-pro` | `@ai-sdk/google` |
+| Gemini 3 Flash | gemini-3-flash | `https://opencode.ai/zen/v1/models/gemini-3-flash` | `@ai-sdk/google` |
+| MiniMax M2.1 | minimax-m2.1 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
+| MiniMax M2.1 Free | minimax-m2.1-free | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
+| GLM 4.7 | glm-4.7 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
+| GLM 4.7 Free | glm-4.7-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
+| GLM 4.6 | glm-4.6 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
+| Kimi K2.5 | kimi-k2.5 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
+| Kimi K2.5 Free | kimi-k2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
+| Kimi K2 Thinking | kimi-k2-thinking | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
+| Kimi K2 | kimi-k2 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
+| Qwen3 Coder 480B | qwen3-coder | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
+| Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
+
+[model id](/docs/config/#models) u OpenCode konfiguraciji koristi format `opencode/`. Na primjer, za GPT 5.2 Codex u konfiguraciji koristite `opencode/gpt-5.2-codex`.
+
+---
+
+### Models
+
+Pun spisak dostupnih modela i metapodataka mozete preuzeti na:
+
+```
+https://opencode.ai/zen/v1/models
+```
+
+---
+
+## Pricing
+
+Podrzavamo pay-as-you-go model. Ispod su cijene **po 1M tokena**.
+
+| Model | Input | Output | Cached Read | Cached Write |
+| --------------------------------- | ------ | ------ | ----------- | ------------ |
+| Big Pickle | Free | Free | Free | - |
+| MiniMax M2.1 Free | Free | Free | Free | - |
+| MiniMax M2.1 | $0.30 | $1.20 | $0.10 | - |
+| GLM 4.7 Free | Free | Free | Free | - |
+| GLM 4.7 | $0.60 | $2.20 | $0.10 | - |
+| GLM 4.6 | $0.60 | $2.20 | $0.10 | - |
+| Kimi K2.5 Free | Free | Free | Free | - |
+| Kimi K2.5 | $0.60 | $3.00 | $0.08 | - |
+| Kimi K2 Thinking | $0.40 | $2.50 | - | - |
+| Kimi K2 | $0.40 | $2.50 | - | - |
+| Qwen3 Coder 480B | $0.45 | $1.50 | - | - |
+| Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 |
+| Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 |
+| Claude Sonnet 4 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 |
+| Claude Sonnet 4 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 |
+| Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 |
+| Claude Haiku 3.5 | $0.80 | $4.00 | $0.08 | $1.00 |
+| Claude Opus 4.6 (≤ 200K tokens) | $5.00 | $25.00 | $0.50 | $6.25 |
+| Claude Opus 4.6 (> 200K tokens) | $10.00 | $37.50 | $1.00 | $12.50 |
+| Claude Opus 4.5 | $5.00 | $25.00 | $0.50 | $6.25 |
+| Claude Opus 4.1 | $15.00 | $75.00 | $1.50 | $18.75 |
+| Gemini 3 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - |
+| Gemini 3 Pro (> 200K tokens) | $4.00 | $18.00 | $0.40 | - |
+| Gemini 3 Flash | $0.50 | $3.00 | $0.05 | - |
+| GPT 5.2 | $1.75 | $14.00 | $0.175 | - |
+| GPT 5.2 Codex | $1.75 | $14.00 | $0.175 | - |
+| GPT 5.1 | $1.07 | $8.50 | $0.107 | - |
+| GPT 5.1 Codex | $1.07 | $8.50 | $0.107 | - |
+| GPT 5.1 Codex Max | $1.25 | $10.00 | $0.125 | - |
+| GPT 5.1 Codex Mini | $0.25 | $2.00 | $0.025 | - |
+| GPT 5 | $1.07 | $8.50 | $0.107 | - |
+| GPT 5 Codex | $1.07 | $8.50 | $0.107 | - |
+| GPT 5 Nano | Free | Free | Free | - |
+
+U historiji koristenja mozete primijetiti _Claude Haiku 3.5_. To je [low cost model](/docs/config/#models) koji se koristi za generisanje naslova sesija.
+
+:::note
+Naknade kartica se prenose po stvarnom trosku (4.4% + $0.30 po transakciji) i ne naplacujemo nista preko toga.
+:::
+
+Besplatni modeli:
+
+- GLM 4.7 Free je dostupan na OpenCode-u ograniceno vrijeme. Tim koristi taj period za prikupljanje feedbacka i unapredenje modela.
+- Kimi K2.5 Free je dostupan na OpenCode-u ograniceno vrijeme. Tim koristi taj period za prikupljanje feedbacka i unapredenje modela.
+- MiniMax M2.1 Free je dostupan na OpenCode-u ograniceno vrijeme. Tim koristi taj period za prikupljanje feedbacka i unapredenje modela.
+- Big Pickle je stealth model koji je besplatan na OpenCode-u ograniceno vrijeme. Tim koristi taj period za prikupljanje feedbacka i unapredenje modela.
+
+Ako imate pitanja, kontaktirajte nas.
+
+---
+
+### Auto-reload
+
+Ako vam stanje padne ispod $5, Zen ce automatski dopuniti $20.
+
+Iznos auto-reloada mozete promijeniti. Auto-reload mozete i potpuno iskljuciti.
+
+---
+
+### Monthly limits
+
+Mozete postaviti mjesecni limit potrosnje za cijeli workspace i za svakog clana tima.
+
+Na primjer, ako postavite mjesecni limit na $20, Zen nece potrositi vise od $20 u mjesecu. Ali ako je auto-reload ukljucen, ukupna naplata moze preci $20 ako stanje padne ispod $5.
+
+---
+
+## Privacy
+
+Svi nasi modeli su hostovani u SAD-u. Provajderi prate zero-retention politiku i ne koriste vase podatke za treniranje modela, uz sljedece izuzetke:
+
+- Big Pickle: Tokom besplatnog perioda, prikupljeni podaci mogu se koristiti za poboljsanje modela.
+- GLM 4.7 Free: Tokom besplatnog perioda, prikupljeni podaci mogu se koristiti za poboljsanje modela.
+- Kimi K2.5 Free: Tokom besplatnog perioda, prikupljeni podaci mogu se koristiti za poboljsanje modela.
+- MiniMax M2.1 Free: Tokom besplatnog perioda, prikupljeni podaci mogu se koristiti za poboljsanje modela.
+- OpenAI API-ji: Zahtjevi se cuvaju 30 dana prema [OpenAI Data Policies](https://platform.openai.com/docs/guides/your-data).
+- Anthropic API-ji: Zahtjevi se cuvaju 30 dana prema [Anthropic Data Policies](https://docs.anthropic.com/en/docs/claude-code/data-usage).
+
+---
+
+## For Teams
+
+Zen odlicno radi i za timove. Mozete pozvati clanove tima, dodijeliti uloge, birati modele koje tim koristi i jos mnogo toga.
+
+:::note
+Workspaces su trenutno besplatni za timove kao dio beta faze.
+:::
+
+Upravljanje workspace-om je trenutno besplatno za timove tokom beta faze. Vise detalja o cijenama podijelit cemo uskoro.
+
+---
+
+### Roles
+
+Mozete pozvati clanove tima u workspace i dodijeliti uloge:
+
+- **Admin**: upravlja modelima, clanovima, API kljucevima i billingom
+- **Member**: upravlja samo svojim API kljucevima
+
+Admini mogu postaviti i mjesecne limite potrosnje po clanu da drze troskove pod kontrolom.
+
+---
+
+### Model access
+
+Admini mogu ukljuciti ili iskljuciti odredene modele za workspace. Zahtjevi prema iskljucenom modelu vracaju gresku.
+
+Ovo je korisno kada zelite zabraniti model koji prikuplja podatke.
+
+---
+
+### Bring your own key
+
+Mozete koristiti vlastite OpenAI ili Anthropic API kljuceve i dalje koristiti ostale modele u Zen-u.
+
+Kada koristite vlastite kljuceve, tokene direktno naplacuje provajder, ne Zen.
+
+Na primjer, vasa organizacija mozda vec ima OpenAI ili Anthropic kljuc i zelite koristiti njega umjesto onog koji daje Zen.
+
+---
+
+## Goals
+
+OpenCode Zen smo napravili da:
+
+1. **Benchmarkiramo** najbolje kombinacije model/provajder za coding agente.
+2. Omogucimo pristup opcijama **najviseg kvaliteta** bez degradacije performansi i preusmjeravanja na jeftinije provajdere.
+3. Prenesemo svaka **snizenja cijena** prodajom po trosku, tako da je jedini markup pokrice processing naknada.
+4. Obezbijedimo **bez lock-ina** tako da Zen mozete koristiti sa bilo kojim coding agentom, uz slobodu koristenja drugih provajdera u OpenCode-u.
diff --git a/packages/web/src/content/docs/da/1-0.mdx b/packages/web/src/content/docs/da/1-0.mdx
new file mode 100644
index 000000000..744c4ea87
--- /dev/null
+++ b/packages/web/src/content/docs/da/1-0.mdx
@@ -0,0 +1,67 @@
+---
+title: Migrerer til 1.0
+description: Hvad er nyt i OpenCode 1.0.
+---
+
+OpenCode 1.0 er en komplet omskrivning af TUI.
+
+Vi flyttede fra den go+bubbletea-baserede TUI, som havde problemer med ydeevne og kapacitet, til en intern ramme (OpenTUI) skrevet i zig+solidjs.
+
+Den nye TUI fungerer som den gamle, da den opretter forbindelse til den samme opencode-server.
+
+---
+
+##Opgradering
+
+Du bør ikke automatisk opgraderes til 1.0, hvis du er i øjeblikket bruger en tidligere
+version. Nogle ældre versioner af OpenCode henter dog altid den nyeste.
+
+Kør for at opgradere manuelt
+
+```bash
+$ opencode upgrade 1.0.0
+```
+
+Kør for at nedgradere tilbage til 0.x
+
+```bash
+$ opencode upgrade 0.15.31
+```
+
+---
+
+## UX ændringer
+
+Sessionshistorikken er mere komprimeret og viser kun alle detaljer om redigerings- og bash-værktøjet.
+
+Vi tilføjede en kommandolinje, som næsten alt flyder igennem. Tryk på ctrl+p for at få det frem i enhver sammenhæng og se alt, hvad du kan gøre.
+
+Tilføjet en sessionssidebjælke (kan skiftes) med nyttige oplysninger.
+
+Vi fjernede nogle funktioner, som vi ikke var sikre på, at nogen rent faktisk brugte. Hvis der mangler noget vigtigt, bedes du åbne et problem, så tilføjer vi det hurtigt igen.
+
+---
+
+## Brydende ændringer
+
+### Nøglebindinger omdøbt
+
+- messages_revert -> messages_undo
+- switch_agent -> agent_cyklus
+- switch_agent_reverse -> agent_cyklus_reverse
+- switch_mode -> agent_cyklus
+- switch_mode_reverse -> agent_cyklus_reverse
+
+### Nøglebindinger fjernet
+
+- messages_layout_toggle
+- beskeder_næste
+- beskeder_forrige
+- file_diff_toggle
+- fil_søgning
+- fil_luk
+- fil_liste
+- app_hjælp
+- projekt_init
+- tool_details
+- tænkeblokke
diff --git a/packages/web/src/content/docs/da/acp.mdx b/packages/web/src/content/docs/da/acp.mdx
new file mode 100644
index 000000000..802f126e2
--- /dev/null
+++ b/packages/web/src/content/docs/da/acp.mdx
@@ -0,0 +1,156 @@
+---
+title: ACP support
+description: Brug OpenCode i enhver ACP-kompatibel editor.
+---
+
+OpenCode understøtter [Agent Client Protocol](https://agentclientprotocol.com) eller (ACP), så du kan bruge det direkte i kompatible editorer og IDE'er.
+
+:::tip
+For en liste over redaktører og værktøjer, der understøtter ACP, tjek [ACP progress report](https://zed.dev/blog/acp-progress-report#available-now).
+:::
+
+ACP er en åben protokol, der standardiserer kommunikation mellem kodeeditorer og AI-kodningsagenter.
+
+---
+
+## Konfigurer
+
+For at bruge OpenCode via ACP, konfigurer din editor til at køre kommandoen `opencode acp`.
+
+Kommandoen starter OpenCode som en ACP-kompatibel underproces, der kommunikerer med din editor over JSON-RPC via stdio.
+
+Nedenfor er eksempler på populære redaktører, der understøtter ACP.
+
+---
+
+### Zed
+
+Føj til din [Zed](https://zed.dev)-konfiguration (`~/.config/zed/settings.json`):
+
+```json title="~/.config/zed/settings.json"
+{
+ "agent_servers": {
+ "OpenCode": {
+ "command": "opencode",
+ "args": ["acp"]
+ }
+ }
+}
+```
+
+For at åbne den skal du bruge handlingen `agent: new thread` i **Kommandopaletten**.
+
+Du kan også binde en tastaturgenvej ved at redigere din `keymap.json`:
+
+```json title="keymap.json"
+[
+ {
+ "bindings": {
+ "cmd-alt-o": [
+ "agent::NewExternalAgentThread",
+ {
+ "agent": {
+ "custom": {
+ "name": "OpenCode",
+ "command": {
+ "command": "opencode",
+ "args": ["acp"]
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+]
+```
+
+---
+
+### JetBrains IDE'er
+
+Tilføj til din [JetBrains IDE](https://www.jetbrains.com/) acp.json i henhold til [documentation](https://www.jetbrains.com/help/ai-assistant/acp.html):
+
+```json title="acp.json"
+{
+ "agent_servers": {
+ "OpenCode": {
+ "command": "/absolute/path/bin/opencode",
+ "args": ["acp"]
+ }
+ }
+}
+```
+
+For at åbne den skal du bruge den nye 'OpenCode'-agent i AI Chat-agentvælgeren.
+
+---
+
+### Avante.nvim
+
+Føj til din [Avante.nvim](https://github.com/yetone/avante.nvim)-konfiguration:
+
+```lua
+{
+ acp_providers = {
+ ["opencode"] = {
+ command = "opencode",
+ args = { "acp" }
+ }
+ }
+}
+```
+
+Hvis du har brug for at videregive miljøvariabler:
+
+```lua {6-8}
+{
+ acp_providers = {
+ ["opencode"] = {
+ command = "opencode",
+ args = { "acp" },
+ env = {
+ OPENCODE_API_KEY = os.getenv("OPENCODE_API_KEY")
+ }
+ }
+ }
+}
+```
+
+---
+
+### CodeCompanion.nvim
+
+For at bruge OpenCode som en ACP-agent i [CodeCompanion.nvim](https://github.com/olimorris/codecompanion.nvim), skal du tilføje følgende til din Neovim-konfiguration:
+
+```lua
+require("codecompanion").setup({
+ interactions = {
+ chat = {
+ adapter = {
+ name = "opencode",
+ model = "claude-sonnet-4",
+ },
+ },
+ },
+})
+```
+
+Denne konfiguration sætter CodeCompanion til at bruge OpenCode som ACP-agent til chat.
+
+Hvis du har brug for at sende miljøvariabler (som `OPENCODE_API_KEY`), henvises til [Configuring Adapters: Environment Variables](https://codecompanion.olimorris.dev/getting-started#setting-an-api-key) i CodeCompanion.nvim-dokumentationen for alle detaljer.
+
+## Support
+
+OpenCode fungerer på samme måde via ACP som i terminalen. Alle funktioner understøtter:
+
+:::note
+Nogle indbyggede skråstreg-kommandoer som `/undo` og `/redo` er i øjeblikket ikke understøttet.
+:::
+
+- Indbyggede værktøjer (filoperationer, terminalkommandoer osv.)
+- Brugerdefinerede værktøjer og skråstreg-kommandoer
+- MCP-servere konfigureret i din OpenCode-konfiguration
+- Projektspecifikke regler fra `AGENTS.md`
+- Brugerdefinerede formatere og linters
+- Agenter og tilladelsessystem
diff --git a/packages/web/src/content/docs/da/agents.mdx b/packages/web/src/content/docs/da/agents.mdx
new file mode 100644
index 000000000..26c83ff52
--- /dev/null
+++ b/packages/web/src/content/docs/da/agents.mdx
@@ -0,0 +1,747 @@
+---
+title: Agent
+description: Konfigurer og brug specialiserede agenter.
+---
+
+Agenter er specialiserede AI-assistenter, der kan konfigureres til specifikke opgaver og arbejdsgange. De giver dig mulighed for at oprette en central værktøj med brugerdefinerede prompter, modeller og værktøjsadgang.
+
+:::tip
+Brug planagenten til at analysere kode og gennemgå forslag uden at foretage nogen kodeændringer.
+:::
+
+Du kan skifte mellem agenter under en session eller kalde dem med `@`-omtalen.
+
+---
+
+## Skriver
+
+Der er to typer agenter i OpenCode; primære midler og subagenter.
+
+---
+
+### Primære agent
+
+Primære agenter er de vigtigste assistenter, du interagerer direkte med. Du kan bladre gennem dem ved at bruge **Tab**-tasten eller din konfigurerede `switch_agent`-tastebinding. Disse agenter håndterer din hovedsamtale. Værktøjsadgang konfigureres via tilladelser - for eksempel har Build alle aktiveret, mens Plan er begrænset.
+
+:::tip
+Du kan bruge **Tab**-tasten til at skifte mellem primære agenter under en session.
+:::
+
+OpenCode leveres med indbyggede primære agenter, **Build** og **Plan**. Godt
+se på disse nedenfor.
+
+---
+
+### Subagent
+
+Subagenter er specialiserede assistenter, som primære agenter kan påbegynde sig til specifikke opgaver. Du kan også kalde dem manuelt ved at **@ nævne** dem i dine beskeder.
+
+OpenCode leveres med til indbyggede underagenter, **Generelt** og **Udforsk**. Vi vil se på dette nedenfor.
+
+---
+
+## Indbygget
+
+OpenCode leveres med to indbyggede primære agenter og to indbyggede subagenter.
+
+---
+
+### Brug bygge
+
+_Tilstand_: `primary`
+
+Byg er den **standard** primære agent med alle aktiveret. Dette er standardagenten til udviklingsarbejde, hvor du har brug for fuld adgang til filhandlinger og systemkommandoer.
+
+---
+
+### Brug plan
+
+_Tilstand_: `primary`
+
+En begrænset agent designet til planlægning og analyse. Vi bruger et tilladelsessystem til at give dig mere kontrol og forhindre utilsigtede ændringer.
+Som standard er alle følgende indstillet til `ask`:
+
+- `file edits`: Alle skrivninger, patches og redigeringer
+- `bash`: Alle bash-kommandoer
+
+Denne agent er nyttig, når du vil have LLM til at analysere kode, foreslå ændringer eller oprette planer uden at foretage egentlige ændringer af din kodebase.
+
+---
+
+### Brug generelt
+
+_Tilstand_: `subagent`
+
+En agent til generelt formål at undersøge komplekse spørgsmål og udføre opgaver i flere trin. Har fuld værktøjsadgang (undtagen todo), så den kan foretage filændringer, når det er nødvendigt. Brug dette til at køre flere arbejdsenheder parallelt.
+
+---
+
+### Brug udforsk
+
+_Tilstand_: `subagent`
+
+En hurtig, skrivebeskyttet agent til at udforske kodebaser. Kan ikke ændre filer. Brug dette, når du hurtigt skal finde filer efter mønstre, søge kode efter nøgleord eller besvare spørgsmål om kodebasen.
+
+---
+
+### Brug komprimering
+
+_Tilstand_: `primary`
+
+Skjult systemagent, der komprimerer lang kontekst til et mindre resumé. Det kører automatisk, når det er nødvendigt og ikke kan vælges i brugergrænsefladen.
+
+---
+
+### Brug titel
+
+_Tilstand_: `primary`
+
+Skjult systemagent, der genererer korte sessionstitler. Den kører automatisk og kan ikke vælges i brugergrænsefladen.
+
+---
+
+### Brug CV
+
+_Tilstand_: `primary`
+
+Skjult systemagent, der opretter sessionsoversigter. Den kører automatisk og kan ikke vælges i brugergrænsefladen.
+
+---
+
+## Brug
+
+1. For primære agenter skal du bruge tasten **Tab** til at bladre gennem dem under en session. Du kan også bruge din konfigurerede `switch_agent` nøglebinding.
+
+2. Subagenter kan påberåbes:
+ - **Automatisk** af primære agenter til specialiserede opgaver baseret på deres beskrivelser.
+ - Manuelt ved at **@ nævne** en underagent i din besked. F.eks.
+
+ ```txt frame="none"
+ @general help me search for this function
+ ```
+
+3. **Navigation mellem sessioner**: Når underagenter opretter deres egne underordnede sessioner, kan du navigere mellem den overordnede session og alle underordnede sessioner ved hjælp af:
+ - **\+Højre** (eller din konfigurerede `session_child_cycle`-smagsbinding) for at cykle fremad gennem forælder → barn1 → barn2 →... → forælder
+ - **\+Venstre** (eller din konfigurerede `session_child_cycle_reverse`-smagsbinding) for at cykle baglæns gennem forælder ← barn1 ← barn2 ←... ← forælder
+
+ Dette giver dig mulighed for problemfrit at skifte mellem hovedsamtalen og specialiseret subagent arbejde.
+
+---
+
+## Konfigurer
+
+Du kan tilpasse de indbyggede agenter eller oprette dine egne gennem konfiguration. Agenter kan konfigureres på følgende måder:
+
+---
+
+### JSON
+
+Konfigurationsagent i din `opencode.json`-konfigurationsfil:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "agent": {
+ "build": {
+ "mode": "primary",
+ "model": "anthropic/claude-sonnet-4-20250514",
+ "prompt": "{file:./prompts/build.txt}",
+ "tools": {
+ "write": true,
+ "edit": true,
+ "bash": true
+ }
+ },
+ "plan": {
+ "mode": "primary",
+ "model": "anthropic/claude-haiku-4-20250514",
+ "tools": {
+ "write": false,
+ "edit": false,
+ "bash": false
+ }
+ },
+ "code-reviewer": {
+ "description": "Reviews code for best practices and potential issues",
+ "mode": "subagent",
+ "model": "anthropic/claude-sonnet-4-20250514",
+ "prompt": "You are a code reviewer. Focus on security, performance, and maintainability.",
+ "tools": {
+ "write": false,
+ "edit": false
+ }
+ }
+ }
+}
+```
+
+---
+
+### Markdown
+
+Du kan også definere agenter ved hjælp af markdown-filer. Placer dem i:
+
+- Globalt: `~/.config/opencode/agents/`
+- Pr. projekt: `.opencode/agents/`
+
+```markdown title="~/.config/opencode/agents/review.md"
+---
+description: Reviews code for quality and best practices
+mode: subagent
+model: anthropic/claude-sonnet-4-20250514
+temperature: 0.1
+tools:
+ write: false
+ edit: false
+ bash: false
+---
+
+You are in code review mode. Focus on:
+
+- Code quality and best practices
+- Potential bugs and edge cases
+- Performance implications
+- Security considerations
+
+Provide constructive feedback without making direct changes.
+```
+
+Markdown-filnavnet bliver agentnavnet. For eksempel opretter `review.md` og `review`-agent.
+
+---
+
+## Indstillinger
+
+Lad os se nærmere på disse konfigurationsmuligheder.
+
+---
+
+### Beskrivelse
+
+Brug indstillingen `description` til at give en kort beskrivelse af, hvad agenten gør, og hvornår den skal bruges.
+
+```json title="opencode.json"
+{
+ "agent": {
+ "review": {
+ "description": "Reviews code for best practices and potential issues"
+ }
+ }
+}
+```
+
+Dette er en **påkrævet** konfigurationsindstilling.
+
+---
+
+### Temperatur
+
+Styr tilfældigheden og kreativiteten af LLMs svar med `temperature`-konfigurationen.
+
+Lavere værdier gør svar mere fokuserede og deterministiske, mens højere værdier øger kreativitet og variabilitet.
+
+```json title="opencode.json"
+{
+ "agent": {
+ "plan": {
+ "temperature": 0.1
+ },
+ "creative": {
+ "temperature": 0.8
+ }
+ }
+}
+```
+
+Temperaturværdier typisk fra 0,0 til 1,0:
+
+- **0.0-0.2**: Meget fokuseret og deterministisk svar, ideel til kodeanalyse og planlægning
+- **0,3-0,5**: Afbalancerede svar med en vis kreativitet, god til generelle udviklingsopgaver
+- **0.6-1.0**: Mere kreative og varierede svar, nyttige til brainstorming og udforskning
+
+```json title="opencode.json"
+{
+ "agent": {
+ "analyze": {
+ "temperature": 0.1,
+ "prompt": "{file:./prompts/analysis.txt}"
+ },
+ "build": {
+ "temperature": 0.3
+ },
+ "brainstorm": {
+ "temperature": 0.7,
+ "prompt": "{file:./prompts/creative.txt}"
+ }
+ }
+}
+```
+
+Hvis ingen temperatur er angivet, bruger OpenCode modelspecifikke standardindstillinger; typisk 0 for de fleste modeller, 0,55 for Qwen-modeller.
+
+---
+
+### Maks. skridt
+
+Kontrollerer det maksimale antal agent-gentagelser, som en agent kan udføre, før han bliver tvunget til kun at svare med tekst. Dette giver brugere, der ønsker at kontrollere, mulighed for at sætte en grænse for agenthandlinger.
+
+Hvis dette ikke er indstillet, vil agenten fortsætte med at iterere, indtil modellen vælger at stoppe, eller brugeren afbryder sessionen.
+
+```json title="opencode.json"
+{
+ "agent": {
+ "quick-thinker": {
+ "description": "Fast reasoning with limited iterations",
+ "prompt": "You are a quick thinker. Solve problems with minimal steps.",
+ "steps": 5
+ }
+ }
+}
+```
+
+Når grænsen er nået, modtager agenten en speciel systemprompt, der instruerer den om at svare med en opsummering af sit arbejde og anbefalede resterende opgaver.
+
+:::forsigtighed
+Det gamle `maxSteps` følte er forældet. Brug `steps` i stedet.
+:::
+
+---
+
+### Deaktiver
+
+Indstil til `true` for at deaktivere agenten.
+
+```json title="opencode.json"
+{
+ "agent": {
+ "review": {
+ "disable": true
+ }
+ }
+}
+```
+
+---
+
+### Spørg
+
+Angiv en brugerdefineret systempromptfil for denne agent med `prompt`-konfigurationen. Promptfilen skal indeholde instruktioner, der er specifikke for agentens formål.
+
+```json title="opencode.json"
+{
+ "agent": {
+ "review": {
+ "prompt": "{file:./prompts/code-review.txt}"
+ }
+ }
+}
+```
+
+Denne sti er i forhold til, hvor konfigurationsfilen er placeret. Så dette virker både for den globale OpenCode-konfiguration og den projektspecifikke konfiguration.
+
+---
+
+### Model
+
+Brug `model`-konfigurationen til at tilsidesætte modeller for denne agent. Nyttigt til brug af forskellige modeller optimeret til forskellige opgaver. For eksempel en hurtigere model til planlægning, en dygtig model til implementering.
+
+:::tip
+Hvis du ikke angiver en model, bruger primære agenter [model globally configured](/docs/config#models), mens subagenter vil bruge modeller for den primære agent, der påkaldte subagenten.
+:::
+
+```json title="opencode.json"
+{
+ "agent": {
+ "plan": {
+ "model": "anthropic/claude-haiku-4-20250514"
+ }
+ }
+}
+```
+
+Model-id'et i din OpenCode-konfiguration brugerformatet `provider/model-id`. For eksempel, hvis du bruger [OpenCode Zen](/docs/zen), vil du bruge `opencode/gpt-5.1-codex` til GPT 5.1 Codex.
+
+---
+
+### Værktøjer
+
+Kontroller, hvilke værktøjer der er tilgængelige i denne agent med `tools`-konfigurationen. Du kan aktivere eller deaktivere specifikke redskaber ved at indstille dem til `true` eller `false`.
+
+```json title="opencode.json" {3-6,9-12}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "tools": {
+ "write": true,
+ "bash": true
+ },
+ "agent": {
+ "plan": {
+ "tools": {
+ "write": false,
+ "bash": false
+ }
+ }
+ }
+}
+```
+
+:::note
+Den agentspecifikke konfiguration tilsidesætter den globale konfiguration.
+:::
+
+Du kan også bruge jokertegn til at styre flere værktøjer på én gang. For eksempel, for at deaktivere alle værktøjer fra en MCP-server:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "agent": {
+ "readonly": {
+ "tools": {
+ "mymcp_*": false,
+ "write": false,
+ "edit": false
+ }
+ }
+ }
+}
+```
+
+[Learn more about tools](/docs/tools).
+
+---
+
+### Tilladelser
+
+Du kan konfigurere tilladelser til at administrere, hvilke handlinger og agenter kan udføre. I øjeblikket kan tilladelserne til værktøjerne `edit`, `bash` og `webfetch` konfigureres til:
+
+- `"ask"` — Bed om godkendelse, før du kører værktøjet
+- `"allow"` — Tillad alle operationer uden godkendelse
+- `"deny"` — Deaktiver værktøjet
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "edit": "deny"
+ }
+}
+```
+
+Du kan tilsidesætte disse tilladelser pr. agent.
+
+```json title="opencode.json" {3-5,8-10}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "edit": "deny"
+ },
+ "agent": {
+ "build": {
+ "permission": {
+ "edit": "ask"
+ }
+ }
+ }
+}
+```
+
+Du kan også angive tilladelser i Markdown-agenter.
+
+```markdown title="~/.config/opencode/agents/review.md"
+---
+description: Code review without edits
+mode: subagent
+permission:
+ edit: deny
+ bash:
+ "*": ask
+ "git diff": allow
+ "git log*": allow
+ "grep *": allow
+ webfetch: deny
+---
+
+Only analyze code and suggest changes.
+```
+
+Du kan indstille tilladelser til specifikke bash-kommandoer.
+
+```json title="opencode.json" {7}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "agent": {
+ "build": {
+ "permission": {
+ "bash": {
+ "git push": "ask",
+ "grep *": "allow"
+ }
+ }
+ }
+ }
+}
+```
+
+Dette kan tage et globmønster.
+
+```json title="opencode.json" {7}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "agent": {
+ "build": {
+ "permission": {
+ "bash": {
+ "git *": "ask"
+ }
+ }
+ }
+ }
+}
+```
+
+Og du kan også bruge jokertegnet `*` til at administrere tilladelser for alle kommandoer.
+Da den sidste matchningsregel har forrang, skal du sætte jokertegnet `*` først og specifikke regler efter.
+
+```json title="opencode.json" {8}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "agent": {
+ "build": {
+ "permission": {
+ "bash": {
+ "*": "ask",
+ "git status *": "allow"
+ }
+ }
+ }
+ }
+}
+```
+
+[Learn more about permissions](/docs/permissions).
+
+---
+
+### Tilstand
+
+Styr agentens tilstand med `mode`-konfigurationen. Indstillingen `mode` bruges til at bestemme, hvordan agenten kan bruges.
+
+```json title="opencode.json"
+{
+ "agent": {
+ "review": {
+ "mode": "subagent"
+ }
+ }
+}
+```
+
+Indstillingen `mode` kan indstilles til `primary`, `subagent` eller `all`. Hvis der ikke er angivet nogen `mode`, er den som standard `all`.
+
+---
+
+### Skjult
+
+Skjul en underagent fra `@` autofuldførelsesmenuen med `hidden: true`. Nyttigt for interne underagenter, der kun bør startes programmatisk af andre agenter via opgaveværktøjet.
+
+```json title="opencode.json"
+{
+ "agent": {
+ "internal-helper": {
+ "mode": "subagent",
+ "hidden": true
+ }
+ }
+}
+```
+
+Dette påvirker kun brugerens synlighed i autofuldførelsesmenuen. Skjulte agenter kan stadig påkaldes af modellen via opgaveværktøjet, hvis tilladelser tillader det.
+
+:::note
+Gælder kun for `mode: subagent`-agent.
+:::
+
+---
+
+### Opgavetilladelser
+
+Kontroller, hvilke subagenter en agent kan påkalde via opgaveværktøjet med `permission.task`. Bruger glob-mønstre til fleksibel matchning.
+
+```json title="opencode.json"
+{
+ "agent": {
+ "orchestrator": {
+ "mode": "primary",
+ "permission": {
+ "task": {
+ "*": "deny",
+ "orchestrator-*": "allow",
+ "code-reviewer": "ask"
+ }
+ }
+ }
+ }
+}
+```
+
+Når den er indstillet til `deny`, fjernes subagenten helt fra opgaveværktøjsbeskrivelsen, så modeller vil ikke forsøge at starte den.
+
+:::tip
+Reglerne vurderer i rækkefølge, og den **sidste matchende regel vinder**. I eksemplet ovenfor matcher `orchestrator-planner` både `*` (afvis) og `orchestrator-*` (tillad), men da `orchestrator-*` kommer efter `*`, er resultatet `allow`.
+:::
+
+:::tip
+Brugere kan altid påkalde enhver underagent direkte via `@` autofuldførelsesmenuen, nægt agentens opgavetilladelser ville det.
+:::
+
+---
+
+### Farve
+
+Tilpas agentens visuelle udseende i brugergrænsefladen med muligheden `color`. Dette påvirker, hvordan agenter vises i grænsefladen.
+
+Brug en gyldig hex-farve (f.eks. `#FF5733`) eller temafarve: `primary`, `secondary`, `accent`, `success`, `warning`, `error`, `info`.
+
+```json title="opencode.json"
+{
+ "agent": {
+ "creative": {
+ "color": "#ff6b6b"
+ },
+ "code-reviewer": {
+ "color": "accent"
+ }
+ }
+}
+```
+
+---
+
+### Top P
+
+Styr responsdiversiteten med `top_p`-muligheden. Alternativ til temperatur for at kontrollere tilfældighed.
+
+```json title="opencode.json"
+{
+ "agent": {
+ "brainstorm": {
+ "top_p": 0.9
+ }
+ }
+}
+```
+
+Værdier spænder fra 0,0 til 1,0. Lavere værdier er mere fokuserede, højere værdier mere forskelligartede.
+
+---
+
+### Yderligere
+
+Alle andre muligheder, du angiver i din agentkonfiguration, vil blive **overført direkte** til udbyderen som modelvalg. Dette giver dig mulighed for at bruge udbyderspecifikke funktioner og parametre.
+
+For eksempel, med OpenAIs ræsoneringsmodeller kan du styre ræsonnementindsatsen:
+
+```json title="opencode.json" {6,7}
+{
+ "agent": {
+ "deep-thinker": {
+ "description": "Agent that uses high reasoning effort for complex problems",
+ "model": "openai/gpt-5",
+ "reasoningEffort": "high",
+ "textVerbosity": "low"
+ }
+ }
+}
+```
+
+Disse yderligere muligheder er model- og udbyderspecifikke. Tjek din udbyders dokumentation for tilgængelige parametre.
+
+:::tip
+Kør `opencode models` for at se en liste over de tilgængelige modeller.
+:::
+
+---
+
+## Opret agent
+
+Du kan oprette nye agenter ved hjælp af følgende kommando:
+
+```bash
+opencode agent create
+```
+
+Denne interaktive kommando vil:
+
+1. Spørg, hvor agenten skal gemmes; globalt eller projektspecifikt.
+2. Beskrivelse af, hvad agenten skal gøre.
+3. Generer en passende systemprompt og identifikator.
+4. Lad dig vælge, hvilke værktøjer agenter har adgang til.
+5. Til sidst skal du oprette en markdown-fil med agentkonfigurationen.
+
+---
+
+## Use cases
+
+Her er nogle almindelige use cases for forskellige agenter.
+
+- **Byggeagent**: Fuldt udviklingsarbejde med alle aktiveret
+- **Planagent**: Analyse og planlægning uden ændringer
+- **Anmeldelsesagent**: Kodegennemgang med skrivebeskyttet adgang plus dokumentationsværktøjer
+- **Debug agent**: Fokuseret på undersøgelse med bash og læseværktøjer aktiveret
+- **Docs-agent**: Dokumentationsskrivning med filhandlinger, men ingen systemkommandoer
+
+---
+
+## Eksempler
+
+Her er nogle eksempler på agenter, du kan finde nyttige.
+
+:::tip
+Har du en agent, du gerne vil dele? [Submit a PR](https://github.com/anomalyco/opencode).
+:::
+
+---
+
+### Dokumentationsagent
+
+```markdown title="~/.config/opencode/agents/docs-writer.md"
+---
+description: Writes and maintains project documentation
+mode: subagent
+tools:
+ bash: false
+---
+
+You are a technical writer. Create clear, comprehensive documentation.
+
+Focus on:
+
+- Clear explanations
+- Proper structure
+- Code examples
+- User-friendly language
+```
+
+---
+
+### Sikkerhedsrevisor
+
+```markdown title="~/.config/opencode/agents/security-auditor.md"
+---
+description: Performs security audits and identifies vulnerabilities
+mode: subagent
+tools:
+ write: false
+ edit: false
+---
+
+You are a security expert. Focus on identifying potential security issues.
+
+Look for:
+
+- Input validation vulnerabilities
+- Authentication and authorization flaws
+- Data exposure risks
+- Dependency vulnerabilities
+- Configuration security issues
+```
diff --git a/packages/web/src/content/docs/da/cli.mdx b/packages/web/src/content/docs/da/cli.mdx
new file mode 100644
index 000000000..8ad292421
--- /dev/null
+++ b/packages/web/src/content/docs/da/cli.mdx
@@ -0,0 +1,601 @@
+---
+title: CLI
+description: OpenCode CLI muligheder og kommandoer.
+---
+
+import { Tabs, TabItem } from "@astrojs/starlight/components"
+
+OpenCode CLI starter som standard [TUI](/docs/tui), når den kører uden nogen argumenter.
+
+```bash
+opencode
+```
+
+Men den accepterer også kommandoer som dokumenteret på denne side. Dette giver dig mulighed for at interagere med OpenCode programmatisk.
+
+```bash
+opencode run "Explain how closures work in JavaScript"
+```
+
+---
+
+### tui
+
+Start OpenCode terminalbrugergrænsefladen.
+
+```bash
+opencode [project]
+```
+
+#### Flag
+
+| Flag | Kort | Beskrivelse |
+| ------------ | ---- | --------------------------------------- |
+| `--continue` | `-c` | Fortsæt sidste session |
+| `--session` | `-s` | Sessions-id for at fortsætte |
+| `--prompt` | | Spørg om at bruge |
+| `--model` | `-m` | Model til brug i form af provider/model |
+| `--agent` | | Agent hos bruge |
+| `--port` | | Port at lytte på |
+| `--hostname` | | Værtsnavn at lytte på |
+
+---
+
+## Kommandoer
+
+OpenCode CLI har også følgende kommandoer.
+
+---
+
+### agent
+
+Administratoragent for OpenCode.
+
+```bash
+opencode agent [command]
+```
+
+---
+
+### vedhæft
+
+Tilslut en terminal til en allerede kørende OpenCode backend-server startet via `serve` eller `web` kommandoer.
+
+```bash
+opencode attach [url]
+```
+
+Dette gør det muligt at bruge TUI med en ekstern OpenCode backend. For eksempel:
+
+```bash
+# Start the backend server for web/mobile access
+opencode web --port 4096 --hostname 0.0.0.0
+
+# In another terminal, attach the TUI to the running backend
+opencode attach http://10.20.30.40:4096
+```
+
+#### Flag
+
+| Flag | Kort | Beskrivelse |
+| ----------- | ---- | -------------------------------- |
+| `--dir` | | Arbejdsmappe til at starte TUI i |
+| `--session` | `-s` | Sessions-id for at fortsætte |
+
+---
+
+#### oprette
+
+Opret en ny agent med tilpasset konfiguration.
+
+```bash
+opencode agent create
+```
+
+Denne kommando vil guide dig gennem oprettelse af en ny agent med en brugerdefineret systemprompt og værktøjskonfiguration.
+
+---
+
+#### liste
+
+Liste over alle tilgængelige agenter.
+
+```bash
+opencode agent list
+```
+
+---
+
+### auth
+
+Kommando til at administrere legitimationsoplysninger og login for udbydere.
+
+```bash
+opencode auth [command]
+```
+
+---
+
+#### login
+
+OpenCode drives af udbyderlisten på [Models.dev](https://models.dev), så du kan bruge `opencode auth login` til at konfigurere API nøgler for enhver udbyder, du vil bruge. Dette er gemt i `~/.local/share/opencode/auth.json`.
+
+```bash
+opencode auth login
+```
+
+Når OpenCode starter op, indlæser den udbyderne fra legitimationsfilen. Og hvis der er nogen nøgler defineret i dine miljøer eller en `.env` fil i dit projekt.
+
+---
+
+#### liste
+
+Viser alle de godkendte udbydere som gemt i legitimationsfilen.
+
+```bash
+opencode auth list
+```
+
+Eller den korte version.
+
+```bash
+opencode auth ls
+```
+
+---
+
+#### log ud
+
+Logger dig ud af en udbyder ved at rydde den fra legitimationsfilen.
+
+```bash
+opencode auth logout
+```
+
+---
+
+### github
+
+Administrator GitHub-agenten til lagerautomatisering.
+
+```bash
+opencode github [command]
+```
+
+---
+
+#### installationsprogram
+
+Installatør GitHub-agenten i dit lager.
+
+```bash
+opencode github install
+```
+
+Dette opsætter det nødvendige GitHub Actions workflow og guider dig gennem konfigurationsprocessen. [Learn more](/docs/github).
+
+---
+
+#### løb
+
+Kør GitHub-agenten. Dette bruges typisk i GitHub Actions.
+
+```bash
+opencode github run
+```
+
+##### Flag
+
+| Flag | Beskrivelse |
+| --------- | ---------------------------------------------- |
+| `--event` | GitHub mock begivenhed for at køre agenten for |
+| `--token` | GitHub personlig adgangstoken |
+
+---
+
+### mcp
+
+Administrator Model Context Protocol-servere.
+
+```bash
+opencode mcp [command]
+```
+
+---
+
+#### tilføje
+
+Tilføj en MCP-server til din konfiguration.
+
+```bash
+opencode mcp add
+```
+
+Denne kommando vil guide dig gennem tilføjelse af enten en lokal eller ekstern MCP-server.
+
+---
+
+#### liste
+
+Liste over alle konfigurerede MCP-servere og deres forbindelsesstatus.
+
+```bash
+opencode mcp list
+```
+
+Eller brug den korte version.
+
+```bash
+opencode mcp ls
+```
+
+---
+
+#### auth
+
+Godkendt med en OAuth-aktiveret MCP-server.
+
+```bash
+opencode mcp auth [name]
+```
+
+Hvis du ikke angiver et servernavn, bliver du bedt om at vælge blandt tilgængelige OAuth-kompatible servere.
+
+Du kan også angive OAuth-kompatible servere og deres godkendelsesstatus.
+
+```bash
+opencode mcp auth list
+```
+
+Eller brug den korte version.
+
+```bash
+opencode mcp auth ls
+```
+
+---
+
+#### log ud
+
+Fjern OAuth-legitimationsoplysninger for en MCP-server.
+
+```bash
+opencode mcp logout [name]
+```
+
+---
+
+#### fejlretning
+
+Fejlfinding af OAuth-forbindelsesproblemer for en MCP-server.
+
+```bash
+opencode mcp debug
+```
+
+---
+
+### modeller
+
+Liste over alle tilgængelige modeller fra konfigurerede udbydere.
+
+```bash
+opencode models [provider]
+```
+
+Denne kommando viser alle tilgængelige modeller på tværs af dine konfigurerede udbydere i formatet `provider/model`.
+
+Dette er nyttigt til at finde ud af det nøjagtige modelnavn, der skal bruges i [your config](/docs/config/).
+
+Du kan eventuelt videregive et udbyder-id for at filtrere modeller efter den udbyder.
+
+```bash
+opencode models anthropic
+```
+
+#### Flag
+
+| Flag | Beskrivelse |
+| ----------- | ----------------------------------------------------------------------- |
+| `--refresh` | Opdater modelcachen fra models.dev |
+| `--verbose` | Brug mere detaljeret modeloutput (inkluderer metadata som omkostninger) |
+
+Brug flaget `--refresh` til at opdatere den cachelagrede modelliste. Dette er nyttigt, når nye modeller er blevet tilføjet til en udbyder, og du vil se dem i OpenCode.
+
+```bash
+opencode models --refresh
+```
+
+---
+
+### løb
+
+Kør opencode i ikke-interaktiv tilstand ved at sende en prompt direkte.
+
+```bash
+opencode run [message..]
+```
+
+Dette er nyttigt til scripting, automatisering, eller når du vil have et hurtigt svar uden at starte hele TUI. F.eks.
+
+```bash "opencode run"
+opencode run Explain the use of context in Go
+```
+
+Du kan også vedhæfte til en kørende `opencode serve`-instans for at undgå MCP serverens kolde opstartstider ved hver kørsel:
+
+```bash
+# Start a headless server in one terminal
+opencode serve
+
+# In another terminal, run commands that attach to it
+opencode run --attach http://localhost:4096 "Explain async/await in JavaScript"
+```
+
+#### Flag
+
+| Flag | Kort | Beskrivelse |
+| ------------ | ---- | ----------------------------------------------------------------------------------- |
+| `--command` | | Kommandoen til at køre, brug besked til args |
+| `--continue` | `-c` | Fortsæt sidste session |
+| `--session` | `-s` | Sessions-id for at fortsætte |
+| `--share` | | Del sessionen |
+| `--model` | `-m` | Model til brug i form af provider/model |
+| `--agent` | | Agent til brug |
+| `--file` | `-f` | Fil(er), der skal vedhæftes til meddelelsen |
+| `--format` | | Format: standard (formateret) eller json (rå JSON hændelser) |
+| `--title` | | Titel for sessionen (bruger trunkeret prompt, hvis der ikke er angivet nogen værdi) |
+| `--attach` | | Tilslut til en kørende opencode-server (f.eks. http://localhost:4096) |
+| `--port` | | Port til den lokale server (standard til vilkårlig port) |
+
+---
+
+### server
+
+Start en hovedløs OpenCode-server til API-adgang. Tjek [server docs](/docs/server) for den fulde HTTP-grænseflade.
+
+```bash
+opencode serve
+```
+
+Dette starter en HTTP-server, der giver API-adgang til opencode-funktionalitet uden TUI-grænsefladen. Indstil `OPENCODE_SERVER_PASSWORD` for at aktivere HTTP grundlæggende godkendelse (brugernavn er standard til `opencode`).
+
+#### Flag
+
+| Flag | Beskrivelse |
+| ------------ | ------------------------------------------------ |
+| `--port` | Port at lytte på |
+| `--hostname` | Værtsnavn at lytte på |
+| `--mdns` | Aktiver mDNS-opdagelse |
+| `--cors` | Yderligere browseroprindelse til at tillade CORS |
+
+---
+
+### session
+
+Administrator OpenCode sessionsholder.
+
+```bash
+opencode session [command]
+```
+
+---
+
+#### liste
+
+Liste over alle OpenCode sessioner.
+
+```bash
+opencode session list
+```
+
+##### Flag
+
+| Flag | Kort | Beskrivelse |
+| ------------- | ---- | -------------------------------------- |
+| `--max-count` | `-n` | Begræns til N seneste sessioner |
+| `--format` | | Outputformat: tabel eller json (tabel) |
+
+---
+
+### statistik
+
+Vis tokenbrug og omkostningsstatistikker for dine OpenCode-sessioner.
+
+```bash
+opencode stats
+```
+
+#### Flag
+
+| Flag | Beskrivelse |
+| ----------- | --------------------------------------------------------------------------- |
+| `--days` | Vis statistik for de sidste N dage (hele tiden) |
+| `--tools` | Antal værktøjer, der skal vises (alle) |
+| `--models` | Vis modelbrugsopdeling (skjult som standard). Send et tal for at vise top N |
+| `--project` | Filtre efter projekt (alle projekter, tom streng: nuværende projekt) |
+
+---
+
+### eksport
+
+Eksporter sessionsdata som JSON.
+
+```bash
+opencode export [sessionID]
+```
+
+Hvis du ikke angiver et sessions-id, bliver du bedt om at vælge mellem tilgængelige sessioner.
+
+---
+
+### import
+
+Importer sessionsdata fra en JSON fil eller OpenCode del URL.
+
+```bash
+opencode import
+```
+
+Du kan importere fra en lokal fil eller en OpenCode share URL.
+
+```bash
+opencode import session.json
+opencode import https://opncd.ai/s/abc123
+```
+
+---
+
+### web
+
+Start en hovedløs OpenCode-server med en webgrænseflade.
+
+```bash
+opencode web
+```
+
+Dette starter en HTTP-server og åbner en webbrowser for at få adgang til OpenCode via en webgrænseflade. Indstil `OPENCODE_SERVER_PASSWORD` for at aktivere HTTP grundlæggende godkendelse (brugernavn er standard til `opencode`).
+
+#### Flag
+
+| Flag | Beskrivelse |
+| ------------ | ------------------------------------------------ |
+| `--port` | Port at lytte på |
+| `--hostname` | Værtsnavn at lytte på |
+| `--mdns` | Aktiver mDNS-opdagelse |
+| `--cors` | Yderligere browseroprindelse til at tillade CORS |
+
+---
+
+### acp
+
+Start en ACP-server (Agent Client Protocol).
+
+```bash
+opencode acp
+```
+
+Denne kommando starter en ACP-server, der kommunikerer via stdin/stdout ved hjælp af nd-JSON.
+
+#### Flag
+
+| Flag | Beskrivelse |
+| ------------ | --------------------- |
+| `--cwd` | Arbejdsmappe |
+| `--port` | Port at lytte på |
+| `--hostname` | Værtsnavn at lytte på |
+
+---
+
+### afinstaller
+
+Afinstaller OpenCode og fjern alle relaterede filer.
+
+```bash
+opencode uninstall
+```
+
+#### Flag
+
+| Flag | Kort | Beskrivelse |
+| --------------- | ---- | ------------------------------------------------ |
+| `--keep-config` | `-c` | Se konfigurationsfiler |
+| `--keep-data` | `-d` | Gem sessionsdata og snapshots |
+| `--dry-run` | | Vis, hvad der ville blive fjernet uden at fjerne |
+| `--force` | `-f` | Spring bekræftelsesspørgsmål over |
+
+---
+
+###opgradering
+
+Opdaterer opencode til den seneste version eller en specifik version.
+
+```bash
+opencode upgrade [target]
+```
+
+For at opgradere til den nyeste version.
+
+```bash
+opencode upgrade
+```
+
+For at opgradere til en bestemt version.
+
+```bash
+opencode upgrade v0.1.48
+```
+
+#### Flag
+
+| Flag | Kort | Beskrivelse |
+| ---------- | ---- | -------------------------------------------------------------------- |
+| `--method` | `-m` | Installationsmetoden, der blev brugt; krølle, npm, pnpm, bolle, bryg |
+
+---
+
+## Globalt flag
+
+opencode CLI tager følgende globale flag.
+
+| Flag | Kort | Beskrivelse |
+| -------------- | ---- | --------------------------------------- |
+| `--help` | `-h` | Vis hjælp |
+| `--version` | `-v` | Udskriftsversionsnummer |
+| `--print-logs` | | Udskriv logfiler til stderr |
+| `--log-level` | | Logniveau (DEBUG, INFO, ADVARSEL, FEJL) |
+
+---
+
+## Miljøvariabler
+
+OpenCode kan konfigureres ved hjælp af miljøvariabler.
+
+| Variabel | Skriv | Beskrivelse |
+| ------------------------------------- | ------ | --------------------------------------------------------------------- |
+| `OPENCODE_AUTO_SHARE` | boolsk | Del automatisk session |
+| `OPENCODE_GIT_BASH_PATH` | styrke | Sti til Git Bash eksekverbar på Windows |
+| `OPENCODE_CONFIG` | styrke | Sti til konfigurationsfil |
+| `OPENCODE_CONFIG_DIR` | styrke | Sti til konfigurationsmappe |
+| `OPENCODE_CONFIG_CONTENT` | styrke | Indbygget json-konfigurationsindhold |
+| `OPENCODE_DISABLE_AUTOUPDATE` | boolsk | Deaktiver automatisk opdateringskontrol |
+| `OPENCODE_DISABLE_PRUNE` | boolsk | Deaktiver beskæring af gamle data |
+| `OPENCODE_DISABLE_TERMINAL_TITLE` | boolsk | Deaktiver automatisk opdatering af terminaltitel |
+| `OPENCODE_PERMISSION` | styrke | Indbygget json-tilladelseskonfiguration |
+| `OPENCODE_DISABLE_DEFAULT_PLUGINS` | boolsk | Deaktiver standard plugins |
+| `OPENCODE_DISABLE_LSP_DOWNLOAD` | boolsk | Deaktiver automatisk LSP-serverdownloads |
+| `OPENCODE_ENABLE_EXPERIMENTAL_MODELS` | boolsk | Aktive eksperimentelle modeller |
+| `OPENCODE_DISABLE_AUTOCOMPACT` | boolsk | Deaktiver automatisk kontekstkomprimering |
+| `OPENCODE_DISABLE_CLAUDE_CODE` | boolsk | Deaktiver læsning fra `.claude` (prompt + færdigheder) |
+| `OPENCODE_DISABLE_CLAUDE_CODE_PROMPT` | boolsk | Deaktiver læsning `~/.claude/CLAUDE.md` |
+| `OPENCODE_DISABLE_CLAUDE_CODE_SKILLS` | boolsk | Deaktiver indlæsning af `.claude/skills` |
+| `OPENCODE_DISABLE_MODELS_FETCH` | boolsk | Deaktivering af modeller fra eksterne kilder |
+| `OPENCODE_FAKE_VCS` | styrke | Falsk VCS-udbyder til testformål |
+| `OPENCODE_DISABLE_FILETIME_CHECK` | boolsk | Deaktiver filtidskontrol for optimering |
+| `OPENCODE_CLIENT` | styrke | Klient-id (standard til `cli`) |
+| `OPENCODE_ENABLE_EXA` | boolsk | Aktiver Exa-websøgeværktøjer |
+| `OPENCODE_SERVER_PASSWORD` | styrke | Aktiver grundlæggende godkendelse for `serve`/`web` |
+| `OPENCODE_SERVER_USERNAME` | styrke | Tilsidesæt grundlæggende godkendelsesbrugernavn (standard `opencode`) |
+| `OPENCODE_MODELS_URL` | styrke | Brugerdefineret URL til hentning af modelkonfiguration |
+
+---
+
+### Eksperimentel
+
+Disse miljøvariabler muliggør eksperimentelle funktioner, der kan ændres eller fjernes.
+
+| Variabel | Skriv | Beskrivelse |
+| ----------------------------------------------- | ------ | ------------------------------------------ |
+| `OPENCODE_EXPERIMENTAL` | boolsk | Aktiver alle eksperimentelle funktioner |
+| `OPENCODE_EXPERIMENTAL_ICON_DISCOVERY` | boolsk | Aktiver ikonopdagelse |
+| `OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT` | boolsk | Deaktiver kopi ved valg i TUI |
+| `OPENCODE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS` | nummer | Standard timeout for bash-kommandoer i ms |
+| `OPENCODE_EXPERIMENTAL_OUTPUT_TOKEN_MAX` | nummer | Maks. output-tokens for LLM-svar |
+| `OPENCODE_EXPERIMENTAL_FILEWATCHER` | boolsk | Aktiver filovervågning for hele dir |
+| `OPENCODE_EXPERIMENTAL_OXFMT` | boolsk | Aktiver oxfmt formatter |
+| `OPENCODE_EXPERIMENTAL_LSP_TOOL` | boolsk | Aktive eksperimenter LSP værktøj |
+| `OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER` | boolsk | Deaktiver filovervågning |
+| `OPENCODE_EXPERIMENTAL_EXA` | boolsk | Aktive eksperimenter Exa-funktioner |
+| `OPENCODE_EXPERIMENTAL_LSP_TY` | boolsk | Aktive forsøg LSP typekontrol |
+| `OPENCODE_EXPERIMENTAL_MARKDOWN` | boolsk | Aktive eksperimentelle markdown-funktioner |
+| `OPENCODE_EXPERIMENTAL_PLAN_MODE` | boolsk | Aktiver plantilstand |
diff --git a/packages/web/src/content/docs/da/commands.mdx b/packages/web/src/content/docs/da/commands.mdx
new file mode 100644
index 000000000..89a02082c
--- /dev/null
+++ b/packages/web/src/content/docs/da/commands.mdx
@@ -0,0 +1,323 @@
+---
+title: Kommandoer
+description: Opret brugerdefinerede kommandoer til gentagne opgaver.
+---
+
+Brugerdefinerede kommandoer giver mulighed for at angive en prompt, du vil køre, når denne kommando udføres i TUI.
+
+```bash frame="none"
+/my-command
+```
+
+Brugerdefinerede kommandoer er ud over de indbyggede kommandoer som `/init`, `/undo`, `/redo`, `/share`, `/help`. [Learn more](/docs/tui#commands).
+
+---
+
+## Opret kommandofiler
+
+Opret markdown-filer i mappen `commands/` for at definere brugerdefinerede kommandoer.
+
+Opret `.opencode/commands/test.md`:
+
+```md title=".opencode/commands/test.md"
+---
+description: Run tests with coverage
+agent: build
+model: anthropic/claude-3-5-sonnet-20241022
+---
+
+Run the full test suite with coverage report and show any failures.
+Focus on the failing tests and suggest fixes.
+```
+
+Frontmatter definerer kommandoegenskaber. Indholdet bliver skabelonen.
+
+Brug kommandoen ved at skrive `/` efterfulgt af kommandonavnet.
+
+```bash frame="none"
+"/test"
+```
+
+---
+
+## Konfigurer
+
+Du kan tilføje brugerdefinerede kommandoer gennem OpenCode-konfigurationen eller ved at oprette markdown-filer i `commands/`-mappen.
+
+---
+
+### JSON
+
+Brug indstillingerne `command` i din OpenCode [config](/docs/config):
+
+```json title="opencode.jsonc" {4-12}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "command": {
+ // This becomes the name of the command
+ "test": {
+ // This is the prompt that will be sent to the LLM
+ "template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes.",
+ // This is shown as the description in the TUI
+ "description": "Run tests with coverage",
+ "agent": "build",
+ "model": "anthropic/claude-3-5-sonnet-20241022"
+ }
+ }
+}
+```
+
+Nu kan du køre denne kommando i TUI:
+
+```bash frame="none"
+/test
+```
+
+---
+
+### Markdown
+
+Du kan også definere kommandoer ved hjælp af markdown-filer. Placer dem i:
+
+- Globalt: `~/.config/opencode/commands/`
+- Pr. projekt: `.opencode/commands/`
+
+```markdown title="~/.config/opencode/commands/test.md"
+---
+description: Run tests with coverage
+agent: build
+model: anthropic/claude-3-5-sonnet-20241022
+---
+
+Run the full test suite with coverage report and show any failures.
+Focus on the failing tests and suggest fixes.
+```
+
+Markdown-filnavnet bliver kommandonavnet. For eksempel lader `test.md`
+du løber:
+
+```bash frame="none"
+/test
+```
+
+---
+
+## Spørg config
+
+Spørgsmålene til de brugerdefinerede kommandoer understøtter flere specielle pladsholdere og syntaks.
+
+---
+
+### Argumenter
+
+Send argumenter til kommandoer ved hjælp af pladsholderen `$ARGUMENTS`.
+
+```md title=".opencode/commands/component.md"
+---
+description: Create a new component
+---
+
+Create a new React component named $ARGUMENTS with TypeScript support.
+Include proper typing and basic structure.
+```
+
+Kør kommandoen med argumenter:
+
+```bash frame="none"
+/component Button
+```
+
+Og `$ARGUMENTS` vil blive erstattet med `Button`.
+
+Du kan også få adgang til individuelle argumenter ved hjælp af positionelle parametre:
+
+- `$1` - Første argument
+- `$2` - Andet argument
+- `$3` - Tredje argument
+- Og så videre...
+
+For eksempel:
+
+```md title=".opencode/commands/create-file.md"
+---
+description: Create a new file with content
+---
+
+Create a file named $1 in the directory $2
+with the following content: $3
+```
+
+Kør kommandoen:
+
+```bash frame="none"
+/create-file config.json src "{ \"key\": \"value\" }"
+```
+
+Dette erstatter:
+
+- `$1` med `config.json`
+- `$2` med `src`
+- `$3` med `{ "key": "value" }`
+
+---
+
+### Shell-output
+
+Brug _!`command`_ til at injicere [bash command](/docs/tui#bash-commands) output i din prompt.
+
+For eksempel, for at oprette en brugerdefineret kommando, der analyserer testdækning:
+
+```md title=".opencode/commands/analyze-coverage.md"
+---
+description: Analyze test coverage
+---
+
+Here are the current test results:
+!`npm test`
+
+Based on these results, suggest improvements to increase coverage.
+```
+
+Eller for at gennemgå de seneste ændringer:
+
+```md title=".opencode/commands/review-changes.md"
+---
+description: Review recent changes
+---
+
+Recent git commits:
+!`git log --oneline -10`
+
+Review these changes and suggest any improvements.
+```
+
+Kommandoer kører i dit projekts rodmappe, og deres output bliver en del af prompten.
+
+---
+
+### Filreferencer
+
+Inkluder filer i din kommando ved hjælp af `@` efterfulgt af filnavnet.
+
+```md title=".opencode/commands/review-component.md"
+---
+description: Review component
+---
+
+Review the component in @src/components/Button.tsx.
+Check for performance issues and suggest improvements.
+```
+
+Filindholdet bliver automatisk integreret i prompten.
+
+---
+
+## Indstillinger
+
+Lad os se nærmere på konfigurationsmulighederne.
+
+---
+
+### Skabelon
+
+Indstillingen `template` definerer den prompt, der sendes til LLM, når kommandoen udføres.
+
+```json title="opencode.json"
+{
+ "command": {
+ "test": {
+ "template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes."
+ }
+ }
+}
+```
+
+Dette er en **påkrævet** konfigurationsindstilling.
+
+---
+
+### Beskrivelse
+
+Brug indstillingen `description` til at give en kort beskrivelse af, hvad kommandoen gør.
+
+```json title="opencode.json"
+{
+ "command": {
+ "test": {
+ "description": "Run tests with coverage"
+ }
+ }
+}
+```
+
+Dette vises som beskrivelsen i TUI, når du indtaster kommandoen.
+
+---
+
+### Agent
+
+Brug `agent`-konfigurationen til valgfrit at angive, hvilken [agent](/docs/agents) der skal udføre denne kommando.
+Hvis dette er en [subagent](/docs/agents/#subagents), vil kommandoen som standard udløse en subagent påkaldelse.
+For at deaktivere denne adfærd skal du indstille `subtask` til `false`.
+
+```json title="opencode.json"
+{
+ "command": {
+ "review": {
+ "agent": "plan"
+ }
+ }
+}
+```
+
+Dette er en **valgfri** konfigurationsindstilling. Hvis det ikke er angivet, er standarden din nuværende agent.
+
+---
+
+### Underopgave
+
+Brug `subtask` boolean til at tvinge kommandoen til at udløse en [subagent](/docs/agents/#subagents) påkaldelse.
+Dette er nyttigt, hvis du ønsker, at kommandoen ikke skal forurene din primære kontekst og vil **tvinge** agenten til at fungere som en underagent,
+øjeblikkelig `mode` er sat til `primary` på [agent](/docs/agents) konfigurationen.
+
+```json title="opencode.json"
+{
+ "command": {
+ "analyze": {
+ "subtask": true
+ }
+ }
+}
+```
+
+Dette er en **valgfri** konfigurationsindstilling.
+
+---
+
+### Model
+
+Brug `model`-konfigurationen til at tilsidesætte standardmodellen for denne kommando.
+
+```json title="opencode.json"
+{
+ "command": {
+ "analyze": {
+ "model": "anthropic/claude-3-5-sonnet-20241022"
+ }
+ }
+}
+```
+
+Dette er en **valgfri** konfigurationsindstilling.
+
+---
+
+## Indbygget
+
+opencode indeholder flere indbyggede kommandoer som `/init`, `/undo`, `/redo`, `/share`, `/help`; [learn more](/docs/tui#commands).
+
+:::note
+Brugerdefinerede kommandoer kan tilsidesætte indbyggede kommandoer.
+:::
+
+Hvis du definerer en brugerdefineret kommando med samme navn, vil den tilsidesætte den indbyggede kommando.
diff --git a/packages/web/src/content/docs/da/config.mdx b/packages/web/src/content/docs/da/config.mdx
new file mode 100644
index 000000000..cc2770822
--- /dev/null
+++ b/packages/web/src/content/docs/da/config.mdx
@@ -0,0 +1,685 @@
+---
+title: Konfig
+description: Ved at bruge OpenCode JSON konfig.
+---
+
+Du kan konfigurere OpenCode ved hjælp af en JSON-konfigurationsfil.
+
+---
+
+## Format
+
+OpenCode understøtter både **JSON** og **JSONC** (JSON med kommentarer) formater.
+
+```jsonc title="opencode.jsonc"
+{
+ "$schema": "https://opencode.ai/config.json",
+ // Theme configuration
+ "theme": "opencode",
+ "model": "anthropic/claude-sonnet-4-5",
+ "autoupdate": true,
+}
+```
+
+---
+
+## Steder
+
+Du kan placere din konfiguration et par forskellige steder, og de har en
+forskellig rækkefølge.
+
+:::note
+Konfigurationsfiler **flettes sammen**, erstattes ikke.
+:::
+
+Konfigurationsfiler flettes sammen, erstattes ikke. Indstillinger fra følgende konfigurationssteder kombineret. Senere konfigurationer tilsidesætter kun tidligere konfigurationer for modstridende nøgler. Ikke-modstridende indstillinger fra alle konfigurationer bevares.
+
+For eksempel, hvis dine globale konfigurationssæt `theme: "opencode"` og `autoupdate: true`, og dine projektkonfigurationssæt `model: "anthropic/claude-sonnet-4-5"`, vil den endelige konfiguration integrere alle tre indstillinger.
+
+---
+
+### Prioritetsrækkefølge
+
+Konfigurationskilder indlæses i denne rækkefølge (senere kilder tilsidesætter tidligere):
+
+1. **Fjernkonfiguration** (fra `.well-known/opencode`) - organisatoriske standardindstillinger
+2. **Global config** (`~/.config/opencode/opencode.json`) - brugerpræferencer
+3. **Tilpasset konfiguration** (`OPENCODE_CONFIG` env var) - tilpassede tilsidesættelser
+4. **Project config** (`opencode.json` i projekt) - projektspecifikke indstillinger
+5. **`.opencode` mapper** - agent, kommandoer, plugins
+6. **Inline config** (`OPENCODE_CONFIG_CONTENT` env var) - runtime tilsidesættelser
+
+Dette betyder, at projektkonfigurationer kan tilsidesætte globale standardindstillinger, og globale konfigurationer kan tilsidesætte eksterne organisatoriske standarder.
+
+:::note
+`.opencode` og `~/.config/opencode` bibliotekerne bruger **flertalsnavne** for undermapper: `agents/`, `commands/`, `modes/`, `plugins/`, `skills/`, `tools/` og `themes/`. Enkelte navne (f.eks. `agent/`) understøtter også bagudkompatibilitet.
+:::
+
+---
+
+### Fjernbetjening
+
+Organisationer kan levere standardkonfiguration via `.well-known/opencode`-slutpunktet. Dette hentes automatisk, når du godkender med en udbyder, der understøtter det.
+
+Remote config indlæses først og fungerer som basislaget. Alle andre konfigurationskilder (global, projekt) kan tilsidesætte disse standardindstillinger.
+
+Hvis din organisation f.eks. leverer MCP-servere, der er deaktiveret som standard:
+
+```json title="Remote config from .well-known/opencode"
+{
+ "mcp": {
+ "jira": {
+ "type": "remote",
+ "url": "https://jira.example.com/mcp",
+ "enabled": false
+ }
+ }
+}
+```
+
+Du kan aktivere specifikke servere i din lokale konfiguration:
+
+```json title="opencode.json"
+{
+ "mcp": {
+ "jira": {
+ "type": "remote",
+ "url": "https://jira.example.com/mcp",
+ "enabled": true
+ }
+ }
+}
+```
+
+---
+
+### Global
+
+Placer din globale OpenCode-konfiguration i `~/.config/opencode/opencode.json`. Brug global konfiguration til brugerdækkende præferencer som temaer, udbydere eller nøglebindinger.
+
+Global config tilsidesætter eksterne organisatoriske standarder.
+
+---
+
+### Pr. projekt
+
+Tilføj `opencode.json` i dit projektrod. Project config har den højeste forrang blandt standard config-filer - den tilsidesætter både globale og eksterne config.
+
+:::tip
+Placer projektspecifik konfiguration i roden af dit projekt.
+:::
+
+Når OpenCode starter op, søger den efter en konfigurationsfil i det aktuelle kort eller går op til den nærmeste Git-mappe.
+
+Dette er også sikkert at blive tjekket ind i Git og bruger det samme skema som det globale.
+
+---
+
+### Brugerdefineret sti
+
+Angiv en brugerdefineret konfigurationsfilsti ved hjælp af miljøvariablen `OPENCODE_CONFIG`.
+
+```bash
+export OPENCODE_CONFIG=/path/to/my/custom-config.json
+opencode run "Hello world"
+```
+
+Brugerdefineret konfigurationsindlæses mellem globale konfigurationer og projektkonfigurationer i prioriteret rækkefølge.
+
+---
+
+### Brugerdefineret bibliotek
+
+Angiv en brugerdefineret konfigurationsmappe ved hjælp af `OPENCODE_CONFIG_DIR`
+miljøvariabel. Dette kort vil blive søgt efter agenter, kommandoer,
+modes og plugins ligesom standard `.opencode` biblioteket, og bør
+følge samme struktur.
+
+```bash
+export OPENCODE_CONFIG_DIR=/path/to/my/config-directory
+opencode run "Hello world"
+```
+
+Den brugerdefinerede map indlæses efter den globale konfig og `.opencode` mapper, så den **kan tilsidesætte** deres indstillinger.
+
+---
+
+## Skema
+
+Konfigurationsfilen har et skema, der defineres i [**`opencode.ai/config.json`**](https://opencode.ai/config.json).
+
+Din editor skal være i stand til at validere og autofuldføre baseret på skemaet.
+
+---
+
+### TUI
+
+Du kan konfigurere TUI-specifikke indstillinger gennem indstillingen `tui`.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "tui": {
+ "scroll_speed": 3,
+ "scroll_acceleration": {
+ "enabled": true
+ },
+ "diff_style": "auto"
+ }
+}
+```
+
+Tilgængelige muligheder:
+
+- `scroll_acceleration.enabled` - Aktiver macOS-stil rulleacceleration. **Har forrang frem for `scroll_speed`.**
+- `scroll_speed` - Brugerdefineret rullehastighedsmultiplikator (standard: `3`, minimum: `1`). Ignoreres, hvis `scroll_acceleration.enabled` er `true`.
+- `diff_style` - Kontroller diff-gengivelse. `"auto"` tilpasser sig terminalbredden, `"stacked"` viser altid en enkelt kolonne.
+
+[Learn more about using the TUI here](/docs/tui).
+
+---
+
+### Server
+
+Du kan konfigurere serverindstillinger for kommandoerne `opencode serve` og `opencode web` gennem indstillingen `server`.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "server": {
+ "port": 4096,
+ "hostname": "0.0.0.0",
+ "mdns": true,
+ "mdnsDomain": "myproject.local",
+ "cors": ["http://localhost:5173"]
+ }
+}
+```
+
+Tilgængelige muligheder:
+
+- `port` - Port til at lytte på.
+- `hostname` - Værtsnavn at lytte på. Når `mdns` er aktiveret, og der ikke er angivet noget værtsnavn, er standarden `0.0.0.0`.
+- `mdns` - Aktiver mDNS-tjenesteopdagelse. Dette gør det muligt for andre enheder på netværket at opdage din OpenCode-server.
+- `mdnsDomain` - Brugerdefineret domænenavn til mDNS-tjeneste. Som standard er `opencode.local`. Nyttigt til at køre flere forekomster på det samme netværk.
+- `cors` - Yderligere oprindelser for at tillade CORS ved brug af HTTP-serveren fra en browserbaseret klient. Værdier skal være fulde oprindelser (skema + vært + valgfri port), f.eks. `https://app.example.com`.
+
+[Learn more about the server here](/docs/server).
+
+---
+
+### Værktøjer
+
+Du kan administrere de værktøjer, en LLM kan bruge, gennem indstillingen `tools`.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "tools": {
+ "write": false,
+ "bash": false
+ }
+}
+```
+
+[Learn more about tools here](/docs/tools).
+
+---
+
+### Modeller
+
+Du kan konfigurere de udbydere og modeller, du vil bruge i din OpenCode-konfiguration, gennem mulighederne `provider`, `model` og `small_model`.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {},
+ "model": "anthropic/claude-sonnet-4-5",
+ "small_model": "anthropic/claude-haiku-4-5"
+}
+```
+
+Indstillingen `small_model` konfigurerer en separat model til lette opgaver som titelgenerering. Som standard forsøger OpenCode at bruge en billigere model, hvis en er tilgængelig fra din udbyder, ellers falder den tilbage til din hovedmodel.
+
+Udbydermuligheder kan omfatte `timeout` og `setCacheKey`:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "anthropic": {
+ "options": {
+ "timeout": 600000,
+ "setCacheKey": true
+ }
+ }
+ }
+}
+```
+
+- `timeout` - Anmodningstimeout i millisekunder (standard: 300000). Indstil til `false` for at deaktivere.
+- `setCacheKey` - Sørg for, at en cache-nøgle altid er indstillet til den udpegede udbyder.
+
+Du kan også konfigurere [local models](/docs/models#local). [Learn more](/docs/models).
+
+---
+
+#### Udbyder-specifikke muligheder
+
+Nogle udbydere understøtter yderligere konfigurationsmuligheder ud over de generiske `timeout` og `apiKey` indstillinger.
+
+##### Amazonas grundfjeld
+
+Amazon Bedrock understøtter AWS-specifik konfiguration:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "amazon-bedrock": {
+ "options": {
+ "region": "us-east-1",
+ "profile": "my-aws-profile",
+ "endpoint": "https://bedrock-runtime.us-east-1.vpce-xxxxx.amazonaws.com"
+ }
+ }
+ }
+}
+```
+
+- `region` - AWS region for grundfjeld (standard til `AWS_REGION` env var eller `us-east-1`)
+- `profile` - AWS navngivet profil fra `~/.aws/credentials` (standard til `AWS_PROFILE` env var)
+- `endpoint` - Brugerdefineret slutpunkt URL for VPC-endepunkter. Dette er et alias for den generiske `baseURL`-indstilling, der bruger AWS-specifik terminologi. Hvis begge er angivet, har `endpoint` forrang.
+
+:::note
+Bærer-tokens (`AWS_BEARER_TOKEN_BEDROCK` eller `/connect`) har forrang over profilbaseret godkendelse. Se [authentication precedence](/docs/providers#authentication-precedence) for detaljer.
+:::
+
+[Learn more about Amazon Bedrock configuration](/docs/providers#amazon-bedrock).
+
+---
+
+### Temaer
+
+Du kan konfigurere det tema, du vil bruge i din OpenCode-konfiguration, gennem indstillingen `theme`.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "theme": ""
+}
+```
+
+[Learn more here](/docs/themes).
+
+---
+
+### Agent
+
+Du kan konfigurere opgaver specialiserede agenter til specifikke indstillinger gennem indstillingen `agent`.
+
+```jsonc title="opencode.jsonc"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "agent": {
+ "code-reviewer": {
+ "description": "Reviews code for best practices and potential issues",
+ "model": "anthropic/claude-sonnet-4-5",
+ "prompt": "You are a code reviewer. Focus on security, performance, and maintainability.",
+ "tools": {
+ // Disable file modification tools for review-only agent
+ "write": false,
+ "edit": false,
+ },
+ },
+ },
+}
+```
+
+Du kan også definere agenter ved at bruge markdown-filer i `~/.config/opencode/agents/` eller `.opencode/agents/`. [Learn more here](/docs/agents).
+
+---
+
+### Standardagent
+
+Du kan indstille standardagenten ved at bruge indstillingen `default_agent`. Dette bestemmer, hvilken agent der bruges, når ingen er eksplicit angivet.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "default_agent": "plan"
+}
+```
+
+Standardagenten skal være en primær agent (ikke en subagent). Dette kan være en indbygget agent som `"build"` eller `"plan"`, eller en [custom agent](/docs/agents), du har defineret. Hvis den angivne agent ikke eksisterer eller er en underagent, vil OpenCode falde tilbage til `"build"` med en advarsel.
+
+Denne indstilling gælder på tværs af alle grænseflader: TUI, CLI (`opencode run`), desktop-app og GitHub Action.
+
+---
+
+### Deling
+
+Du kan konfigurere funktionen [share](/docs/share) gennem indstillingen `share`.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "share": "manual"
+}
+```
+
+Dette kræver:
+
+- `"manual"` - Tillad manuel deling via kommandoer (standard)
+- `"auto"` - Del automatisk nye samtaler
+- `"disabled"` - Deaktiver deling helt
+
+Som standard er deling indstillet til manuel tilstand, hvor du eksplicit skal dele samtaler ved hjælp af kommandoen `/share`.
+
+---
+
+### Kommandoer
+
+Du kan konfigurere brugerdefinerede kommandoer til gentagne opgaver gennem indstillingen `command`.
+
+```jsonc title="opencode.jsonc"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "command": {
+ "test": {
+ "template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes.",
+ "description": "Run tests with coverage",
+ "agent": "build",
+ "model": "anthropic/claude-haiku-4-5",
+ },
+ "component": {
+ "template": "Create a new React component named $ARGUMENTS with TypeScript support.\nInclude proper typing and basic structure.",
+ "description": "Create a new component",
+ },
+ },
+}
+```
+
+Du kan også definere kommandoer ved hjælp af markdown-filer i `~/.config/opencode/commands/` eller `.opencode/commands/`. [Learn more here](/docs/commands).
+
+---
+
+### Nøglebindinger
+
+Du kan tilpasse dine nøglebindinger gennem indstillingen `keybinds`.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "keybinds": {}
+}
+```
+
+[Learn more here](/docs/keybinds).
+
+---
+
+### Autoopdatering
+
+OpenCode vil automatisk downloade alle nye opdateringer, når den starter op. Du kan deaktivere dette med indstillingen `autoupdate`.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "autoupdate": false
+}
+```
+
+Hvis du ikke ønsker opdatering, men ønsker at blive underrettet, når en ny version er tilgængelig, skal du indstille `autoupdate` til `"notify"`.
+Bemærk, at dette kun virker, hvis det ikke blev installeret ved hjælp af en pakkehåndtering såsom Homebrew.
+
+---
+
+### Formatere
+
+Du kan konfigurere kodeformatere gennem indstillingen `formatter`.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "formatter": {
+ "prettier": {
+ "disabled": true
+ },
+ "custom-prettier": {
+ "command": ["npx", "prettier", "--write", "$FILE"],
+ "environment": {
+ "NODE_ENV": "development"
+ },
+ "extensions": [".js", ".ts", ".jsx", ".tsx"]
+ }
+ }
+}
+```
+
+[Learn more about formatters here](/docs/formatters).
+
+---
+
+### Tilladelser
+
+Som standard opencode **tillader alle operationer** uden at kræve eksplicit godkendelse. Du kan ændre dette ved at bruge indstillingen `permission`.
+
+For at sikre, at værktøjerne `edit` og `bash` for eksempel kræver brugergodkendelse:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "edit": "ask",
+ "bash": "ask"
+ }
+}
+```
+
+[Learn more about permissions here](/docs/permissions).
+
+---
+
+### Komprimering
+
+Du kan styre kontekstkomprimeringsadfærd gennem indstillingen `compaction`.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "compaction": {
+ "auto": true,
+ "prune": true
+ }
+}
+```
+
+- `auto` - Komprimer automatisk sessionen, når konteksten er fuld (standard: `true`).
+- `prune` - Fjern gamle værktøjsudgange for at gemme tokens (standard: `true`).
+
+---
+
+### Watcher
+
+Du kan konfigurere ignoreringsmønstre for filovervåger gennem indstillingen `watcher`.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "watcher": {
+ "ignore": ["node_modules/**", "dist/**", ".git/**"]
+ }
+}
+```
+
+Mønstre følger glob-syntaks. Brug dette til at udelukke støjende mapper fra filvisning.
+
+---
+
+### MCP servere
+
+Du kan konfigurere MCP-servere, som du vil bruge, gennem indstillingen `mcp`.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {}
+}
+```
+
+[Learn more here](/docs/mcp-servers).
+
+---
+
+### Plugins
+
+[Plugins](/docs/plugins) udvide OpenCode med brugerdefinerede værktøjer, kroge og integrationer.
+
+Placer plugin-filer i `.opencode/plugins/` eller `~/.config/opencode/plugins/`. Du kan også indlæse plugins fra npm gennem indstillingen `plugin`.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "plugin": ["opencode-helicone-session", "@my-org/custom-plugin"]
+}
+```
+
+[Learn more here](/docs/plugins).
+
+---
+
+### Instruktioner
+
+Du kan konfigurere brugervejledningen til den model, du kan gennem indstillingen `instructions`.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
+}
+```
+
+Dette kræver en række stier og globmønstre til instruktionsfiler. [Læs mere
+om regler her](/docs/rules).
+
+---
+
+### Deaktiverede udbydere
+
+Du kan deaktivere udbydere, der indlæses automatisk gennem `disabled_providers`-indstillingen. Dette er nyttigt, når du vil forhindre visse udbydere i at blive indlæst, deres legitimationsoplysninger er tilgængelige.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "disabled_providers": ["openai", "gemini"]
+}
+```
+
+:::note
+`disabled_providers` har prioritet over `enabled_providers`.
+:::
+
+Indstillingen `disabled_providers` accepterer en række udbyder-id'er. Når en udbyder er deaktiveret:
+
+- Det vil ikke blive indlæst, omgivelserne miljøvariabler er indstillet.
+- Den vil ikke blive indlæst, gennem API nøgler er konfigureret kommandoen `/connect`.
+- Udbyderens modeller vises ikke på modelvalgslisten.
+
+---
+
+### Aktiverede udbydere
+
+Du kan angive en tilladelsesliste over udbydere gennem muligheden `enabled_providers`. Når den er indstillet, vil kun de angivne udbydere blive aktiveret, og alle andre vil blive ignoreret.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "enabled_providers": ["anthropic", "openai"]
+}
+```
+
+Dette er nyttigt, når du vil begrænse OpenCode til kun at bruge specifikke udbydere i stedet for at deaktivere dem én efter én.
+
+:::note
+`disabled_providers` har prioritet over `enabled_providers`.
+:::
+
+Hvis en udbyder optræder i både `enabled_providers` og `disabled_providers`, har `disabled_providers` prioritet for bagudkompatibilitet.
+
+---
+
+### Eksperimentel
+
+Nøglen `experimental` indeholder muligheder, der er under aktiv udvikling.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "experimental": {}
+}
+```
+
+:::forsigtighed
+Eksperimentelle muligheder er ikke stabile. De kan ændres eller fjernes uden varsel.
+:::
+
+---
+
+## Variabel
+
+Du kan bruge variabelsubstitution i dine konfigurationsfiler til at referere til miljøvariabler og filindhold.
+
+---
+
+### Env vars
+
+Brug `{env:VARIABLE_NAME}` til at erstatte miljøvariabler:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "model": "{env:OPENCODE_MODEL}",
+ "provider": {
+ "anthropic": {
+ "models": {},
+ "options": {
+ "apiKey": "{env:ANTHROPIC_API_KEY}"
+ }
+ }
+ }
+}
+```
+
+Hvis miljøvariablen ikke er indstillet, vil den blive erstattet med en tom streng.
+
+---
+
+### Filer
+
+Brug `{file:path/to/file}` til at erstatte indholdet af en fil:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "instructions": ["./custom-instructions.md"],
+ "provider": {
+ "openai": {
+ "options": {
+ "apiKey": "{file:~/.secrets/openai-key}"
+ }
+ }
+ }
+}
+```
+
+Filstier kan være:
+
+- I forhold til konfigurationsfilbiblioteket
+- Eller absolutte stier, der starter med `/` eller `~`
+
+Disse er nyttige til:
+
+- Opbevaring af følsomme data som API nøgler i separate filer.
+- Inklusiv store instruktionsfiler uden at rode i din konfiguration.
+- Deling af fælles konfigurationsuddrag på tværs af flere konfigurationsfiler.
diff --git a/packages/web/src/content/docs/da/custom-tools.mdx b/packages/web/src/content/docs/da/custom-tools.mdx
new file mode 100644
index 000000000..b0839b649
--- /dev/null
+++ b/packages/web/src/content/docs/da/custom-tools.mdx
@@ -0,0 +1,170 @@
+---
+title: Brugerdefinerede værktøjer
+description: Opret værktøjer, som LLM kan kalde opencode ind.
+---
+
+Brugerdefinerede værktøjer er funktioner, du opretter, som LLM kan kalde under samtaler. De arbejder sammen med opencodes [built-in tools](/docs/tools) som `read`, `write` og `bash`.
+
+---
+
+## Oprettelse af et værktøj
+
+Værktøjer er defineret som **TypeScript**- eller **JavaScript**-filer. Værktøjsdefinitionen kan dog kalde scripts skrevet på **alle sprog** - TypeScript eller JavaScript bruges kun til selve værktøjsdefinitionen.
+
+---
+
+### Placering
+
+De kan definere:
+
+- Lokalt ved at placere dem i biblioteket `.opencode/tools/` i dit projekt.
+- Eller globalt ved at placere dem i `~/.config/opencode/tools/`.
+
+---
+
+### Struktur
+
+Den nemmeste måde at oprette værktøjer på er at bruge `tool()`-hjælperen, som giver typesikkerhed og validering.
+
+```ts title=".opencode/tools/database.ts" {1}
+import { tool } from "@opencode-ai/plugin"
+
+export default tool({
+ description: "Query the project database",
+ args: {
+ query: tool.schema.string().describe("SQL query to execute"),
+ },
+ async execute(args) {
+ // Your database logic here
+ return `Executed query: ${args.query}`
+ },
+})
+```
+
+**filnavnet** bliver **værktøjsnavnet**. Ovenstående opretter et `database` værktøj.
+
+---
+
+#### Flere værktøjer pr. fil
+
+Du kan også eksportere flere værktøjer fra en enkelt fil. Hver eksport bliver **et separat værktøj** med navnet **`_`**:
+
+```ts title=".opencode/tools/math.ts"
+import { tool } from "@opencode-ai/plugin"
+
+export const add = tool({
+ description: "Add two numbers",
+ args: {
+ a: tool.schema.number().describe("First number"),
+ b: tool.schema.number().describe("Second number"),
+ },
+ async execute(args) {
+ return args.a + args.b
+ },
+})
+
+export const multiply = tool({
+ description: "Multiply two numbers",
+ args: {
+ a: tool.schema.number().describe("First number"),
+ b: tool.schema.number().describe("Second number"),
+ },
+ async execute(args) {
+ return args.a * args.b
+ },
+})
+```
+
+Dette skaber værktøjer: `math_add` og `math_multiply`.
+
+---
+
+### Argumenter
+
+Du kan bruge `tool.schema`, som kun er [Zod](https://zod.dev), til at definere argumenttyper.
+
+```ts "tool.schema"
+args: {
+ query: tool.schema.string().describe("SQL query to execute")
+}
+```
+
+Du kan også importere [Zod](https://zod.dev) direkte og returnere et almindeligt objekt:
+
+```ts {6}
+import { z } from "zod"
+
+export default {
+ description: "Tool description",
+ args: {
+ param: z.string().describe("Parameter description"),
+ },
+ async execute(args, context) {
+ // Tool implementation
+ return "result"
+ },
+}
+```
+
+---
+
+### Kontekst
+
+Værktøjer modtager kontekst om den aktuelle session:
+
+```ts title=".opencode/tools/project.ts" {8}
+import { tool } from "@opencode-ai/plugin"
+
+export default tool({
+ description: "Get project information",
+ args: {},
+ async execute(args, context) {
+ // Access context information
+ const { agent, sessionID, messageID, directory, worktree } = context
+ return `Agent: ${agent}, Session: ${sessionID}, Message: ${messageID}, Directory: ${directory}, Worktree: ${worktree}`
+ },
+})
+```
+
+Brug `context.directory` til sessionens arbejdsmappe.
+Brug `context.worktree` til git-arbejdstræets rod.
+
+---
+
+## Eksempler
+
+### Skriv et værktøj i Python
+
+Du kan skrive dine værktøjer på et hvilket som helst sprog, du ønsker. Her er et eksempel, der tilføjer til tal ved hjælp af Python.
+
+Først skal du oprette værktøjet som et Python-script:
+
+```python title=".opencode/tools/add.py"
+import sys
+
+a = int(sys.argv[1])
+b = int(sys.argv[2])
+print(a + b)
+```
+
+Opret derefter værktøjsdefinitionen, der kalder den:
+
+```ts title=".opencode/tools/python-add.ts" {10}
+import { tool } from "@opencode-ai/plugin"
+import path from "path"
+
+export default tool({
+ description: "Add two numbers using Python",
+ args: {
+ a: tool.schema.number().describe("First number"),
+ b: tool.schema.number().describe("Second number"),
+ },
+ async execute(args, context) {
+ const script = path.join(context.worktree, ".opencode/tools/add.py")
+ const result = await Bun.$`python3 ${script} ${args.a} ${args.b}`.text()
+ return result.trim()
+ },
+})
+```
+
+Her bruger vi [`Bun.$`](https://bun.com/docs/runtime/shell)-værktøjet til at køre Python-scriptet.
diff --git a/packages/web/src/content/docs/da/ecosystem.mdx b/packages/web/src/content/docs/da/ecosystem.mdx
new file mode 100644
index 000000000..1ce41d87b
--- /dev/null
+++ b/packages/web/src/content/docs/da/ecosystem.mdx
@@ -0,0 +1,76 @@
+---
+title: Økosystem
+description: Projekter og integrationer bygget med OpenCode.
+---
+
+En samling af samfundsprojekter bygget på OpenCode.
+
+:::note
+Vil du tilføje dit OpenCode-relaterede projekt til denne liste? Send en PR.
+:::
+
+Du kan også tjekke \_\_TK_0 og [opencode.cafe](https://opencode.cafe), et fællesskab, der samler økosystemet og fællesskabet.
+
+---
+
+## Plugins
+
+| Navn | Beskrivelse |
+| --------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
+| [opencode-daytona](https://github.com/jamesmurdza/daytona/blob/main/guides/typescript/opencode/README.md) | Kør automatisk OpenCode-sessioner i isolerede Daytona-sandkasser med git-synkronisering og live forhåndsvisninger |
+| [opencode-helicone-session](https://github.com/H2Shami/opencode-helicone-session) | Injicer automatisk Helicone-sessionsoverskrifter til anmodningsgruppering |
+| [opencode-type-inject](https://github.com/nick-vi/opencode-type-inject) | Autoinjicer TypeScript/Svelte-typer i fillæsninger med opslagsværktøjer |
+| [opencode-openai-codex-auth](https://github.com/numman-ali/opencode-openai-codex-auth) | Brug dit ChatGPT Plus/Pro abonnement i stedet for API kreditter |
+| [opencode-gemini-auth](https://github.com/jenslys/opencode-gemini-auth) | Brug din eksisterende Gemini-plan i stedet for API fakturering |
+| [opencode-antigravity-auth](https://github.com/NoeFabris/opencode-antigravity-auth) | Brug Antigravitys gratis modeller i stedet for API fakturering |
+| [opencode-devcontainers](https://github.com/athal7/opencode-devcontainers) | Multi-branch devcontainer isolation med lavvandede kloner og automatisk tildelte porte |
+| [opencode-google-antigravity-auth](https://github.com/shekohex/opencode-google-antigravity-auth) | Google Antigravity OAuth Plugin, med understøttelse af Google søgning og mere robust API håndtering |
+| [opencode-dynamic-context-pruning](https://github.com/Tarquinen/opencode-dynamic-context-pruning) | Optimer tokenbrug ved at beskære forældede værktøjsoutput |
+| [opencode-websearch-cited](https://github.com/ghoulr/opencode-websearch-cited.git) | Tilføj native websearch-understøttelse for understøttede udbydere med Google jordet stil |
+| [opencode-pty](https://github.com/shekohex/opencode-pty.git) | Gør det muligt for AI-agenter at køre baggrundsprocesser i en PTY, send interaktive input til dem. |
+| [opencode-shell-strategy](https://github.com/JRedeker/opencode-shell-strategy) | Instruktioner til ikke-interaktive shell-kommandoer - forhindrer hænger fra TTY-afhængige operationer |
+| [opencode-wakatime](https://github.com/angristan/opencode-wakatime) | Spor OpenCode brug med Wakatime |
+| [opencode-md-table-formatter](https://github.com/franlol/opencode-md-table-formatter/tree/main) | Ryd op afmærkningstabeller produceret af LLMs |
+| [opencode-morph-fast-apply](https://github.com/JRedeker/opencode-morph-fast-apply) | 10x hurtigere koderedigering med Morph Fast Apply API og dovne redigeringsmarkører |
+| [oh-my-opencode](https://github.com/code-yeongyu/oh-my-opencode) | Baggrundsagenter, præbyggede LSP/AST/MCP værktøjer, kuraterede agenter, Claude Kodekompatibel |
+| [opencode-notificator](https://github.com/panta82/opencode-notificator) | Skrivebordsmeddelelser og lydadvarsler for OpenCode-sessioner |
+| [opencode-notifier](https://github.com/mohak34/opencode-notifier) | Skrivebordsmeddelelser og lydadvarsler for tilladelser, fuldførelse og fejlhændelser |
+| [opencode-zellij-namer](https://github.com/24601/opencode-zellij-namer) | AI-drevet automatisk Zellij-sessionsnavngivning baseret på OpenCode-kontekst |
+| [opencode-skillful](https://github.com/zenobi-us/opencode-skillful) | Tillad OpenCode-agenter til dovne load-prompter på efterspørgsel med færdighedsopdagelse og -injektion |
+| [opencode-supermemory](https://github.com/supermemoryai/opencode-supermemory) | Vedvarende hukommelse på tværs af sessioner ved hjælp af Supermemory |
+| [@plannotator/opencode](https://github.com/backnotprop/plannotator/tree/main/apps/opencode-plugin) | Interaktiv plangennemgang med visuel annotering og private/offline deling |
+| [@openspoon/subtask2](https://github.com/spoons-and-mirrors/subtask2) | Udvid opencode /commands til et kraftfuldt orkestreringssystem med granulær flowkontrol |
+| [opencode-scheduler](https://github.com/different-ai/opencode-scheduler) | Planlæg tilbagevendende job ved hjælp af launchd (Mac) eller systemd (Linux) med cron-syntaks |
+| [micode](https://github.com/vtemian/micode) | Struktureret brainstorm → Plan → Implementer workflow med session kontinuitet |
+| [octto](https://github.com/vtemian/octto) | Interaktiv browser-UI til AI-brainstorming med formularer med flere spørgsmål |
+| [opencode-background-agents](https://github.com/kdcokenny/opencode-background-agents) | Claude Baggrundsagenter i kodestil med asynkron-delegering og kontekstvedholdenhed |
+| [opencode-notify](https://github.com/kdcokenny/opencode-notify) | Native OS-meddelelser for OpenCode – ved, hvornår opgaver er fuldført |
+| [opencode-workspace](https://github.com/kdcokenny/opencode-workspace) | Bundled multi-agent orkestreringssele – 16 komponenter, én installation |
+| [opencode-worktree](https://github.com/kdcokenny/opencode-worktree) | Nulfriktions git-arbejdstræer for OpenCode |
+
+---
+
+## Projekter
+
+| Navn | Beskrivelse |
+| ------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------- |
+| [kimaki](https://github.com/remorses/kimaki) | Discord-bot til at styre OpenCode-sessioner, bygget på SDK |
+| [opencode.nvim](https://github.com/NickvanDyke/opencode.nvim) | Neovim-plugin til redaktør-bevidste prompter, bygget på API |
+| [portal](https://github.com/hosenur/portal) | Mobile-first web UI til OpenCode over Tailscale/VPN |
+| [opencode plugin template](https://github.com/zenobi-us/opencode-plugin-template/) | Skabelon til at bygge OpenCode plugins |
+| [opencode.nvim](https://github.com/sudo-tee/opencode.nvim) | Neovim-frontend til opencode - en terminalbaseret AI-kodningsagent |
+| [ai-sdk-provider-opencode-sdk](https://github.com/ben-vargas/ai-sdk-provider-opencode-sdk) | Vercel AI SDK udbyder til brug af OpenCode via @opencode-ai/sdk |
+| [OpenChamber](https://github.com/btriapitsyn/openchamber) | Web / Desktop App og VS Code udvidelse til OpenCode |
+| [OpenCode-Obsidian](https://github.com/mtymek/opencode-obsidian) | Obsidian plugin, der integrerer OpenCode i Obsidians brugergrænseflade |
+| [OpenWork](https://github.com/different-ai/openwork) | Et open source-alternativ til Claude Cowork, drevet af OpenCode |
+| [ocx](https://github.com/kdcokenny/ocx) | OpenCode udvidelsesmanager med bærbare, isolerede profiler. |
+| [CodeNomad](https://github.com/NeuralNomadsAI/CodeNomad) | Desktop-, web-, mobil- og fjernklientapp til OpenCode |
+
+---
+
+## Agent
+
+| Navn | Beskrivelse |
+| ----------------------------------------------------------------- | ------------------------------------------------------------------------- |
+| [Agentic](https://github.com/Cluster444/agentic) | Modulære AI-agenter og -kommandoer til struktureret udvikling |
+| [opencode-agents](https://github.com/darrenhinde/opencode-agents) | Konfigurationer, prompter, agenter og plugins til forbedrede arbejdsgange |
diff --git a/packages/web/src/content/docs/da/enterprise.mdx b/packages/web/src/content/docs/da/enterprise.mdx
new file mode 100644
index 000000000..cc6d8f282
--- /dev/null
+++ b/packages/web/src/content/docs/da/enterprise.mdx
@@ -0,0 +1,170 @@
+---
+title: Enterprise
+description: Brug af OpenCode sikkert i din organisation.
+---
+
+import config from "../../../../config.mjs"
+export const email = `mailto:${config.email}`
+
+OpenCode Enterprise er for organisationer, der ønsker at sikre, at deres kode og data aldrig forlader deres infrastruktur. Det kan gøre dette ved at bruge en centraliseret konfiguration, der integreres med din SSO og interne AI-gateway.
+
+:::note
+OpenCode gemmer ingen af din kode eller kontekstdata.
+:::
+
+Sådan kommer du i gang med OpenCode Enterprise:
+
+1. Lav en prøvetur internt med dit team.
+2. **Kontakt os** for at diskutere priser og implementeringsmuligheder.
+
+---
+
+## Prøve
+
+OpenCode er open source og gemmer ingen af din kode eller kontekstdata, så dine udviklere kan simpelthen [get started](/docs/) og udføre en prøveversion.
+
+---
+
+### Datahåndtering
+
+**OpenCode gemmer ikke din kode eller kontekstdata.** Al behandling sker lokalt eller gennem direkte API-opkald til din AI-udbyder.
+
+Det betyder, at så længe du bruger en udbyder, du stoler på, eller en intern
+AI-gateway, du kan bruge OpenCode sikkert.
+
+Den eneste advarsel her er den valgfrie `/share`-funktion.
+
+---
+
+#### Deling af samtaler
+
+Hvis en bruger aktiverer funktionen `/share`, sender samtalen og de data, der er knyttet til den, til den tjeneste, vi bruger til at hoste disse delesider på opencode.ai.
+
+Dataene serveres i øjeblikket gennem vores CDN's edge-netværk og cachelagres på kanten nær dine brugere.
+
+Vi anbefaler, at du deaktiverer dette for din prøveperiode.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "share": "disabled"
+}
+```
+
+[Learn more about sharing](/docs/share).
+
+---
+
+### Kodeejerskab
+
+**Du ejer al kode produceret af OpenCode.** Der er ingen licensbegrænsninger eller ejerskabskrav.
+
+---
+
+## Priser
+
+Vi bruger en per-sæde-model til OpenCode Enterprise. Hvis du har din egen LLM-gateway, kræver vi ikke betaling for brugte tokens. For yderligere oplysninger om priser og implementeringsmuligheder, **kontakt os**.
+
+---
+
+## Implementering
+
+Når du har afsluttet din prøveperiode, og du er klar til at bruge OpenCode kl
+din organisation, kan du **kontakte os** for at diskutere
+prissætning og implementeringsmuligheder.
+
+---
+
+### Central Config
+
+Vi kan konfigurere OpenCode til at bruge en enkelt central konfiguration for hele din organisation.
+
+Denne centraliserede konfiguration kan integreres med din SSO-udbyder og sikrer, at alle brugere kan få adgang til din interne AI-gateway.
+
+---
+
+### SSO-integration
+
+Gennem den centrale konfiguration kan OpenCode integreres med din organisationer SSO-udbyder til godkendelse.
+
+Denne giver OpenCode mulighed for at få legitimationsoplysninger til din interne AI-gateway gennem dette eksisterende identitetsadministrationssystem.
+
+---
+
+### Intern AI-gateway
+
+Med den centrale konfiguration kan OpenCode også konfigureres til kun at bruge din interne AI-gateway.
+
+Du kan også deaktivere alle andre AI-udbydere og sikre, at alle anmodninger går gennem din organisations godkendte infrastruktur.
+
+---
+
+### Self-hosting
+
+Selvom vi anbefaler at deaktivere delesiderne for at sikre, at dine data aldrig forsvinder
+din organisation, kan vi også hjælpe dig med at selv hoste dem på din infrastruktur.
+
+Dette er i øjeblikket på vores køreplan. Hvis du er interesseret, **giv os besked**.
+
+---
+
+## FAQ
+
+
+Hvad er OpenCode Enterprise?
+
+OpenCode Enterprise er for organisationer, der ønsker at sikre, at deres kode og data aldrig forlader deres infrastruktur. Det kan gøre dette ved at bruge en centraliseret konfiguration, der integreres med din SSO og interne AI-gateway.
+
+
+
+
+Hvordan kommer jeg i gang med OpenCode Enterprise?
+
+Du skal blot starte med en intern prøveperiode med dit team. OpenCode gemmer som standard ikke din kode eller kontekstdata, hvilket gør det nemt at komme i gang.
+
+Så **kontakt os** for at diskutere priser og implementeringsmuligheder.
+
+
+
+
+Hvordan fungerer virksomhedspriser?
+
+Vi tilbyder virksomhedspriser pr. sæde. Hvis du har din egen LLM-gateway, kræver vi ikke betaling for brugte tokens. For yderligere detaljer, **kontakt os** for et tilpasset tilbud baseret på din organisations behov.
+
+
+
+
+Er mine data sikret med OpenCode Enterprise?
+
+Ja. OpenCode gemmer ikke din kode eller kontekstdata. Al behandling sker lokalt eller gennem direkte API-opkald til din AI-udbyder. Med central konfiguration og SSO-integration forbliver dine data sikre i din organisationers infrastruktur.
+
+
+
+
+Kan vi bruge vores eget private NPM-register?
+
+OpenCode understøtter private npm registre gennem Buns oprindelige `.npmrc` filunderstøttelse. Hvis din organisation bruger et privat register, såsom JFrog Artifactory, Nexus eller lignende, skal du sikre dig, at udviklerne er godkendt, før de kører OpenCode.
+
+Sådan konfigurerer du godkendelse med dit private register:
+
+```bash
+npm login --registry=https://your-company.jfrog.io/api/npm/npm-virtual/
+```
+
+Dette opretter `~/.npmrc` med godkendelsesdetaljer. OpenCode vil automatisk
+samle dette op.
+
+:::forsigtighed
+Du skal være logget ind i det private register, før du kører OpenCode.
+:::
+
+Alternativt kan du manuelt konfigurere en `.npmrc` fil:
+
+```bash title="~/.npmrc"
+registry=https://your-company.jfrog.io/api/npm/npm-virtual/
+//your-company.jfrog.io/api/npm/npm-virtual/:_authToken=${NPM_AUTH_TOKEN}
+```
+
+Udviklere skal være logget ind på det private register, før de kører OpenCode for at sikre, at pakker kan installeres fra din virksomhedsregistrering.
+
+
diff --git a/packages/web/src/content/docs/da/formatters.mdx b/packages/web/src/content/docs/da/formatters.mdx
new file mode 100644
index 000000000..438cdf1a7
--- /dev/null
+++ b/packages/web/src/content/docs/da/formatters.mdx
@@ -0,0 +1,130 @@
+---
+title: Formatere
+description: OpenCode bruger sprogspecifikke formatere.
+---
+
+OpenCode formaterer automatisk filer, efter de er skrevet eller redigeret ved hjælp af sprogspecifikke formatere. Dette sikrer, at den kode, der genereres, følger kodestilene for dit projekt.
+
+---
+
+## Indbygget
+
+OpenCode leveres med flere indbyggede formatere til populære sprog og rammer. Nedenfor er en liste over de formatere, understøttede filtypenavne og kommandoer eller konfigurationsmuligheder, der har brug for.
+
+| Formater | Udvidelser | Krav |
+| --------------------- | ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
+| gofmt | .go | `gofmt` kommando tilgængelig |
+| blande | .ex,.exs,.eex,.heex,.leex,.neex,.sface | `mix` kommando tilgængelig |
+| smukkere | .js,.jsx,.ts,.tsx,.html,.css,.md,.json,.yaml og [more](https://prettier.io/docs/en/index.html) | `prettier` afhængighed i `package.json` |
+| biome | .js,.jsx,.ts,.tsx,.html,.css,.md,.json,.yaml og [more](https://biomejs.dev/) | `biome.json(c)` konfigurationsfil |
+| zig | .zig,.zon | `zig` kommando tilgængelig |
+| klang-format | .c,.cpp,.h,.hpp,.ino og [more](https://clang.llvm.org/docs/ClangFormat.html) | `.clang-format` konfigurationsfil |
+| ktlint | .kt,.kts | `ktlint` kommando tilgængelig |
+| ruff | .py,.pyi | `ruff` kommando tilgængelig med konfiguration |
+| rustfmt | .rs | `rustfmt` kommando tilgængelig |
+| cargofmt | .rs | `cargo fmt` kommando tilgængelig |
+| uv | .py,.pyi | `uv` kommando tilgængelig |
+| rubocop | .rb,.rake,.gemspec,.ru | `rubocop` kommando tilgængelig |
+| standardrb | .rb,.rake,.gemspec,.ru | `standardrb` kommando tilgængelig |
+| htmlbeautifier | .erb,.html.erb | `htmlbeautifier` kommando tilgængelig |
+| luft | .R | `air` kommando tilgængelig |
+| dart | .dart | `dart` kommando tilgængelig |
+| ocamlformat | .ml,.mli | `ocamlformat` kommando tilgængelig og `.ocamlformat` config fil |
+| terraform | .tf,.tfvars | `terraform` kommando tilgængelig |
+| glimt | .glimt | `gleam` kommando tilgængelig |
+| nixfmt | .nix | `nixfmt` kommando tilgængelig |
+| shfmt | .sh,.bash | `shfmt` kommando tilgængelig |
+| pint | .php | `laravel/pint` afhængighed i `composer.json` |
+| oxfmt (Eksperimentel) | .js,.jsx,.ts,.tsx | `oxfmt` afhængighed i `package.json` og en [experimental env variable flag](/docs/cli/#experimental) |
+| ormolu | .hs | `ormolu` kommando tilgængelig |
+
+Så hvis dit projekt har `prettier` i din `package.json`, vil OpenCode automatisk bruge det.
+
+---
+
+## Sådan fungerer det
+
+Når OpenCode skriver eller redigerer en fil, vil det:
+
+1. Kontrollerer filtypenavnet mod alle aktiverede formatere.
+2. Kører den relevante formateringskommando på filen.
+3. Anvender formateringsændringerne automatisk.
+
+Denne proces sker i baggrunden, hvilket sikrer, at dine kodestile vedligeholdes uden nogen manuelle trin.
+
+---
+
+## Konfigurer
+
+Du kan tilpasse formatere gennem afsnittet `formatter` i din OpenCode-konfiguration.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "formatter": {}
+}
+```
+
+Hver formateringskonfiguration understøtter følgende:
+
+| Ejendom | Skriv | Beskrivelse |
+| ------------- | -------- | -------------------------------------------------------------------- |
+| `disabled` | boolsk | Indstil dette til `true` for at deaktivere formateringsværktøjet |
+| `command` | styrke[] | Kommandoen til at køre for formatering |
+| `environment` | objekt | Miljøvariabler, der skal indstilles, når formateringsværktøjet køres |
+| `extensions` | styrke[] | Filtypenavne, som denne formaterer skal håndtere |
+
+Lad os se på nogle eksempler.
+
+---
+
+### Deaktivering af formatere
+
+For at deaktivere **alle** formatere globalt, skal du indstille `formatter` til `false`:
+
+```json title="opencode.json" {3}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "formatter": false
+}
+```
+
+For at deaktivere en **specifik** formatter, skal du indstille `disabled` til `true`:
+
+```json title="opencode.json" {5}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "formatter": {
+ "prettier": {
+ "disabled": true
+ }
+ }
+}
+```
+
+---
+
+### Brugerdefinerede formatere
+
+Du kan tilsidesætte de indbyggede formattere eller tilføje nye ved at angive kommandoen, miljøvariabler og filtypenavne:
+
+```json title="opencode.json" {4-14}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "formatter": {
+ "prettier": {
+ "command": ["npx", "prettier", "--write", "$FILE"],
+ "environment": {
+ "NODE_ENV": "development"
+ },
+ "extensions": [".js", ".ts", ".jsx", ".tsx"]
+ },
+ "custom-markdown-formatter": {
+ "command": ["deno", "fmt", "$FILE"],
+ "extensions": [".md"]
+ }
+ }
+}
+```
+
+**`$FILE` pladsholderen** i kommandoen vil blive erstattet med stien til filen, der formateres.
diff --git a/packages/web/src/content/docs/da/github.mdx b/packages/web/src/content/docs/da/github.mdx
new file mode 100644
index 000000000..046f3f15a
--- /dev/null
+++ b/packages/web/src/content/docs/da/github.mdx
@@ -0,0 +1,321 @@
+---
+title: GitHub
+description: Brug OpenCode i GitHub-problemer og pull-anmodninger.
+---
+
+OpenCode integreres med din GitHub arbejdsgang. Nævn `/opencode` eller `/oc` i din kommentar, og OpenCode vil udføre opgaver i din GitHub Actions-løber.
+
+---
+
+## Funktioner
+
+- **Triageproblemer**: Bed OpenCode om at undersøge et problem og forklare dig det.
+- **Ret og implementer**: Bed OpenCode om at løse et problem eller implementere en funktion. Og det vil fungere i en ny afdeling og indsende en PR med alle ændringerne.
+- **Sikker**: OpenCode løber inde i din GitHubs løbere.
+
+---
+
+## Installation
+
+Kør følgende kommando i et projekt, der er i en GitHub repo:
+
+```bash
+opencode github install
+```
+
+Dette vil lede dig gennem installation af GitHub-appen, oprettelse af arbejdsgangen og opsætning af hemmeligheder.
+
+---
+
+### Manuel opsætning
+
+Eller du kan indstille det manuelt.
+
+1. **Installationsprogrammet GitHub-appen**
+
+ Gå over til [**github.com/apps/opencode-agent**](https://github.com/apps/opencode-agent). Sørg for, at det er installeret på mållageret.
+
+2. **Tilføj arbejdsgangen**
+
+ Tilføj følgende workflow-fil til `.github/workflows/opencode.yml` i din repo. Sørg for at indstille de relevante `model` og nødvendige API nøgler i `env`.
+
+ ```yml title=".github/workflows/opencode.yml" {24,26}
+ name: opencode
+
+ on:
+ issue_comment:
+ types: [created]
+ pull_request_review_comment:
+ types: [created]
+
+ jobs:
+ opencode:
+ if: |
+ contains(github.event.comment.body, '/oc') ||
+ contains(github.event.comment.body, '/opencode')
+ runs-on: ubuntu-latest
+ permissions:
+ id-token: write
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v6
+ with:
+ fetch-depth: 1
+ persist-credentials: false
+
+ - name: Run OpenCode
+ uses: anomalyco/opencode/github@latest
+ env:
+ ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
+ with:
+ model: anthropic/claude-sonnet-4-20250514
+ # share: true
+ # github_token: xxxx
+ ```
+
+3. **Opbevar API nøglerne i hemmeligheder**
+
+ I din organisation eller dit projekt **indstillinger** skal du udvide **Hemmeligheder og variabler** til venstre og vælge **Handlinger**. Og tilføj de nødvendige API nøgler.
+
+---
+
+## Konfiguration
+
+- `model`: Den model, der skal bruges med OpenCode. Antager formatet `provider/model`. Dette er **påkrævet**.
+- `agent`: Agenten, der skal bruges. Skal være en primær agent. Falder tilbage til `default_agent` fra config eller `"build"`, hvis den ikke findes.
+- `share`: Om OpenCode-sessionen skal dele. Standard er **sand** for offentlige arkiver.
+- `prompt`: Valgfri brugerdefineret prompt for at tilsidesætte standardadfærden. Brug dette til at tilpasse, hvordan OpenCode behandler anmodninger.
+- `token`: Valgfrit GitHub adgangstoken til at udføre operationer såsom oprettelse af kommentarer, begå ændringer og åbning af pull-anmodninger. Som standard bruger OpenCode installationsadgangstokenet fra OpenCode GitHub-appen, så commits, kommentarer og pull-anmodninger ser ud til at komme fra appen.
+
+ Alternativt kan du bruge GitHub Action runners [built-in `GITHUB_TOKEN`](OpenCode) uden at installere OpenCode GitHub appen. Bare sørg for at give de nødvendige tilladelser i dit workflow:
+
+ ```yaml
+ permissions:
+ id-token: write
+ contents: write
+ pull-requests: write
+ issues: write
+ ```
+
+ Du kan også bruge en [personal access tokens](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)(PAT), hvis det foretrækkes.
+
+---
+
+## Understøttede begivenheder
+
+OpenCode kan udløses af følgende GitHub hændelser:
+
+| Begivenhedstype | Udløst af | Detaljer |
+| ----------------------------- | --------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
+| `issue_comment` | Kommentarer og problemer eller PR | Nævn `/opencode` eller `/oc` i din kommentar. OpenCode læser kontekst og kan oprette filialer, åbne PR'er eller svare. |
+| `pull_request_review_comment` | Kommenter specifikke kodelinjer i en PR | Nævn `/opencode` eller `/oc`, mens du gennemgår koden. OpenCode modtager filsti, linjenumre og diff-kontekst. |
+| `issues` | Udgave åbnet eller redigeret | Udløs automatisk OpenCode, når problemer oprettes eller ændres. Kræver `prompt` input. |
+| `pull_request` | PR åbnet eller opdateret | Udløs automatisk OpenCode, når PR'er åbnes, synkroniseres eller genåbnes. Nyttigt til automatiserede anmeldelser. |
+| `schedule` | Cron-baseret tidsplan | Kør OpenCode efter en tidsplan. Kræver `prompt` input. Output går til logfiler og PR'er (intet problem ved kommentere). |
+| `workflow_dispatch` | Manuel trigger fra GitHub UI | Udløs OpenCode efter behov via fanen Handlinger. Kræver `prompt` input. Output går til logfiler og PR'er. |
+
+### Skema Eksempel
+
+Kør OpenCode efter en tidsplan for at udføre automatiske opgaver:
+
+```yaml title=".github/workflows/opencode-scheduled.yml"
+name: Scheduled OpenCode Task
+
+on:
+ schedule:
+ - cron: "0 9 * * 1" # Every Monday at 9am UTC
+
+jobs:
+ opencode:
+ runs-on: ubuntu-latest
+ permissions:
+ id-token: write
+ contents: write
+ pull-requests: write
+ issues: write
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v6
+ with:
+ persist-credentials: false
+
+ - name: Run OpenCode
+ uses: anomalyco/opencode/github@latest
+ env:
+ ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
+ with:
+ model: anthropic/claude-sonnet-4-20250514
+ prompt: |
+ Review the codebase for any TODO comments and create a summary.
+ If you find issues worth addressing, open an issue to track them.
+```
+
+For planlagte begivenheder er `prompt` input **påkrævet**, da der ikke er nogen kommentarer at udtrække instruktioner fra. Planlagte arbejdsgange kører uden en brugerkontekst til kontrol af tilladelser, så arbejdsgangen skal give `contents: write` og `pull-requests: write`, hvis du forventer, at OpenCode skal oprette filialer eller PR'er.
+
+---
+
+### Pull Request Eksempel
+
+Gennemgå automatisk PR'er, når de åbnes eller opdateres:
+
+```yaml title=".github/workflows/opencode-review.yml"
+name: opencode-review
+
+on:
+ pull_request:
+ types: [opened, synchronize, reopened, ready_for_review]
+
+jobs:
+ review:
+ runs-on: ubuntu-latest
+ permissions:
+ id-token: write
+ contents: read
+ pull-requests: read
+ issues: read
+ steps:
+ - uses: actions/checkout@v6
+ with:
+ persist-credentials: false
+ - uses: anomalyco/opencode/github@latest
+ env:
+ ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ model: anthropic/claude-sonnet-4-20250514
+ use_github_token: true
+ prompt: |
+ Review this pull request:
+ - Check for code quality issues
+ - Look for potential bugs
+ - Suggest improvements
+```
+
+For `pull_request` hændelser, hvis der ikke er angivet nogen `prompt`, vil OpenCode som standard gennemgå pull-anmodningen.
+
+---
+
+### Issues Triage Eksempel
+
+Triage automatisk nye problemer. Dette eksempel filtrerer til konti ældre end 30 dage for at reducere spam:
+
+```yaml title=".github/workflows/opencode-triage.yml"
+name: Issue Triage
+
+on:
+ issues:
+ types: [opened]
+
+jobs:
+ triage:
+ runs-on: ubuntu-latest
+ permissions:
+ id-token: write
+ contents: write
+ pull-requests: write
+ issues: write
+ steps:
+ - name: Check account age
+ id: check
+ uses: actions/github-script@v7
+ with:
+ script: |
+ const user = await github.rest.users.getByUsername({
+ username: context.payload.issue.user.login
+ });
+ const created = new Date(user.data.created_at);
+ const days = (Date.now() - created) / (1000 * 60 * 60 * 24);
+ return days >= 30;
+ result-encoding: string
+
+ - uses: actions/checkout@v6
+ if: steps.check.outputs.result == 'true'
+ with:
+ persist-credentials: false
+
+ - uses: anomalyco/opencode/github@latest
+ if: steps.check.outputs.result == 'true'
+ env:
+ ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
+ with:
+ model: anthropic/claude-sonnet-4-20250514
+ prompt: |
+ Review this issue. If there's a clear fix or relevant docs:
+ - Provide documentation links
+ - Add error handling guidance for code examples
+ Otherwise, do not comment.
+```
+
+For `issues` begivenheder er `prompt` input **påkrævet**, da der ikke er nogen kommentarer at udtrække instruktioner fra.
+
+---
+
+## Brugerdefinerede prompter
+
+Tilsidesæt standardprompten for at tilpasse OpenCodes adfærd til din arbejdsgang.
+
+```yaml title=".github/workflows/opencode.yml"
+- uses: anomalyco/opencode/github@latest
+ with:
+ model: anthropic/claude-sonnet-4-5
+ prompt: |
+ Review this pull request:
+ - Check for code quality issues
+ - Look for potential bugs
+ - Suggest improvements
+```
+
+Dette er nyttigt til at håndhæve specifikke gennemgangskriterier, kodningsstandarder eller fokusområder, der er relevante for dit projekt.
+
+---
+
+## Eksempler
+
+Her er nogle eksempler på, hvordan du kan bruge OpenCode i GitHub.
+
+- **Forklar et problem**
+
+ Tilføj denne kommentar i et GitHub-nummer.
+
+ ```
+ /opencode explain this issue
+ ```
+
+ OpenCode vil læse hele tråden, inklusive alle kommentarer, og svare med en klar forklaring.
+
+- **Løs et problem**
+
+ I et GitHub-problem skal du sige:
+
+ ```
+ /opencode fix this
+ ```
+
+ Og OpenCode vil oprette en ny filial, implementere ændringer og åbne en PR med ændringer.
+
+- **Gennemgå PR'er og foretag ændringer**
+
+ Efterlad følgende kommentar på en GitHub PR.
+
+ ```
+ Delete the attachment from S3 when the note is removed /oc
+ ```
+
+ OpenCode vil implementere den ønskede ændring og forpligtelse til den samme PR.
+
+- **Gennemgå specifikke kodelinjer**
+
+ Efterlad en kommentar direkte på kodelinjer i PR's faneblad "Filer". OpenCode detekterer automatisk filer, linjenumrene og diff-konteksten for at give præcise svar.
+
+ ```
+ [Comment on specific lines in Files tab]
+ /oc add error handling here
+ ```
+
+ Når du kommenterer på specifikke linjer, modtager OpenCode:
+ - Den nøjagtige fil bliver gennemgået
+ - De specifikke kodelinjer
+ - Den omgivende forskellig kontekst
+ - Linjenummeroplysninger
+
+ Dette giver mulighed for mere målrettede anmodninger uden at skulle angive filstier eller linjenumre manuelt.
diff --git a/packages/web/src/content/docs/da/gitlab.mdx b/packages/web/src/content/docs/da/gitlab.mdx
new file mode 100644
index 000000000..74fdd93d7
--- /dev/null
+++ b/packages/web/src/content/docs/da/gitlab.mdx
@@ -0,0 +1,195 @@
+---
+title: GitLab
+description: Brug OpenCode i GitLab-problemer og fletteanmodninger.
+---
+
+OpenCode integreres med din GitLab-arbejdsgang gennem din GitLab CI/CD-pipeline eller med GitLab Duo.
+
+I begge tilfælde vil OpenCode køre på dine GitLab-løbere.
+
+---
+
+## GitLab CI
+
+OpenCode fungerer i en almindelig GitLab-pipeline. Du kan bygge det ind i en pipeline som en [CI component](https://docs.gitlab.com/ee/ci/components/)
+
+Her bruger vi en community-skabt CI/CD-komponent til OpenCode — [nagyv/gitlab-opencode](https://gitlab.com/nagyv/gitlab-opencode).
+
+---
+
+### Funktioner
+
+- **Brug tilpasset konfiguration pr. job**: Konfigurer OpenCode med en brugerdefineret konfigurationsmappe, for eksempel `./config/#custom-directory` for at aktivere eller deaktivere funktionalitet pr. OpenCode påkald.
+- **Minimal opsætning**: CI-komponenten sætter OpenCode op i baggrunden, du behøver kun at oprette OpenCode-konfigurationen og den indledende prompt.
+- **Fleksibel**: CI-komponenten understøtter flere input til at tilpasse dens adfærd
+
+---
+
+### Opsætning
+
+1. Gem din OpenCode-godkendelse JSON som en filtype CI-miljøvariabel under **Indstillinger** > **CI/CD** > **Variabler**. Sørg for at markere dem som "Maskede og skjulte".
+2. Tilføj følgende til din `.gitlab-ci.yml` fil.
+
+ ```yaml title=".gitlab-ci.yml"
+ include:
+ - component: $CI_SERVER_FQDN/nagyv/gitlab-opencode/opencode@2
+ inputs:
+ config_dir: ${CI_PROJECT_DIR}/opencode-config
+ auth_json: $OPENCODE_AUTH_JSON # The variable name for your OpenCode authentication JSON
+ command: optional-custom-command
+ message: "Your prompt here"
+ ```
+
+For flere input og use cases [check out the docs](https://gitlab.com/explore/catalog/nagyv/gitlab-opencode) for denne komponent.
+
+---
+
+## GitLab Duo
+
+OpenCode integreres med din GitLab-arbejdsgang.
+Nævn `@opencode` i en kommentar, og OpenCode vil udføre opgaver i din GitLab CI-pipeline.
+
+---
+
+### Funktioner
+
+- **Triageproblemer**: Bed OpenCode om at undersøge et problem og forklare dig det.
+- **Ret og implementer**: Bed OpenCode om at løse et problem eller implementere en funktion.
+ Det vil oprette en ny filial og rejse en fletteanmodning med ændringer.
+- **Sikker**: OpenCode kører på dine GitLab-løbere.
+
+---
+
+### Opsætning
+
+OpenCode kører i din GitLab CI/CD pipeline, her er hvad du skal bruge for at konfigurere det:
+
+:::tip
+Tjek [**GitLab docs**](https://docs.gitlab.com/user/duo_agent_platform/agent_assistant/) for opdaterede instruktioner.
+:::
+
+1. Konfigurer dit GitLab-miljø
+2. Konfigurer CI/CD
+3. Få en API nøgle til en AI-modeludbyder
+4. Opret en servicekonto
+5. Konfigurer CI/CD variabler
+6. Opret en flow-konfigurationsfil, her er et eksempel:
+
+
+
+ Flowkonfiguration
+
+ ```yaml
+ image: node:22-slim
+ commands:
+ - echo "Installing opencode"
+ - npm install --global opencode-ai
+ - echo "Installing glab"
+ - export GITLAB_TOKEN=$GITLAB_TOKEN_OPENCODE
+ - apt-get update --quiet && apt-get install --yes curl wget gpg git && rm --recursive --force /var/lib/apt/lists/*
+ - curl --silent --show-error --location "https://raw.githubusercontent.com/upciti/wakemeops/main/assets/install_repository" | bash
+ - apt-get install --yes glab
+ - echo "Configuring glab"
+ - echo $GITLAB_HOST
+ - echo "Creating OpenCode auth configuration"
+ - mkdir --parents ~/.local/share/opencode
+ - |
+ cat > ~/.local/share/opencode/auth.json << EOF
+ {
+ "anthropic": {
+ "type": "api",
+ "key": "$ANTHROPIC_API_KEY"
+ }
+ }
+ EOF
+ - echo "Configuring git"
+ - git config --global user.email "opencode@gitlab.com"
+ - git config --global user.name "OpenCode"
+ - echo "Testing glab"
+ - glab issue list
+ - echo "Running OpenCode"
+ - |
+ opencode run "
+ You are an AI assistant helping with GitLab operations.
+
+ Context: $AI_FLOW_CONTEXT
+ Task: $AI_FLOW_INPUT
+ Event: $AI_FLOW_EVENT
+
+ Please execute the requested task using the available GitLab tools.
+ Be thorough in your analysis and provide clear explanations.
+
+
+ Please use the glab CLI to access data from GitLab. The glab CLI has already been authenticated. You can run the corresponding commands.
+
+ If you are asked to summarize an MR or issue or asked to provide more information then please post back a note to the MR/Issue so that the user can see it.
+ You don't need to commit or push up changes, those will be done automatically based on the file changes you make.
+
+ "
+ - git checkout --branch $CI_WORKLOAD_REF origin/$CI_WORKLOAD_REF
+ - echo "Checking for git changes and pushing if any exist"
+ - |
+ if ! git diff --quiet || ! git diff --cached --quiet || [ --not --zero "$(git ls-files --others --exclude-standard)" ]; then
+ echo "Git changes detected, adding and pushing..."
+ git add .
+ if git diff --cached --quiet; then
+ echo "No staged changes to commit"
+ else
+ echo "Committing changes to branch: $CI_WORKLOAD_REF"
+ git commit --message "Codex changes"
+ echo "Pushing changes up to $CI_WORKLOAD_REF"
+ git push https://gitlab-ci-token:$GITLAB_TOKEN@$GITLAB_HOST/gl-demo-ultimate-dev-ai-epic-17570/test-java-project.git $CI_WORKLOAD_REF
+ echo "Changes successfully pushed"
+ fi
+ else
+ echo "No git changes detected, skipping push"
+ fi
+ variables:
+ - ANTHROPIC_API_KEY
+ - GITLAB_TOKEN_OPENCODE
+ - GITLAB_HOST
+ ```
+
+
+
+Du kan henvise til [GitLab CLI agents docs](https://docs.gitlab.com/user/duo_agent_platform/agent_assistant/) for detaljerede instruktioner.
+
+---
+
+### Eksempler
+
+Her er nogle eksempler på, hvordan du kan bruge OpenCode i GitLab.
+
+:::tip
+Du kan konfigurere til at bruge en anden udløsersætning end `@opencode`.
+:::
+
+- **Forklar et problem**
+
+ Tilføj denne kommentar i et GitLab-problem.
+
+ ```
+ @opencode explain this issue
+ ```
+
+ OpenCode vil læse spørgsmålet og svare med en klar forklaring.
+
+- **Løs et problem**
+
+ I et GitLab-nummer skal du sige:
+
+ ```
+ @opencode fix this
+ ```
+
+ OpenCode vil oprette en ny filial, implementere ændringer og åbne en fletteanmodning med ændringer.
+
+- **Gennemgå anmodninger om fletning**
+
+ Efterlad følgende kommentar til en GitLab-fletningsanmodning.
+
+ ```
+ @opencode review this merge request
+ ```
+
+ OpenCode vil gennemgå anmodningen om fletning og give feedback.
diff --git a/packages/web/src/content/docs/da/ide.mdx b/packages/web/src/content/docs/da/ide.mdx
new file mode 100644
index 000000000..17f9cec1e
--- /dev/null
+++ b/packages/web/src/content/docs/da/ide.mdx
@@ -0,0 +1,48 @@
+---
+title: IDE
+description: OpenCode-udvidelsen til VS Code, Cursor og andre IDE'er
+---
+
+OpenCode integreres med VS Code, Cursor eller enhver IDE, der understøtter en terminal. Bare kør `opencode` i terminalen for at komme i gang.
+
+---
+
+## Brug
+
+- **Hurtig start**: Brug `Cmd+Esc` (Mac) eller `Ctrl+Esc` (Windows/Linux) til at åbne OpenCode i en delt terminalvisning, eller fokuser en eksisterende terminalsession, hvis en allerede kører.
+- **Ny session**: Brug `Cmd+Shift+Esc` (Mac) eller `Ctrl+Shift+Esc` (Windows/Linux) til at starte en ny OpenCode terminalsession, mulighed en allerede er åben. Du kan også klikke på knappen OpenCode i brugergrænsefladen.
+- **Kontekstbevidsthed**: Del automatisk dit nuværende valg eller din fane med OpenCode.
+- **Filreferencegenveje**: Brug `Cmd+Option+K` (Mac) eller `Alt+Ctrl+K` (Linux/Windows) til at indsætte filreferencer. For eksempel `@File#L37-42`.
+
+---
+
+## Installation
+
+Sådan installeres OpenCode på VS Code og populære gafler som Cursor, Windsurf, VSCodium:
+
+1. Åbn VS Code
+2. Åbn den integrerede terminal
+3. Kør `opencode` - udvidelsen installeres automatisk
+
+Hvis du på den anden side vil bruge din egen IDE, når du kører `/editor` eller `/export` fra TUI, skal du indstille `export EDITOR="code --wait"`. [Learn more](/docs/tui/#editor-setup).
+
+---
+
+### Manuel installation
+
+Søg efter **OpenCode** i Extension Marketplace, og klik på **Installer**.
+
+---
+
+### Fejlfinding
+
+Hvis udvidelsen ikke kan installeres automatisk:
+
+- Sørg for, at du kører `opencode` i den integrerede terminal.
+- Bekræft, at CLI for din IDE er installeret:
+ - For VS Code: `code` kommando
+ - For Cursor: `cursor` kommando
+ - For Windsurf: `windsurf` kommando
+ - For VSCodium: `codium` kommando
+ - Hvis ikke, så kør `Cmd+Shift+P` (Mac) eller `Ctrl+Shift+P` (Windows/Linux) og søg efter "Shell Command: Install 'code' command in PATH" (eller tilsvarende for din IDE)
+- Sørg for, at VS Code har tilladelse til at installere udvidelser
diff --git a/packages/web/src/content/docs/da/index.mdx b/packages/web/src/content/docs/da/index.mdx
new file mode 100644
index 000000000..51483a543
--- /dev/null
+++ b/packages/web/src/content/docs/da/index.mdx
@@ -0,0 +1,359 @@
+---
+title: Intro
+description: Kom godt i gang med OpenCode.
+---
+
+import { Tabs, TabItem } from "@astrojs/starlight/components"
+import config from "../../../../config.mjs"
+export const console = config.console
+
+[**OpenCode**](/) er en open source AI-kodningsagent. Den er tilgængelig som en terminalbaseret grænseflade, desktop-app eller IDE-udvidelse.
+
+
+
+Lad os komme i gang.
+
+---
+
+#### Forudsætninger
+
+For at bruge OpenCode i din terminal skal du bruge:
+
+1. En moderne terminalemulator som:
+ - [WezTerm](https://wezterm.org), på tværs af platforme
+ - [Alacritty](https://alacritty.org), på tværs af platforme
+ - [Ghostty](https://ghostty.org), Linux og macOS
+ - [Kitty](https://sw.kovidgoyal.net/kitty/), Linux og macOS
+
+2. API nøgler til de LLM udbydere, du vil bruge.
+
+---
+
+## Installationsprogram
+
+Den nemmeste måde at installere OpenCode på er gennem installationsscriptet.
+
+```bash
+curl -fsSL https://opencode.ai/install | bash
+```
+
+Du kan også installere det med følgende kommandoer:
+
+- **Bruger Node.js**
+
+
+
+
+ ```bash
+ npm install -g opencode-ai
+ ```
+
+
+
+
+ ```bash
+ bun install -g opencode-ai
+ ```
+
+
+
+
+ ```bash
+ pnpm install -g opencode-ai
+ ```
+
+
+
+
+ ```bash
+ yarn global add opencode-ai
+ ```
+
+
+
+
+
+- **Brug af Homebrew på macOS og Linux**
+
+ ```bash
+ brew install anomalyco/tap/opencode
+ ```
+
+ > Vi anbefaler at bruge OpenCode-hanen for at få de mest opdaterede udgivelser. Den officielle `brew install opencode`-formel vedligeholdes af Homebrew-teamet og opdateret sjældnere.
+
+- **Brug af Paru på Arch Linux**
+
+ ```bash
+ paru -S opencode-bin
+ ```
+
+#### Windows
+
+:::tip[Anbefalet: Brug WSL]
+For at få den bedste oplevelse på Windows anbefaler vi at bruge [Windows Subsystem for Linux (WSL)](/docs/windows-wsl). Det giver bedre ydeevne og fuld kompatibilitet med OpenCodes funktioner.
+:::
+
+- **Brug af chokolade**
+
+ ```bash
+ choco install opencode
+ ```
+
+- **Brug af Scoop**
+
+ ```bash
+ scoop install opencode
+ ```
+
+- **Bruger NPM**
+
+ ```bash
+ npm install -g opencode-ai
+ ```
+
+- **Brug af Mise**
+
+ ```bash
+ mise use -g github:anomalyco/opencode
+ ```
+
+- **Brug af Docker**
+
+ ```bash
+ docker run -it --rm ghcr.io/anomalyco/opencode
+ ```
+
+Support til installation af OpenCode på Windows ved hjælp af Bun er i gang.
+
+Du kan også få fat i binæren fra [Releases](https://github.com/anomalyco/opencode/releases).
+
+---
+
+## Konfigurer
+
+Med OpenCode kan du bruge enhver LLM udbyder ved at konfigurere deres API nøgler.
+
+Hvis du er ny til at bruge LLM-udbydere, anbefaler vi at bruge [OpenCode Zen](/docs/zen).
+Det er en udvalgt liste over modeller, der er blevet testet og verificeret af OpenCode
+holde.
+
+1. Kør kommandoen `/connect` i TUI, vælg opencode, og gå til [opencode.ai/auth](https://opencode.ai/auth).
+
+ ```txt
+ /connect
+ ```
+
+2. Log ind, tilføj dine faktureringsoplysninger, og kopier din API-nøgle.
+
+3. Indsæt din API nøgle.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+Alternativt kan du vælge en af de andre udbydere. [Læs mere](/docs/providers#directory).
+
+---
+
+## Initialiser
+
+Nu hvor du har konfigureret en udbyder, kan du navigere til et projekt, der
+du vil arbejde på.
+
+```bash
+cd /path/to/project
+```
+
+Og kør OpenCode.
+
+```bash
+opencode
+```
+
+Derefter initialiseres OpenCode for projektet ved at køre følgende kommando.
+
+```bash frame="none"
+/init
+```
+
+Dette får OpenCode til at analysere dit projekt og oprette en `AGENTS.md` fil i
+projektets stang.
+
+:::tip
+Du bør overgive dit projekter `AGENTS.md` fil til Git.
+:::
+
+Dette hjælper OpenCode med at forstå projektstrukturen og kodningsmønstrene
+brugt.
+
+---
+
+## Brug
+
+Du er nu klar til at bruge OpenCode til at arbejde på dit projekt. Spørg det gerne
+noget!
+
+Hvis du er ny til at bruge en AI-kodningsagent, er her nogle eksempler, der evt
+hjælp.
+
+---
+
+### Stil spørgsmål
+
+Du kan bede OpenCode om at forklare kodebasen for dig.
+
+:::tip
+Brug `@`-tasten til at søge efter filer i projektet.
+:::
+
+```txt frame="none" "@packages/functions/src/api/index.ts"
+How is authentication handled in @packages/functions/src/api/index.ts
+```
+
+Dette er nyttigt, hvis der er en del af kodebasen, som du ikke har arbejdet på.
+
+---
+
+### Tilføj funktioner
+
+Du kan bede OpenCode om at tilføje nye funktioner til dit projekt. Selvom vi først anbefaler, at du beder den om at lave en plan.
+
+1. **Opret en plan**
+
+ OpenCode har en _Plan mode_, der deaktiverer dens evne til at foretage ændringer og
+ foreslå i stedet _hvordan_ det vil implementere funktionen.
+
+ Skift til det ved hjælp af **Tab**-tasten. Du vil se en indikator for dette i nederste højre hjørne.
+
+ ```bash frame="none" title="Switch to Plan mode"
+
+ ```
+
+ Lad os nu beskrive, hvad vi vil have den til at gøre.
+
+ ```txt frame="none"
+ When a user deletes a note, we'd like to flag it as deleted in the database.
+ Then create a screen that shows all the recently deleted notes.
+ From this screen, the user can undelete a note or permanently delete it.
+ ```
+
+ Du vil give OpenCode nok detaljer til at forstå, hvad du ønsker. Det hjælper
+ at tale med det, som om du taler med en juniorudvikler på dit team.
+
+Drikkepenge
+Giv OpenCode masser af kontekst og eksempler for at hjælpe den med at forstå, hvad du
+mangel.
+:::
+
+2. **Gentag om planen**
+
+ Når det giver dig en plan, kan du give den feedback eller tilføje flere detaljer.
+
+ ```txt frame="none"
+ We'd like to design this new screen using a design I've used before.
+ [Image #1] Take a look at this image and use it as a reference.
+ ```
+
+Drikkepenge
+Træk og slip billeder i terminalen for at tilføje dem til prompten.
+:::
+
+OpenCode kan scanne alle billeder, du giver dem og tilføje dem til prompten. Det kan du
+gør dette ved at trække og slippe et billede ind i terminalen.
+
+3. **Byg funktionen**
+
+ Når du føler dig godt tilpas med planen, skal du skifte tilbage til _Byggetilstand_ ved
+ trykke på **Tab**-tasten igen.
+
+ ```bash frame="none"
+
+ ```
+
+ Og beder den om at foretage ændringerne.
+
+ ```bash frame="none"
+ Sounds good! Go ahead and make the changes.
+ ```
+
+---
+
+### Foretag ændringer
+
+For mere ligetil ændringer kan du bede OpenCode om at bygge den direkte
+uden at skulle gennemgå planen først.
+
+```txt frame="none" "@packages/functions/src/settings.ts" "@packages/functions/src/notes.ts"
+We need to add authentication to the /settings route. Take a look at how this is
+handled in the /notes route in @packages/functions/src/notes.ts and implement
+the same logic in @packages/functions/src/settings.ts
+```
+
+Du vil sikre dig, at du giver en god mængde detaljer, så OpenCode gør det rigtige
+ændringer.
+
+---
+
+### Fortryd ændringer
+
+Lad os sige, at du beder OpenCode om at foretage nogle ændringer.
+
+```txt frame="none" "@packages/functions/src/api/index.ts"
+Can you refactor the function in @packages/functions/src/api/index.ts?
+```
+
+Men du indser, at det ikke er, hvad du ønskede. Du **kan fortryde** ændringerne
+ved hjælp af kommandoen `/undo`.
+
+```bash frame="none"
+/undo
+```
+
+OpenCode vil nu vende tilbage til ændringerne, du har foretaget, og vise din oprindelige besked
+igen.
+
+```txt frame="none" "@packages/functions/src/api/index.ts"
+Can you refactor the function in @packages/functions/src/api/index.ts?
+```
+
+Herfra kan du justere prompten og bede OpenCode om at prøve igen.
+
+:::tip
+Du kan køre `/undo` flere gange for at fortryde flere ændringer.
+:::
+
+Eller du **kan gentage** ændringerne ved hjælp af kommandoen `/redo`.
+
+```bash frame="none"
+/redo
+```
+
+---
+
+## Del
+
+De samtaler, du har med OpenCode, kan [deles med din
+team](/docs/share).
+
+```bash frame="none"
+/share
+```
+
+Dette vil oprette et link til den aktuelle samtale og kopiere det til denne udklipsholder.
+
+:::note
+Samtaler dele ikke som standard.
+:::
+
+Her er en [eksempelsamtale](https://opencode.ai/s/4XP1fce5) med OpenCode.
+
+---
+
+## Tilpas
+
+Og det er det! Du er nu en professionel i at bruge OpenCode.
+
+For at gøre det til dit eget, anbefaler vi [picking a theme](/docs/themes), [customizing the keybinds](/docs/keybinds), [configuring code formatters](/docs/formatters), [creating custom commands](/docs/commands) eller at lege med [OpenCode config](/docs/config).
diff --git a/packages/web/src/content/docs/da/keybinds.mdx b/packages/web/src/content/docs/da/keybinds.mdx
new file mode 100644
index 000000000..ce774cedc
--- /dev/null
+++ b/packages/web/src/content/docs/da/keybinds.mdx
@@ -0,0 +1,192 @@
+---
+title: Nøglebind
+description: Tilpas dine nøglebindinger.
+---
+
+OpenCode har en liste over nøglebindinger, som du kan tilpasse gennem OpenCode-konfigurationen.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "keybinds": {
+ "leader": "ctrl+x",
+ "app_exit": "ctrl+c,ctrl+d,q",
+ "editor_open": "e",
+ "theme_list": "t",
+ "sidebar_toggle": "b",
+ "scrollbar_toggle": "none",
+ "username_toggle": "none",
+ "status_view": "s",
+ "tool_details": "none",
+ "session_export": "x",
+ "session_new": "n",
+ "session_list": "l",
+ "session_timeline": "g",
+ "session_fork": "none",
+ "session_rename": "none",
+ "session_share": "none",
+ "session_unshare": "none",
+ "session_interrupt": "escape",
+ "session_compact": "c",
+ "session_child_cycle": "right",
+ "session_child_cycle_reverse": "left",
+ "session_parent": "up",
+ "messages_page_up": "pageup,ctrl+alt+b",
+ "messages_page_down": "pagedown,ctrl+alt+f",
+ "messages_line_up": "ctrl+alt+y",
+ "messages_line_down": "ctrl+alt+e",
+ "messages_half_page_up": "ctrl+alt+u",
+ "messages_half_page_down": "ctrl+alt+d",
+ "messages_first": "ctrl+g,home",
+ "messages_last": "ctrl+alt+g,end",
+ "messages_next": "none",
+ "messages_previous": "none",
+ "messages_copy": "y",
+ "messages_undo": "u",
+ "messages_redo": "r",
+ "messages_last_user": "none",
+ "messages_toggle_conceal": "h",
+ "model_list": "m",
+ "model_cycle_recent": "f2",
+ "model_cycle_recent_reverse": "shift+f2",
+ "model_cycle_favorite": "none",
+ "model_cycle_favorite_reverse": "none",
+ "variant_cycle": "ctrl+t",
+ "command_list": "ctrl+p",
+ "agent_list": "a",
+ "agent_cycle": "tab",
+ "agent_cycle_reverse": "shift+tab",
+ "input_clear": "ctrl+c",
+ "input_paste": "ctrl+v",
+ "input_submit": "return",
+ "input_newline": "shift+return,ctrl+return,alt+return,ctrl+j",
+ "input_move_left": "left,ctrl+b",
+ "input_move_right": "right,ctrl+f",
+ "input_move_up": "up",
+ "input_move_down": "down",
+ "input_select_left": "shift+left",
+ "input_select_right": "shift+right",
+ "input_select_up": "shift+up",
+ "input_select_down": "shift+down",
+ "input_line_home": "ctrl+a",
+ "input_line_end": "ctrl+e",
+ "input_select_line_home": "ctrl+shift+a",
+ "input_select_line_end": "ctrl+shift+e",
+ "input_visual_line_home": "alt+a",
+ "input_visual_line_end": "alt+e",
+ "input_select_visual_line_home": "alt+shift+a",
+ "input_select_visual_line_end": "alt+shift+e",
+ "input_buffer_home": "home",
+ "input_buffer_end": "end",
+ "input_select_buffer_home": "shift+home",
+ "input_select_buffer_end": "shift+end",
+ "input_delete_line": "ctrl+shift+d",
+ "input_delete_to_line_end": "ctrl+k",
+ "input_delete_to_line_start": "ctrl+u",
+ "input_backspace": "backspace,shift+backspace",
+ "input_delete": "ctrl+d,delete,shift+delete",
+ "input_undo": "ctrl+-,super+z",
+ "input_redo": "ctrl+.,super+shift+z",
+ "input_word_forward": "alt+f,alt+right,ctrl+right",
+ "input_word_backward": "alt+b,alt+left,ctrl+left",
+ "input_select_word_forward": "alt+shift+f,alt+shift+right",
+ "input_select_word_backward": "alt+shift+b,alt+shift+left",
+ "input_delete_word_forward": "alt+d,alt+delete,ctrl+delete",
+ "input_delete_word_backward": "ctrl+w,ctrl+backspace,alt+backspace",
+ "history_previous": "up",
+ "history_next": "down",
+ "terminal_suspend": "ctrl+z",
+ "terminal_title_toggle": "none",
+ "tips_toggle": "h",
+ "display_thinking": "none"
+ }
+}
+```
+
+---
+
+## Ledernøgle
+
+OpenCode bruger en `leader` nøgle til de fleste smagsbindinger. Dette undgår konflikter i din terminal.
+
+Som standard er `ctrl+x` ledertasten, og de fleste handlinger kræver, at du først trykker på ledertasten og derefter genvejen. For eksempel, for at starte en ny session, skal du først trykke på `ctrl+x` og derefter trykke på `n`.
+
+Du behøver ikke bruge en ledernøgle til dine nøglebindinger, men vi anbefaler at du gør det.
+
+---
+
+## Deaktiver smagsbinding
+
+Du kan deaktivere en nøglebinding ved at tilføje nøglen til din konfiguration med værdien "ingen".
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "keybinds": {
+ "session_compact": "none"
+ }
+}
+```
+
+---
+
+## Genveje til skrivebordsprompt
+
+OpenCode desktop app prompt input understøtter almindelige Readline/Emacs-style genveje til redigering af tekst. Disse er indbyggede og i øjeblikket ikke konfigurerede via `opencode.json`.
+
+| Genvej | Håndtering |
+| -------- | ------------------------------------------- |
+| `ctrl+a` | Flyt til starten af den aktuelle linje |
+| `ctrl+e` | Flyt til slutningen af den aktuelle linje |
+| `ctrl+b` | Flyt markøren et tegn tilbage |
+| `ctrl+f` | Flyt markøren et tegn frem |
+| `alt+b` | Flyt markøren et ord tilbage |
+| `alt+f` | Flyt markøren et ord frem |
+| `ctrl+d` | Slet tegn under markøren |
+| `ctrl+k` | Dræb til slutningen af linjen |
+| `ctrl+u` | Dræb til starten af linjen |
+| `ctrl+w` | Dræb forrige ord |
+| `alt+d` | Dræb næste ord |
+| `ctrl+t` | Transponer tegn |
+| `ctrl+g` | Annuller popovers / afbryd kørsel af svar |
+
+---
+
+## Shift+Enter
+
+Nogle terminaler sender ikke modifikationsnøgler med Enter som standard. Du skal muligvis konfigurere din terminal til at sende `Shift+Enter` som en escape-sekvens.
+
+### Windows Terminal
+
+Åbn din `settings.json` på:
+
+```
+%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
+```
+
+Føj dette til `actions`-arrayet på rodniveau:
+
+```json
+"actions": [
+ {
+ "command": {
+ "action": "sendInput",
+ "input": "\u001b[13;2u"
+ },
+ "id": "User.sendInput.ShiftEnterCustom"
+ }
+]
+```
+
+Føj dette til `keybindings`-arrayet på rodniveau:
+
+```json
+"keybindings": [
+ {
+ "keys": "shift+enter",
+ "id": "User.sendInput.ShiftEnterCustom"
+ }
+]
+```
+
+Gem fil og genstart Windows Terminal eller åbn en ny fane.
diff --git a/packages/web/src/content/docs/da/lsp.mdx b/packages/web/src/content/docs/da/lsp.mdx
new file mode 100644
index 000000000..c6f42c18d
--- /dev/null
+++ b/packages/web/src/content/docs/da/lsp.mdx
@@ -0,0 +1,188 @@
+---
+title: LSP Servere
+description: OpenCode integreres med dine LSP-servere.
+---
+
+OpenCode integreres med din sprogserverprotokol (LSP) for at hjælpe LLM med at interagere med din kodebase. Den bruger diagnostik til at give feedback til LLM.
+
+---
+
+## Indbygget
+
+OpenCode leveres med flere indbyggede LSP-servere til populære sprog:
+
+| LSP Server | Udvidelser | Krav |
+| ------------------- | --------------------------------------------------------- | --------------------------------------------------------------- |
+| astro | .astro | Autoinstallationer til Astro-projekter |
+| bash | .sh,.bash,.zsh,.ksh | Autoinstallerer bash-language-server |
+| clangd | .c,.cpp,.cc,.cxx,.c++,.h,.hpp,.hh,.hxx,.h++ | Autoinstallationer for C/C++ projekter |
+| csharp | .cs | `.NET SDK` installere |
+| clojure-lsp | .clj,.cljs,.cljc,.edn | `clojure-lsp` kommando tilgængelig |
+| dart | .dart | `dart` kommando tilgængelig |
+| deno | .ts,.tsx,.js,.jsx,.mjs | `deno` kommando tilgængelig (auto-detects deno.json/deno.jsonc) |
+| eliksir-ls | .ex,.exs | `elixir` kommando tilgængelig |
+| eslint | .ts,.tsx,.js,.jsx,.mjs,.cjs,.mts,.cts,.vue | `eslint` afhængighed i projekt |
+| fskarp | .fs,.fsi,.fsx,.fsscript | `.NET SDK` installere |
+| glimt | .glimt | `gleam` kommando tilgængelig |
+| gopls | .go | `go` kommando tilgængelig |
+| hls | .hs,.lhs | `haskell-language-server-wrapper` kommando tilgængelig |
+| jdtls | .java | `Java SDK (version 21+)` installere |
+| kotlin-ls | .kt,.kts | Autoinstallationer til Kotlin-projekter |
+| lua-ls | .lua | Autoinstallationer til Lua-projekter |
+| nixd | .nix | `nixd` kommando tilgængelig |
+| ocaml-lsp | .ml,.mli | `ocamllsp` kommando tilgængelig |
+| oxlint | .ts,.tsx,.js,.jsx,.mjs,.cjs,.mts,.cts,.vue,.astro,.svelte | `oxlint` afhængighed i projekt |
+| php intelephense | .php | Automatiske installationer til PHP-projekter |
+| prisma | .prisma | `prisma` kommando tilgængelig |
+| ophavsret | .py,.pyi | `pyright` afhængig installeret |
+| rubin-lsp (rubocop) | .rb,.rake,.gemspec,.ru | `ruby` og `gem` kommandoer tilgængelige |
+| rust | .rs | `rust-analyzer` kommando tilgængelig |
+| sourcekit-lsp | .swift,.objc,.objcpp | `swift` installere (`xcode` på macOS) |
+| svelte | .svelte | Autoinstallationer til Svelte-projekter |
+| terraform | .tf,.tfvars | Automatiske installationer fra GitHub-udgivelser |
+| lillemand | .typ,.typc | Automatiske installationer fra GitHub-udgivelser |
+| maskinskrift | .ts,.tsx,.js,.jsx,.mjs,.cjs,.mts,.cts | `typescript` afhængighed i projekt |
+| vue | .vue | Autoinstallationer til Vue-projekter |
+| yaml-ls | .yaml,.yml | Autoinstallerer Red Hat yaml-language-server |
+| zls | .zig,.zon | `zig` kommando tilgængelig |
+
+LSP-servere aktiveres automatisk, når en af ovnstående filtypenavne opdages, og kravene er opfyldt.
+
+:::note
+Du kan deaktivere automatisk LSP-serverdownloads ved at indstille miljøvariablen `OPENCODE_DISABLE_LSP_DOWNLOAD` til `true`.
+:::
+
+---
+
+## Sådan fungerer det
+
+Når opencode åbner en fil, vil den:
+
+1. Kontrollerer filtypenavnet mod alle aktiverede LSP-servere.
+2. Starter den relevante LSP-server, hvis den ikke allerede kører.
+
+---
+
+## Konfigurer
+
+Du kan tilpasse LSP-servere gennem sektionen `lsp` i din opencode-konfiguration.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "lsp": {}
+}
+```
+
+Hver LSP- server understøtter følgende:
+
+| Ejendom | Skriv | Beskrivelse |
+| ---------------- | -------- | --------------------------------------------------------- |
+| `disabled` | boolsk | Indstil dette til `true` for at deaktivere LSP-serveren |
+| `command` | styrke[] | Kommandoen til at starte LSP-serveren |
+| `extensions` | styrke[] | Filtypenavne, som denne LSP-server skal håndtere |
+| `env` | objekt | Miljøvariabler, der skal indstilles, når serveren starter |
+| `initialization` | objekt | Initialiseringsmuligheder for at sende til LSP-serveren |
+
+Lad os se på nogle eksempler.
+
+---
+
+### Miljøvariabler
+
+Brug egenskaben `env` til at indstille miljøvariabler, når du starter LSP-serveren:
+
+```json title="opencode.json" {5-7}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "lsp": {
+ "rust": {
+ "env": {
+ "RUST_LOG": "debug"
+ }
+ }
+ }
+}
+```
+
+---
+
+### Initialiseringsmuligheder
+
+Brug egenskaben `initialization` til at videregive initialiseringsindstillinger til LSP-serveren. Disse er serverspecifikke indstillinger sendt under LSP `initialize` anmodningen:
+
+```json title="opencode.json" {5-9}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "lsp": {
+ "typescript": {
+ "initialization": {
+ "preferences": {
+ "importModuleSpecifierPreference": "relative"
+ }
+ }
+ }
+ }
+}
+```
+
+:::note
+Initialiseringsmuligheder forskellige afhængige af LSP-serveren. Se din LSP-servers dokumentation for tilgængelige muligheder.
+:::
+
+---
+
+### Deaktivering af LSP-servere
+
+For at deaktivere **alle** LSP-servere globalt, skal du indstille `lsp` til `false`:
+
+```json title="opencode.json" {3}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "lsp": false
+}
+```
+
+For at deaktivere en **specifik** LSP-server skal du indstille `disabled` til `true`:
+
+```json title="opencode.json" {5}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "lsp": {
+ "typescript": {
+ "disabled": true
+ }
+ }
+}
+```
+
+---
+
+### Brugerdefinerede LSP-servere
+
+Du kan tilføje brugerdefinerede LSP-servere ved at angive kommandoen og filtypenavne:
+
+```json title="opencode.json" {4-7}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "lsp": {
+ "custom-lsp": {
+ "command": ["custom-lsp-server", "--stdio"],
+ "extensions": [".custom"]
+ }
+ }
+}
+```
+
+---
+
+## Yderligere oplysninger
+
+### PHP Intelephense
+
+PHP Intelephense tilbyder premium funktioner gennem en licensnøgle. Du kan angive en licensnøgle ved at placere (kun) nøglen i en tekstfil på:
+
+- På macOS/Linux: `$HOME/intelephense/licence.txt`
+- På Windows: `%USERPROFILE%/intelephense/licence.txt`
+
+Filen bør kun indeholde licensnøglen uden yderligere indhold.
diff --git a/packages/web/src/content/docs/da/mcp-servers.mdx b/packages/web/src/content/docs/da/mcp-servers.mdx
new file mode 100644
index 000000000..91f2e7cb9
--- /dev/null
+++ b/packages/web/src/content/docs/da/mcp-servers.mdx
@@ -0,0 +1,511 @@
+---
+title: MCP servere
+description: Tilføj lokale og eksterne MCP værktøjer.
+---
+
+Du kan tilføje eksterne værktøjer til OpenCode ved hjælp af _Model Context Protocol_ eller MCP. OpenCode understøtter både lokale og eksterne servere.
+
+Når de er tilføjet, er MCP automatisk tilgængelig for LLM sammen med indbyggede værktøjer.
+
+---
+
+#### Forse
+
+Når du bruger en MCP-server, føjes den til konteksten. Dette kan hurtigt stige, hvis du har mange værktøjer. Så vi anbefaler at være forsigtig med hvilke MCP-servere du bruger.
+
+:::tip
+MCP-servere tilføjer til din kontekst, så du vil være forsigtig med, hvilke du aktiverer.
+:::
+
+Visse MCP-servere, som GitHub MCP-servere, har en tendens til at tilføje mange tokens og kan nemt overskride kontekstgrænsen.
+
+---
+
+## Aktiver
+
+Du kan definere MCP-servere i din [OpenCode Config](https://opencode.ai/docs/config/) under `mcp`. Tilføj hver MCP med et unikt navn. Du kan henvise til denne MCP ved navn, når du spørger LLM.
+
+```jsonc title="opencode.jsonc" {6}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "name-of-mcp-server": {
+ // ...
+ "enabled": true,
+ },
+ "name-of-other-mcp-server": {
+ // ...
+ },
+ },
+}
+```
+
+Du kan også deaktivere en server ved at indstille `enabled` til `false`. Dette er nyttigt, hvis du midlertidigt vil deaktivere en server uden at fjerne den fra din konfiguration.
+
+---
+
+### Tilsidesættelse af fjernindstillinger
+
+Organisationer kan levere standard MCP-servere via deres `.well-known/opencode`-slutpunkt. Disse servere kan være deaktiveret som standard, hvilket giver brugerne mulighed for at tilmelde sig dem, de har brug for.
+
+For at aktivere en specifik server fra din organisationers fjernkonfiguration skal du tilføje den til din lokale konfiguration med `enabled: true`:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "jira": {
+ "type": "remote",
+ "url": "https://jira.example.com/mcp",
+ "enabled": true
+ }
+ }
+}
+```
+
+Dine lokale konfigurationsværdier tilsidesætter fjernstandarderne. Se [config precedence](/docs/config#precedence-order) for flere detaljer.
+
+---
+
+## Lokal
+
+Tilføj lokale MCP-servere ved hjælp af `type` til `"local"` i MCP-objektet.
+
+```jsonc title="opencode.jsonc" {15}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "my-local-mcp-server": {
+ "type": "local",
+ // Or ["bun", "x", "my-mcp-command"]
+ "command": ["npx", "-y", "my-mcp-command"],
+ "enabled": true,
+ "environment": {
+ "MY_ENV_VAR": "my_env_var_value",
+ },
+ },
+ },
+}
+```
+
+Kommandoen er, hvordan den lokale MCP-server starter. Du kan også sende en liste over miljøvariabler ind.
+
+For eksempel, her er, hvordan du kan tilføje test [`@modelcontextprotocol/server-everything`](MCP) MCP serveren.
+
+```jsonc title="opencode.jsonc"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "mcp_everything": {
+ "type": "local",
+ "command": ["npx", "-y", "@modelcontextprotocol/server-everything"],
+ },
+ },
+}
+```
+
+Og for at bruge det kan jeg tilføje `use the mcp_everything tool` til mine prompter.
+
+```txt "mcp_everything"
+use the mcp_everything tool to add the number 3 and 4
+```
+
+---
+
+#### Indstillinger
+
+Her er alle muligheder for at konfigurere en lokal MCP-server.
+
+| Mulighed | Skriv | Påkrævet | Beskrivelse |
+| ------------- | ------- | -------- | ------------------------------------------------------------------------------------ |
+| `type` | String | Y | Type MCP serverforbindelse, skal være `"local"`. |
+| `command` | Array | Y | Kommando og argumenter til at køre MCP-serveren. |
+| `environment` | Objekt | | Miljøvariabler, der skal indstilles, når serveren kører. |
+| `enabled` | Boolean | | Aktiver eller deaktiver MCP-serveren ved opstart. |
+| `timeout` | Nummer | | Timeout i ms for at hente værktøjer fra MCP-serveren. Standard er 5000 (5 sekunder). |
+
+---
+
+## Fjernbetjening
+
+Tilføj ekstern MCP-server ved at indstille `type` til `"remote"`.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "my-remote-mcp": {
+ "type": "remote",
+ "url": "https://my-mcp-server.com",
+ "enabled": true,
+ "headers": {
+ "Authorization": "Bearer MY_API_KEY"
+ }
+ }
+ }
+}
+```
+
+`url` er URL for den eksterne MCP server, og med indstillingen `headers` kan du sende en liste over overskrifter ind.
+
+---
+
+#### Indstillinger
+
+| Mulighed | Skriv | Påkrævet | Beskrivelse |
+| --------- | ------- | -------- | ------------------------------------------------------------------------------------ |
+| `type` | String | Y | Type MCP serverforbindelse, skal være `"remote"`. |
+| `url` | String | Y | URL af den eksterne MCP-server. |
+| `enabled` | Boolean | | Aktiver eller deaktiver MCP-serveren ved opstart. |
+| `headers` | Objekt | | Overskrifter til at sende med anmodningen. |
+| `oauth` | Objekt | | OAuth-godkendelseskonfiguration. Se afsnittet [OAuth](#oauth) nedenfor. |
+| `timeout` | Nummer | | Timeout i ms for at hente værktøjer fra MCP-serveren. Standard er 5000 (5 sekunder). |
+
+---
+
+## OAuth
+
+OpenCode håndterer automatisk OAuth-godkendelse for eksterne MCP-servere. Når en server kræver godkendelse, vil OpenCode:
+
+1. Registrer 401-svaret, og start OAuth-flowet
+2. Brug **Dynamic Client Registration (RFC 7591)**, hvis det understøtter af serveren
+3. Opbevar tokens sikkert til fremtidige anmodninger
+
+---
+
+### Automatisk
+
+For de fleste OAuth-aktiverede MCP-servere kræver ingen speciel konfiguration. Bare konfigureret fjernserver:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "my-oauth-server": {
+ "type": "remote",
+ "url": "https://mcp.example.com/mcp"
+ }
+ }
+}
+```
+
+Hvis serveren kræver godkendelse, vil OpenCode bede dig om at godkende, når du prøver at bruge den første gang. Hvis ikke, kan du [manually trigger the flow](#authenticating) med `opencode mcp auth `.
+
+---
+
+### Forudregistreret
+
+Hvis du har klientlegitimationsoplysninger fra MCP-serverudbyderen, kan du konfigurere dem:
+
+```json title="opencode.json" {7-11}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "my-oauth-server": {
+ "type": "remote",
+ "url": "https://mcp.example.com/mcp",
+ "oauth": {
+ "clientId": "{env:MY_MCP_CLIENT_ID}",
+ "clientSecret": "{env:MY_MCP_CLIENT_SECRET}",
+ "scope": "tools:read tools:execute"
+ }
+ }
+ }
+}
+```
+
+---
+
+### Godkender
+
+Du kan manuelt udløse godkendelse eller administrere legitimationsoplysninger.
+
+Godkendt med en specifik MCP-server:
+
+```bash
+opencode mcp auth my-oauth-server
+```
+
+Liste over alle MCP-servere og deres godkendelsesstatus:
+
+```bash
+opencode mcp list
+```
+
+Fjern gemte legitimationsoplysninger:
+
+```bash
+opencode mcp logout my-oauth-server
+```
+
+Kommandoen `mcp auth` åbner din browser for godkendelse. Når du har godkendt, vil OpenCode opbevare tokens sikkert i `~/.local/share/opencode/mcp-auth.json`.
+
+---
+
+#### Deaktiverer OAuth
+
+Hvis du vil deaktivere automatisk OAuth for en server (f.eks. for servere, der bruger API nøgler i stedet), skal du indstille `oauth` til `false`:
+
+```json title="opencode.json" {7}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "my-api-key-server": {
+ "type": "remote",
+ "url": "https://mcp.example.com/mcp",
+ "oauth": false,
+ "headers": {
+ "Authorization": "Bearer {env:MY_API_KEY}"
+ }
+ }
+ }
+}
+```
+
+---
+
+#### OAuth-indstillinger
+
+| Mulighed | Skriv | Beskrivelse |
+| -------------- | --------------- | ----------------------------------------------------------------------------------------- |
+| `oauth` | Objekt \| falsk | OAuth-konfigurationsobjekt eller `false` for at deaktivere OAuth-auto-detektion. |
+| `clientId` | String | OAuth-klient-id. Hvis det ikke er angivet, vil dynamisk klientregistrering blive forsøgt. |
+| `clientSecret` | String | OAuth-klienthemmelighed, hvis det kræves af autorisationsserveren. |
+| `scope` | String | OAuth-omfang at anmode om under godkendelse. |
+
+#### Fejlretning
+
+Hvis en ekstern MCP-server ikke kan godkendes, kan du diagnosticere problemer med:
+
+```bash
+# View auth status for all OAuth-capable servers
+opencode mcp auth list
+
+# Debug connection and OAuth flow for a specific server
+opencode mcp debug my-oauth-server
+```
+
+Kommandoen `mcp debug` viser den aktuelle godkendelsesstatus, tester HTTP-forbindelse og forsøger OAuth-opdagelsesflowet.
+
+---
+
+## Administrator
+
+Dine MCPs er tilgængelige som værktøjer i **TK\_** sammen med indbyggede værktøjer. Så du kan administrere dem gennem OpenCode-konfigurationen som ethvert andet værktøj.
+
+---
+
+### Global
+
+Det betyder, at du kan aktivere eller deaktivere dem globalt.
+
+```json title="opencode.json" {14}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "my-mcp-foo": {
+ "type": "local",
+ "command": ["bun", "x", "my-mcp-command-foo"]
+ },
+ "my-mcp-bar": {
+ "type": "local",
+ "command": ["bun", "x", "my-mcp-command-bar"]
+ }
+ },
+ "tools": {
+ "my-mcp-foo": false
+ }
+}
+```
+
+Vi kan også bruge et globmønster til at deaktivere alle matchende MCPs.
+
+```json title="opencode.json" {14}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "my-mcp-foo": {
+ "type": "local",
+ "command": ["bun", "x", "my-mcp-command-foo"]
+ },
+ "my-mcp-bar": {
+ "type": "local",
+ "command": ["bun", "x", "my-mcp-command-bar"]
+ }
+ },
+ "tools": {
+ "my-mcp*": false
+ }
+}
+```
+
+Her bruger vi globmønsteret `my-mcp*` til at deaktivere alle MCPs.
+
+---
+
+### Pr. agent
+
+Hvis du har et stort antal MCP-servere, vil du måske kun aktivere dem pr. agent og deaktivere dem globalt. Sådan gør du:
+
+1. Deaktiver det som et værktøj globalt.
+2. Aktiver MCP-serveren som et værktøj i din [agent config](/docs/agents#tools).
+
+```json title="opencode.json" {11, 14-18}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "my-mcp": {
+ "type": "local",
+ "command": ["bun", "x", "my-mcp-command"],
+ "enabled": true
+ }
+ },
+ "tools": {
+ "my-mcp*": false
+ },
+ "agent": {
+ "my-agent": {
+ "tools": {
+ "my-mcp*": true
+ }
+ }
+ }
+}
+```
+
+---
+
+#### Glob-mønstre
+
+Glob-mønsteret bruger simple regex-globing-mønstre:
+
+- `*` matcher nul eller flere af ethvert tegn (f.eks. `"my-mcp*"` matcher `my-mcp_search`, `my-mcp_list` osv.)
+- `?` matcher nøjagtigt ét tegn
+- Alle andre karakterer matcher bogstaveligt talt
+
+:::note
+MCP serverværktøjer er registreret med servernavn som præfiks, så for at deaktivere alle værktøjer til en server skal du blot bruge:
+
+```
+"mymcpservername_*": false
+```
+
+:::
+
+---
+
+## Eksempler
+
+Nedenfor er eksempler på nogle almindelige MCP-servere. Du kan indsende en PR, hvis du vil dokumentere andre servere.
+
+---
+
+### Vagtvagt
+
+Tilføj [Sentry MCP server](https://mcp.sentry.dev) for at interagere med dine Sentry-projekter og -problemer.
+
+```json title="opencode.json" {4-8}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "sentry": {
+ "type": "remote",
+ "url": "https://mcp.sentry.dev/mcp",
+ "oauth": {}
+ }
+ }
+}
+```
+
+Efter tilføjelse af konfigurationen skal du godkende med Sentry:
+
+```bash
+opencode mcp auth sentry
+```
+
+Dette åbner et browservindue for at fuldføre OAuth-flowet og forbinde OpenCode til din Sentry-konto.
+
+Når du er godkendt, kan du bruge Sentry-værktøjer i dine prompter til at forespørge om problemer, projekter og fejldata.
+
+```txt "use sentry"
+Show me the latest unresolved issues in my project. use sentry
+```
+
+---
+
+### Kontekst7
+
+Tilføj [Context7 MCP server](https://github.com/upstash/context7) for at søge i dokumenter.
+
+```json title="opencode.json" {4-7}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "context7": {
+ "type": "remote",
+ "url": "https://mcp.context7.com/mcp"
+ }
+ }
+}
+```
+
+Hvis du har tilmeldt dig en gratis konto, kan du bruge din API nøgle og få højere satsgrænser.
+
+```json title="opencode.json" {7-9}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "context7": {
+ "type": "remote",
+ "url": "https://mcp.context7.com/mcp",
+ "headers": {
+ "CONTEXT7_API_KEY": "{env:CONTEXT7_API_KEY}"
+ }
+ }
+ }
+}
+```
+
+Her antager vi, at du har sat miljøvariablen `CONTEXT7_API_KEY`.
+
+Føj `use context7` til dine prompter for at bruge Context7 MCP server.
+
+```txt "use context7"
+Configure a Cloudflare Worker script to cache JSON API responses for five minutes. use context7
+```
+
+Alternativt kan du tilføje noget som dette til din [AGENTS.md](/docs/rules/).
+
+```md title="AGENTS.md"
+When you need to search docs, use `context7` tools.
+```
+
+---
+
+### Grep af Vercel
+
+Tilføj serveren [Grep by Vercel](https://grep.app) MCP for at søge gennem kodestykker på GitHub.
+
+```json title="opencode.json" {4-7}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "gh_grep": {
+ "type": "remote",
+ "url": "https://mcp.grep.app"
+ }
+ }
+}
+```
+
+Da vi navngav vores MCP-server `gh_grep`, kan du tilføje `use the gh_grep tool` til dine prompter for at få agenten til at bruge den.
+
+```txt "use the gh_grep tool"
+What's the right way to set a custom domain in an SST Astro component? use the gh_grep tool
+```
+
+Alternativt kan du tilføje noget som dette til din [AGENTS.md](/docs/rules/).
+
+```md title="AGENTS.md"
+If you are unsure how to do something, use `gh_grep` to search code examples from GitHub.
+```
diff --git a/packages/web/src/content/docs/da/models.mdx b/packages/web/src/content/docs/da/models.mdx
new file mode 100644
index 000000000..c929173fe
--- /dev/null
+++ b/packages/web/src/content/docs/da/models.mdx
@@ -0,0 +1,223 @@
+---
+title: Modeller
+description: Konfiguration af en LLM udbyder og model.
+---
+
+OpenCode bruger [AI SDK](https://ai-sdk.dev/) og [Models.dev](https://models.dev) til at understøtte **75+ LLM udbydere** og det understøtter at køre lokale modeller.
+
+---
+
+## Udbydere
+
+De fleste populære udbydere er forudindlæst som standard. Hvis du har tilføjet legitimationsoplysningerne for en udbyder gennem kommandoen `/connect`, vil de være tilgængelige, når du starter OpenCode.
+
+Få mere at vide om [providers](/docs/providers).
+
+---
+
+## Vælg en model
+
+Når du har konfigureret din udbyder, kan du vælge den ønskede model ved at indtaste:
+
+```bash frame="none"
+/models
+```
+
+---
+
+## Anbefalede modeller
+
+Der er mange modeller derude, og der kommer nye modeller hver uge.
+
+:::tip
+Overvej at bruge en af de modeller, vi anbefaler.
+:::
+
+Der er dog kun få af dem, der er gode til både at generere kode og værktøjsopkald.
+
+Her er flere modeller, der fungerer godt med OpenCode, uden bestemt rækkefølge. (Dette er ikke en udtømmende liste og er heller ikke nødvendigvis opdateret):
+
+- GPT 5.2
+- GPT 5.1 Codex
+- Claude Opus 4,5
+- Claude Sonnet 4,5
+- Minimax M2.1
+- Gemini 3 Pro
+
+---
+
+## Indstil en standard
+
+For at indstille en af disse som standardmodellen kan du indstille `model`-nøglen i din
+OpenCode konfig.
+
+```json title="opencode.json" {3}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "model": "lmstudio/google/gemma-3n-e4b"
+}
+```
+
+Her er det fulde ID `provider_id/model_id`. For eksempel, hvis du bruger [OpenCode Zen](/docs/zen), vil du bruge `opencode/gpt-5.1-codex` til GPT 5.1 Codex.
+
+Hvis du har konfigureret en [custom provider](/docs/providers#custom), er `provider_id` nøglen fra `provider` delen af din konfiguration, og `model_id` er nøglen fra `provider.models`.
+
+---
+
+## Konfigurer modeller
+
+Du kan konfigurere en models muligheder globalt gennem konfigurationen.
+
+```jsonc title="opencode.jsonc" {7-12,19-24}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "openai": {
+ "models": {
+ "gpt-5": {
+ "options": {
+ "reasoningEffort": "high",
+ "textVerbosity": "low",
+ "reasoningSummary": "auto",
+ "include": ["reasoning.encrypted_content"],
+ },
+ },
+ },
+ },
+ "anthropic": {
+ "models": {
+ "claude-sonnet-4-5-20250929": {
+ "options": {
+ "thinking": {
+ "type": "enabled",
+ "budgetTokens": 16000,
+ },
+ },
+ },
+ },
+ },
+ },
+}
+```
+
+Her konfigurerer vi globale indstillinger for to indbyggede modeller: `gpt-5` når de tilgås via `openai` udbyderen og `claude-sonnet-4-20250514` når de tilgås via `anthropic` udbyderen.
+Den indbyggede udbyder og modelnavne kan findes på [Models.dev](https://models.dev).
+
+Du kan også konfigurere disse indstillinger for alle agenter, du bruger. Agentkonfigurationen tilsidesætter alle globale muligheder her. [Learn more](/docs/agents/#additional).
+
+Du kan også definere brugerdefinerede varianter, der udvider de indbyggede. Varianter giver dig mulighed for at konfigurere forskellige indstillinger for den samme model uden at oprette duplikerede poster:
+
+```jsonc title="opencode.jsonc" {6-21}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "opencode": {
+ "models": {
+ "gpt-5": {
+ "variants": {
+ "high": {
+ "reasoningEffort": "high",
+ "textVerbosity": "low",
+ "reasoningSummary": "auto",
+ },
+ "low": {
+ "reasoningEffort": "low",
+ "textVerbosity": "low",
+ "reasoningSummary": "auto",
+ },
+ },
+ },
+ },
+ },
+ },
+}
+```
+
+---
+
+## Varianter
+
+Mange modeller understøtter flere varianter med forskellige konfigurationer. OpenCode leveres med indbyggede standardvarianter til populære udbydere.
+
+### Indbyggede varianter
+
+OpenCode leveres med standardvarianter for mange udbydere:
+
+**Anthropic**:
+
+- `high` - Højt tænkende budget (standard)
+- `max` - Maksimalt tænkebudget
+
+**OpenAI**:
+
+Varierer efter model, men nogenlunde:
+
+- `none` - Ingen begrundelse
+- `minimal` - Minimal ræsonnement indsats
+- `low` - Lav ræsonnement indsats
+- `medium` - Middel ræsonnement indsats
+- `high` - Høj ræsonnement indsats
+- `xhigh` - Ekstra høj ræsonnement indsats
+
+**Google**:
+
+- `low` - Lavere effort/token budget
+- `high` - Højere effort/token budget
+
+:::tip
+Denne liste er ikke udtømmende. Mange andre udbydere har også indbyggede standardindstillinger.
+:::
+
+### Brugerdefinerede varianter
+
+Du kan tilsidesætte eksisterende varianter eller tilføje dine egne:
+
+```jsonc title="opencode.jsonc" {7-18}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "openai": {
+ "models": {
+ "gpt-5": {
+ "variants": {
+ "thinking": {
+ "reasoningEffort": "high",
+ "textVerbosity": "low",
+ },
+ "fast": {
+ "disabled": true,
+ },
+ },
+ },
+ },
+ },
+ },
+}
+```
+
+### Cyklusvarianter
+
+Brug tastebindingen `variant_cycle` til hurtigt at skifte mellem varianter. [Learn more](/docs/keybinds).
+
+---
+
+## Indlæser modeller
+
+Når OpenCode starter op, søger den efter modeller i følgende prioriterede rækkefølge:
+
+1. Kommandolinjeflaget `--model` eller `-m`. Formatet er det samme som i konfigurationsfilen: `provider_id/model_id`.
+
+2. Modellisten i OpenCode-konfigurationen.
+
+ ```json title="opencode.json"
+ {
+ "$schema": "https://opencode.ai/config.json",
+ "model": "anthropic/claude-sonnet-4-20250514"
+ }
+ ```
+
+ Formatet her er `provider/model`.
+
+3. Den sidst brugte model.
+
+4. Den første model med en intern prioritet.
diff --git a/packages/web/src/content/docs/da/modes.mdx b/packages/web/src/content/docs/da/modes.mdx
new file mode 100644
index 000000000..42964d434
--- /dev/null
+++ b/packages/web/src/content/docs/da/modes.mdx
@@ -0,0 +1,331 @@
+---
+title: Tilstande
+description: Forskellige tilstande til forskellige anvendelsestilfælde.
+---
+
+:::forsigtighed
+Tilstande er nu konfigureret gennem indstillingen `agent` i opencode-konfigurationen. De
+`mode` mulighed er nu forældet. [Learn more](/docs/agents).
+:::
+
+Tilstande i opencode giver dig mulighed for at tilpasse adfærd, værktøjer og prompter til forskellige brugstilfælde.
+
+Den kommer med to indbyggede tilstande: **build** og **plan**. Du kan tilpasse
+disse eller konfigurer dine egne gennem opencode-konfigurationen.
+
+Du kan skifte mellem tilstande under en session eller konfigurere dem i din konfigurationsfil.
+
+---
+
+## Indbygget
+
+opencode leveres med to indbyggede tilstande.
+
+---
+
+### Byg
+
+Byg er **standard**-tilstanden med alle værktøjer aktiveret. Dette er standardtilstanden for udviklingsarbejde, hvor du har brug for fuld adgang til filhandlinger og systemkommandoer.
+
+---
+
+### Plan
+
+En begrænset tilstand designet til planlægning og analyse. I plantilstand er følgende værktøjer deaktiveret som standard:
+
+- `write` - Kan ikke oprette nye filer
+- `edit` - Kan ikke ændre eksisterende filer, undtagen filer placeret på `.opencode/plans/*.md` for at detaljere selve planen
+- `patch` - Kan ikke anvende patches
+- `bash` - Kan ikke udføre shell-kommandoer
+
+Denne tilstand er nyttig, når du vil have AI til at analysere kode, foreslå ændringer eller oprette planer uden at foretage egentlige ændringer af din kodebase.
+
+---
+
+## Skifter
+
+Du kan skifte mellem tilstande under en session ved at bruge _Tab_-tasten. Eller din konfigurerede `switch_mode` nøglebinding.
+
+Se også: [Formatters](/docs/formatters) for information om konfiguration af kodeformatering.
+
+---
+
+## Konfigurer
+
+Du kan tilpasse de indbyggede tilstande eller oprette dine egne gennem konfiguration. Tilstande kan konfigureres på to måder:
+
+### JSON Konfiguration
+
+Konfigurer tilstande i din `opencode.json`-konfigurationsfil:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mode": {
+ "build": {
+ "model": "anthropic/claude-sonnet-4-20250514",
+ "prompt": "{file:./prompts/build.txt}",
+ "tools": {
+ "write": true,
+ "edit": true,
+ "bash": true
+ }
+ },
+ "plan": {
+ "model": "anthropic/claude-haiku-4-20250514",
+ "tools": {
+ "write": false,
+ "edit": false,
+ "bash": false
+ }
+ }
+ }
+}
+```
+
+### Markdown-konfiguration
+
+Du kan også definere tilstande ved hjælp af markdown-filer. Placer dem i:
+
+- Globalt: `~/.config/opencode/modes/`
+- Projekt: `.opencode/modes/`
+
+```markdown title="~/.config/opencode/modes/review.md"
+---
+model: anthropic/claude-sonnet-4-20250514
+temperature: 0.1
+tools:
+ write: false
+ edit: false
+ bash: false
+---
+
+You are in code review mode. Focus on:
+
+- Code quality and best practices
+- Potential bugs and edge cases
+- Performance implications
+- Security considerations
+
+Provide constructive feedback without making direct changes.
+```
+
+Markdown-filnavnet bliver tilstandsnavnet (f.eks. opretter `review.md` en `review`-tilstand).
+
+Lad os se nærmere på disse konfigurationsmuligheder.
+
+---
+
+### Model
+
+Brug `model`-konfigurationen til at tilsidesætte standardmodellen for denne tilstand. Nyttigt til brug af forskellige modeller optimeret til forskellige opgaver. For eksempel en hurtigere model til planlægning, en mere dygtig model til implementering.
+
+```json title="opencode.json"
+{
+ "mode": {
+ "plan": {
+ "model": "anthropic/claude-haiku-4-20250514"
+ }
+ }
+}
+```
+
+---
+
+### Temperatur
+
+Styr tilfældigheden og kreativiteten af AI's svar med `temperature`-konfigurationen. Lavere værdier gør svar mere fokuserede og deterministiske, mens højere værdier øger kreativitet og variabilitet.
+
+```json title="opencode.json"
+{
+ "mode": {
+ "plan": {
+ "temperature": 0.1
+ },
+ "creative": {
+ "temperature": 0.8
+ }
+ }
+}
+```
+
+Temperaturværdier varierer typisk fra 0,0 til 1,0:
+
+- **0.0-0.2**: Meget fokuserede og deterministiske svar, ideel til kodeanalyse og planlægning
+- **0,3-0,5**: Afbalancerede svar med en vis kreativitet, god til generelle udviklingsopgaver
+- **0.6-1.0**: Mere kreative og varierede svar, nyttige til brainstorming og udforskning
+
+```json title="opencode.json"
+{
+ "mode": {
+ "analyze": {
+ "temperature": 0.1,
+ "prompt": "{file:./prompts/analysis.txt}"
+ },
+ "build": {
+ "temperature": 0.3
+ },
+ "brainstorm": {
+ "temperature": 0.7,
+ "prompt": "{file:./prompts/creative.txt}"
+ }
+ }
+}
+```
+
+Hvis der ikke er angivet nogen temperatur, bruger opencode modelspecifikke standarder (typisk 0 for de fleste modeller, 0,55 for Qwen-modeller).
+
+---
+
+### Spørg
+
+Angiv en brugerdefineret systempromptfil for denne tilstand med `prompt`-konfigurationen. Promptfilen skal indeholde instruktioner, der er specifikke for tilstandens formål.
+
+```json title="opencode.json"
+{
+ "mode": {
+ "review": {
+ "prompt": "{file:./prompts/code-review.txt}"
+ }
+ }
+}
+```
+
+Denne sti er i forhold til, hvor konfigurationsfilen er placeret. Så dette virker for
+både den globale opencode-konfiguration og den projektspecifikke konfiguration.
+
+---
+
+### Værktøjer
+
+Kontroller, hvilke værktøjer der er tilgængelige i denne tilstand med `tools`-konfigurationen. Du kan aktivere eller deaktivere specifikke værktøjer ved at indstille dem til `true` eller `false`.
+
+```json
+{
+ "mode": {
+ "readonly": {
+ "tools": {
+ "write": false,
+ "edit": false,
+ "bash": false,
+ "read": true,
+ "grep": true,
+ "glob": true
+ }
+ }
+ }
+}
+```
+
+Hvis der ikke er angivet nogen værktøjer, er alle værktøjer aktiveret som standard.
+
+---
+
+#### Tilgængelige værktøjer
+
+Her er alle de værktøjer, der kan styres gennem tilstandskonfigurationen.
+
+| Værktøj | Beskrivelse |
+| ----------- | -------------------------- |
+| `bash` | Udfør shell-kommandoer |
+| `edit` | Rediger eksisterende filer |
+| `write` | Opret nye filer |
+| `read` | Læs filindhold |
+| `grep` | Søg filindhold |
+| `glob` | Find filer efter mønster |
+| `list` | Liste biblioteksindhold |
+| `patch` | Anvend patches til filer |
+| `todowrite` | Administrer todo-lister |
+| `todoread` | Læs todo-lister |
+| `webfetch` | Hent webindhold |
+
+---
+
+## Brugerdefinerede tilstande
+
+Du kan oprette dine egne brugerdefinerede tilstande ved at tilføje dem til konfigurationen. Her er eksempler, der bruger begge tilgange:
+
+### Bruger JSON konfiguration
+
+```json title="opencode.json" {4-14}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mode": {
+ "docs": {
+ "prompt": "{file:./prompts/documentation.txt}",
+ "tools": {
+ "write": true,
+ "edit": true,
+ "bash": false,
+ "read": true,
+ "grep": true,
+ "glob": true
+ }
+ }
+ }
+}
+```
+
+### Brug af markdown-filer
+
+Opret tilstandsfiler i `.opencode/modes/` for projektspecifikke tilstande eller `~/.config/opencode/modes/` for globale tilstande:
+
+```markdown title=".opencode/modes/debug.md"
+---
+temperature: 0.1
+tools:
+ bash: true
+ read: true
+ grep: true
+ write: false
+ edit: false
+---
+
+You are in debug mode. Your primary goal is to help investigate and diagnose issues.
+
+Focus on:
+
+- Understanding the problem through careful analysis
+- Using bash commands to inspect system state
+- Reading relevant files and logs
+- Searching for patterns and anomalies
+- Providing clear explanations of findings
+
+Do not make any changes to files. Only investigate and report.
+```
+
+```markdown title="~/.config/opencode/modes/refactor.md"
+---
+model: anthropic/claude-sonnet-4-20250514
+temperature: 0.2
+tools:
+ edit: true
+ read: true
+ grep: true
+ glob: true
+---
+
+You are in refactoring mode. Focus on improving code quality without changing functionality.
+
+Priorities:
+
+- Improve code readability and maintainability
+- Apply consistent naming conventions
+- Reduce code duplication
+- Optimize performance where appropriate
+- Ensure all tests continue to pass
+```
+
+---
+
+### Use cases
+
+Her er nogle almindelige brugstilfælde for forskellige tilstande.
+
+- **Build mode**: Fuldt udviklingsarbejde med alle værktøjer aktiveret
+- **Plantilstand**: Analyse og planlægning uden at foretage ændringer
+- **Anmeldelsestilstand**: Kodegennemgang med skrivebeskyttet adgang plus dokumentationsværktøjer
+- **Fejlretningstilstand**: Fokuseret på undersøgelse med bash og læseværktøjer aktiveret
+- **Docs-tilstand**: Dokumentationsskrivning med filhandlinger, men ingen systemkommandoer
+
+Du kan også finde ud af, at forskellige modeller er gode til forskellige brugssituationer.
diff --git a/packages/web/src/content/docs/da/network.mdx b/packages/web/src/content/docs/da/network.mdx
new file mode 100644
index 000000000..3274a7b3d
--- /dev/null
+++ b/packages/web/src/content/docs/da/network.mdx
@@ -0,0 +1,57 @@
+---
+title: Netværk
+description: Konfigurer proxyer og brugerdefinerede certifikater.
+---
+
+OpenCode understøtter standard proxymiljøvariabler og brugerdefinerede certifikater til virksomhedsnetværksmiljøer.
+
+---
+
+## Proxy
+
+OpenCode respekterer standard proxy-miljøvariabler.
+
+```bash
+# HTTPS proxy (recommended)
+export HTTPS_PROXY=https://proxy.example.com:8080
+
+# HTTP proxy (if HTTPS not available)
+export HTTP_PROXY=http://proxy.example.com:8080
+
+# Bypass proxy for local server (required)
+export NO_PROXY=localhost,127.0.0.1
+```
+
+:::forsigtighed
+TUI kommunikerer med en lokal HTTP-server. Du skal omgå proxyen for denne forbindelse for at forhindre routingsløjfer.
+:::
+
+Du kan konfigurere serverens port og værtsnavn ved hjælp af [CLI flags](/docs/cli#run).
+
+---
+
+### Godkend
+
+Hvis din proxy kræver grundlæggende godkendelse, skal du inkludere legitimationsoplysninger i URL.
+
+```bash
+export HTTPS_PROXY=http://username:password@proxy.example.com:8080
+```
+
+:::forsigtighed
+Undgå hardkodning af adgangskoder. Brug miljøvariabler eller sikker lagring af legitimationsoplysninger.
+:::
+
+For proxyer, der kræver avanceret godkendelse som NTLM eller Kerberos, kan du overveje at bruge en LLM Gateway, der understøtter din godkendelsesmetode.
+
+---
+
+## Brugerdefinerede certifikater
+
+Hvis din virksomhed bruger tilpassede CA'er til HTTPS-forbindelser, skal du konfigurere OpenCode til at stole på dem.
+
+```bash
+export NODE_EXTRA_CA_CERTS=/path/to/ca-cert.pem
+```
+
+Dette virker for både proxy-forbindelser og direkte API-adgang.
diff --git a/packages/web/src/content/docs/da/permissions.mdx b/packages/web/src/content/docs/da/permissions.mdx
new file mode 100644
index 000000000..72c839833
--- /dev/null
+++ b/packages/web/src/content/docs/da/permissions.mdx
@@ -0,0 +1,237 @@
+---
+title: Tilladelser
+description: Kontroller, hvilke handlinger der kræver godkendelse for at køre.
+---
+
+OpenCode bruger `permission`-konfigurationen til at bestemme, om en given handling skal køre automatisk, bede dig om eller blokeres.
+
+Fra `v1.1.1` er den ældre `tools` booleske konfiguration forældet og er blevet flettet ind i `permission`. Den gamle `tools`-konfiguration er stadig understøttet for bagudkompatibilitet.
+
+---
+
+## Handlinger
+
+Hver tilladelsesregel løses til en af:
+
+- `"allow"` — køre uden godkendelse
+- `"ask"` — prompt om godkendelse
+- `"deny"` — bloker handlingen
+
+---
+
+## Konfiguration
+
+Du kan indstille tilladelser globalt (med `*`) og tilsidesætte specifikke værktøjer.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "*": "ask",
+ "bash": "allow",
+ "edit": "deny"
+ }
+}
+```
+
+Du kan også indstille alle tilladelser på én gang:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": "allow"
+}
+```
+
+---
+
+## Granulære regler (objektsyntaks)
+
+For de fleste tilladelser kan du bruge et objekt til at anvende forskellige handlinger baseret på værktøjsinputtet.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "bash": {
+ "*": "ask",
+ "git *": "allow",
+ "npm *": "allow",
+ "rm *": "deny",
+ "grep *": "allow"
+ },
+ "edit": {
+ "*": "deny",
+ "packages/web/src/content/docs/*.mdx": "allow"
+ }
+ }
+}
+```
+
+Regler evalueres efter mønstermatch, hvor den **sidste matchende regel vinder**. Et almindeligt mønster er at sætte catch-all `"*"` reglen først og mere specifikke regler efter den.
+
+### Jokertegn
+
+Tilladelsesmønstre bruger simpel jokertegn-matchning:
+
+- `*` matcher nul eller flere af et hvilket som helst tegn
+- `?` matcher nøjagtigt ét tegn
+- Alle andre karakterer matcher bogstaveligt talt
+
+### Udvidelse af hjemmemappe
+
+Du kan bruge `~` eller `$HOME` i starten af et mønster til at referere til din hjemmemappe. Dette er især nyttigt for [`external_directory`](#external-directories) regler.
+
+- `~/projects/*` -> `/Users/username/projects/*`
+- `$HOME/projects/*` -> `/Users/username/projects/*`
+- `~` -> `/Users/username`
+
+### Eksterne mapper
+
+Brug `external_directory` til at tillade værktøjsopkald, der berører stier uden for den arbejdsmappe, hvor OpenCode blev startet. Dette gælder for ethvert værktøj, der tager en sti som input (for eksempel `read`, `edit`, `list`, `glob`, `grep` og mange `bash` kommandoer).
+
+Hjemmeudvidelse (som `~/...`) påvirker kun, hvordan et mønster skrives. Det gør ikke en ekstern sti til en del af det aktuelle arbejdsområde, så stier uden for arbejdsbiblioteket skal stadig være tilladt via `external_directory`.
+
+For eksempel giver dette adgang til alt under `~/projects/personal/`:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "external_directory": {
+ "~/projects/personal/**": "allow"
+ }
+ }
+}
+```
+
+Enhver mappe, der er tilladt her, arver de samme standarder som det aktuelle arbejdsområde. Siden [`read` defaults to `allow`](#defaults), er læsninger også tilladt for poster under `external_directory`, medmindre de tilsidesættes. Tilføj eksplicitte regler, når et værktøj skal begrænses i disse stier, såsom blokering af redigeringer, mens læsninger bevares:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "external_directory": {
+ "~/projects/personal/**": "allow"
+ },
+ "edit": {
+ "~/projects/personal/**": "deny"
+ }
+ }
+}
+```
+
+Hold listen fokuseret på betroede stier, og lag ekstra tillad eller afvis regler efter behov for andre værktøjer (for eksempel `bash`).
+
+---
+
+## Tilgængelige tilladelser
+
+OpenCode tilladelser indtastes efter værktøjsnavn plus et par sikkerhedsafskærmninger:
+
+- `read` — læser en fil (matcher filstien)
+- `edit` — alle filændringer (dækker `edit`, `write`, `patch`, `multiedit`)
+- `glob` — fil-globing (matcher glob-mønsteret)
+- `grep` — indholdssøgning (matcher regex-mønsteret)
+- `list` — viser filer i en mappe (matcher mappestien)
+- `bash` — kører shell-kommandoer (matcher parsede kommandoer som `git status --porcelain`)
+- `task` — lancering af underagenter (matcher underagenttypen)
+- `skill` — indlæsning af en færdighed (matcher færdighedsnavnet)
+- `lsp` — kører LSP forespørgsler (i øjeblikket ikke-granulære)
+- `todoread`, `todowrite` — reading/updating todo-listen
+- `webfetch` — henter en URL (matcher URL)
+- `websearch`, `codesearch` — web/code søgning (matcher forespørgslen)
+- `external_directory` — udløses, når et værktøj berører stier uden for projektets arbejdsmappe
+- `doom_loop` — udløses, når det samme værktøjskald gentages 3 gange med identisk input
+
+---
+
+## Standarder
+
+Hvis du ikke angiver noget, starter OpenCode fra tilladelige standardindstillinger:
+
+- De fleste tilladelser er som standard `"allow"`.
+- `doom_loop` og `external_directory` er som standard `"ask"`.
+- `read` er `"allow"`, men `.env` filer nægtes som standard:
+
+```json title="opencode.json"
+{
+ "permission": {
+ "read": {
+ "*": "allow",
+ "*.env": "deny",
+ "*.env.*": "deny",
+ "*.env.example": "allow"
+ }
+ }
+}
+```
+
+---
+
+## Hvad "Spørg" gør
+
+Når OpenCode beder om godkendelse, tilbyder brugergrænsefladen tre resultater:
+
+- `once` — godkend netop denne anmodning
+- `always` — godkend fremtidige anmodninger, der matcher de foreslåede mønstre (for resten af den nuværende OpenCode session)
+- `reject` — afvis anmodningen
+
+Sættet af mønstre, som `always` ville godkende, leveres af værktøjet (f.eks. hvidlister bash-godkendelser typisk et sikkert kommandopræfiks som `git status*`).
+
+---
+
+## Agenter
+
+Du kan tilsidesætte tilladelser pr. agent. Agenttilladelser flettes med den globale konfiguration, og agentregler har forrang. [Learn more](/docs/agents#permissions) om agenttilladelser.
+
+:::note
+Se afsnittet [Granular Rules (Object Syntax)](#granular-rules-object-syntax) ovenfor for mere detaljerede mønstermatchningseksempler.
+:::
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "bash": {
+ "*": "ask",
+ "git *": "allow",
+ "git commit *": "deny",
+ "git push *": "deny",
+ "grep *": "allow"
+ }
+ },
+ "agent": {
+ "build": {
+ "permission": {
+ "bash": {
+ "*": "ask",
+ "git *": "allow",
+ "git commit *": "ask",
+ "git push *": "deny",
+ "grep *": "allow"
+ }
+ }
+ }
+ }
+}
+```
+
+Du kan også konfigurere agenttilladelser i Markdown:
+
+```markdown title="~/.config/opencode/agents/review.md"
+---
+description: Code review without edits
+mode: subagent
+permission:
+ edit: deny
+ bash: ask
+ webfetch: deny
+---
+
+Only analyze code and suggest changes.
+```
+
+:::tip
+Brug mønstermatchning til kommandoer med argumenter. `"grep *"` tillader `grep pattern file.txt`, mens `"grep"` alene ville blokere det. Kommandoer som `git status` fungerer for standardadfærd, men kræver eksplicit tilladelse (som `"git status *"`), når argumenter sendes.
+:::
diff --git a/packages/web/src/content/docs/da/plugins.mdx b/packages/web/src/content/docs/da/plugins.mdx
new file mode 100644
index 000000000..689abdff0
--- /dev/null
+++ b/packages/web/src/content/docs/da/plugins.mdx
@@ -0,0 +1,385 @@
+---
+title: Plugins
+description: Skriv dine egne plugins for at udvide OpenCode.
+---
+
+Plugins giver dig mulighed for at udvide OpenCode ved at tilslutte sig forskellige begivenheder og tilpasse adfærd. Du kan oprette plugins for at tilføje nye funktioner, integrere med eksterne tjenester eller ændre OpenCodes standardadfærd.
+
+For eksempler, tjek [plugins](/docs/ecosystem#plugins) oprettet af fællesskabet.
+
+---
+
+## Brug et plugin
+
+Der er to måder at indlæse plugins på.
+
+---
+
+### Fra lokale filer
+
+Placer JavaScript- eller TypeScript-filer i plugin-mappen.
+
+- `.opencode/plugins/` - Plugins på projektniveau
+- `~/.config/opencode/plugins/` - Globale plugins
+
+Filer i disse mapper indlæses automatisk ved opstart.
+
+---
+
+### Fra npm
+
+Angiv npm-pakker i din konfigurationsfil.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "plugin": ["opencode-helicone-session", "opencode-wakatime", "@my-org/custom-plugin"]
+}
+```
+
+Både almindelige og omfangsrige npm-pakker understøttes.
+
+Gennemse tilgængelige plugins i [ecosystem](/docs/ecosystem#plugins).
+
+---
+
+### Hvordan plugins installeres
+
+**npm plugins** installeres automatisk ved hjælp af Bun ved opstart. Pakker og deres afhængigheder cachelagres i `~/.cache/opencode/node_modules/`.
+
+**Lokale plugins** indlæses direkte fra plugin-biblioteket. For at bruge eksterne pakker skal du oprette en `package.json` i din konfigurationsmappe (se [Dependencies](#dependencies)), eller udgive pluginnet til npm og [add it to your config](/docs/config#plugins).
+
+---
+
+### Indlæs rækkefølge
+
+Plugins indlæses fra alle kilder, og alle hooks kører i rækkefølge. Indlæsningsrækkefølgen er:
+
+1. Global konfiguration (`~/.config/opencode/opencode.json`)
+2. Projektkonfiguration (`opencode.json`)
+3. Global plugin-mappe (`~/.config/opencode/plugins/`)
+4. Projekt plugin bibliotek (`.opencode/plugins/`)
+
+Dublerede npm-pakker med samme navn og version indlæses én gang. Et lokalt plugin og et npm plugin med lignende navne indlæses dog hver for sig.
+
+---
+
+## Opret et plugin
+
+Et plugin er et **JavaScript/TypeScript modul**, der eksporterer et eller flere plugin
+funktioner. Hver funktion modtager et kontekstobjekt og returnerer et hooks-objekt.
+
+---
+
+### Afhængigheder
+
+Lokale plugins og brugerdefinerede værktøjer kan bruge eksterne npm-pakker. Tilføj en `package.json` til din konfigurationsmappe med de afhængigheder, du har brug for.
+
+```json title=".opencode/package.json"
+{
+ "dependencies": {
+ "shescape": "^2.1.0"
+ }
+}
+```
+
+OpenCode kører `bun install` ved opstart for at installere disse. Dine plugins og værktøjer kan derefter importere dem.
+
+```ts title=".opencode/plugins/my-plugin.ts"
+import { escape } from "shescape"
+
+export const MyPlugin = async (ctx) => {
+ return {
+ "tool.execute.before": async (input, output) => {
+ if (input.tool === "bash") {
+ output.args.command = escape(output.args.command)
+ }
+ },
+ }
+}
+```
+
+---
+
+### Grundlæggende struktur
+
+```js title=".opencode/plugins/example.js"
+export const MyPlugin = async ({ project, client, $, directory, worktree }) => {
+ console.log("Plugin initialized!")
+
+ return {
+ // Hook implementations go here
+ }
+}
+```
+
+Plugin-funktionen modtager:
+
+- `project`: Den aktuelle projektinformation.
+- `directory`: Den aktuelle arbejdsmappe.
+- `worktree`: Git worktree-stien.
+- `client`: En opencode SDK klient til interaktion med AI.
+- `-: Buns [shell API](https://bun.com/docs/runtime/shell) til udførelse af kommandoer.
+
+---
+
+### TypeScript-understøttelse
+
+For TypeScript-plugins kan du importere typer fra plugin-pakken:
+
+```ts title="my-plugin.ts" {1}
+import type { Plugin } from "@opencode-ai/plugin"
+
+export const MyPlugin: Plugin = async ({ project, client, $, directory, worktree }) => {
+ return {
+ // Type-safe hook implementations
+ }
+}
+```
+
+---
+
+### Begivenheder
+
+Plugins kan abonnere på begivenheder som vist nedenfor i afsnittet Eksempler. Her er en liste over de forskellige arrangementer.
+
+#### Kommandohændelser
+
+- `command.executed`
+
+#### Filhændelser
+
+- `file.edited`
+- `file.watcher.updated`
+
+#### Installationshændelser
+
+- `installation.updated`
+
+#### LSP Begivenheder
+
+- `lsp.client.diagnostics`
+- `lsp.updated`
+
+#### Beskedhændelser
+
+- `message.part.removed`
+- `message.part.updated`
+- `message.removed`
+- `message.updated`
+
+#### Tilladelsesbegivenheder
+
+- `permission.asked`
+- `permission.replied`
+
+#### Serverhændelser
+
+- `server.connected`
+
+#### Sessionsbegivenheder
+
+- `session.created`
+- `session.compacted`
+- `session.deleted`
+- `session.diff`
+- `session.error`
+- `session.idle`
+- `session.status`
+- `session.updated`
+
+#### Todo-begivenheder
+
+- `todo.updated`
+
+#### Shell-begivenheder
+
+- `shell.env`
+
+#### Værktøjsbegivenheder
+
+- `tool.execute.after`
+- `tool.execute.before`
+
+#### TUI Begivenheder
+
+- `tui.prompt.append`
+- `tui.command.execute`
+- `tui.toast.show`
+
+---
+
+## Eksempler
+
+Her er nogle eksempler på plugins, du kan bruge til at udvide opencode.
+
+---
+
+### Send meddelelser
+
+Send meddelelser, når visse hændelser indtræffer:
+
+```js title=".opencode/plugins/notification.js"
+export const NotificationPlugin = async ({ project, client, $, directory, worktree }) => {
+ return {
+ event: async ({ event }) => {
+ // Send notification on session completion
+ if (event.type === "session.idle") {
+ await $`osascript -e 'display notification "Session completed!" with title "opencode"'`
+ }
+ },
+ }
+}
+```
+
+Vi bruger `osascript` til at køre AppleScript på macOS. Her bruger vi det til at sende notifikationer.
+
+:::note
+Hvis du bruger OpenCode desktop-appen, kan den sende systemmeddelelser automatisk, når et svar er klar, eller når en session fejler.
+:::
+
+---
+
+###.env-beskyttelse
+
+Undgå opencode i at læse `.env` filer:
+
+```javascript title=".opencode/plugins/env-protection.js"
+export const EnvProtection = async ({ project, client, $, directory, worktree }) => {
+ return {
+ "tool.execute.before": async (input, output) => {
+ if (input.tool === "read" && output.args.filePath.includes(".env")) {
+ throw new Error("Do not read .env files")
+ }
+ },
+ }
+}
+```
+
+---
+
+### Injicer miljøvariabler
+
+Injicer miljøvariabler i al shell-udførelse (AI-værktøjer og brugerterminaler):
+
+```javascript title=".opencode/plugins/inject-env.js"
+export const InjectEnvPlugin = async () => {
+ return {
+ "shell.env": async (input, output) => {
+ output.env.MY_API_KEY = "secret"
+ output.env.PROJECT_ROOT = input.cwd
+ },
+ }
+}
+```
+
+---
+
+### Brugerdefinerede værktøjer
+
+Plugins kan også tilføje brugerdefinerede værktøjer til opencode:
+
+```ts title=".opencode/plugins/custom-tools.ts"
+import { type Plugin, tool } from "@opencode-ai/plugin"
+
+export const CustomToolsPlugin: Plugin = async (ctx) => {
+ return {
+ tool: {
+ mytool: tool({
+ description: "This is a custom tool",
+ args: {
+ foo: tool.schema.string(),
+ },
+ async execute(args, context) {
+ const { directory, worktree } = context
+ return `Hello ${args.foo} from ${directory} (worktree: ${worktree})`
+ },
+ }),
+ },
+ }
+}
+```
+
+`tool`-hjælperen opretter et brugerdefineret værktøj, som opencode kan kalde. Det tager en Zod-skemafunktion og returnerer en værktøjsdefinition med:
+
+- `description`: Hvad værktøjet gør
+- `args`: Zod-skema for værktøjets argumenter
+- `execute`: Funktion, der kører, når værktøjet kaldes
+
+Dine tilpassede værktøjer vil være tilgængelige for opencode sammen med indbyggede værktøjer.
+
+---
+
+### Logning
+
+Brug `client.app.log()` i stedet for `console.log` til struktureret logning:
+
+```ts title=".opencode/plugins/my-plugin.ts"
+export const MyPlugin = async ({ client }) => {
+ await client.app.log({
+ body: {
+ service: "my-plugin",
+ level: "info",
+ message: "Plugin initialized",
+ extra: { foo: "bar" },
+ },
+ })
+}
+```
+
+Niveauer: `debug`, `info`, `warn`, `error`. Se [SDK documentation](https://opencode.ai/docs/sdk) for detaljer.
+
+---
+
+### Komprimeringskroge
+
+Tilpas konteksten inkluderet, når en session komprimeres:
+
+```ts title=".opencode/plugins/compaction.ts"
+import type { Plugin } from "@opencode-ai/plugin"
+
+export const CompactionPlugin: Plugin = async (ctx) => {
+ return {
+ "experimental.session.compacting": async (input, output) => {
+ // Inject additional context into the compaction prompt
+ output.context.push(`
+## Custom Context
+
+Include any state that should persist across compaction:
+- Current task status
+- Important decisions made
+- Files being actively worked on
+`)
+ },
+ }
+}
+```
+
+`experimental.session.compacting` krogen affyres, før LLM genererer en fortsættelsesoversigt. Brug den til at injicere domænespecifik kontekst, som standardkomprimeringsprompten ville gå glip af.
+
+Du kan også erstatte komprimeringsprompten helt ved at indstille `output.prompt`:
+
+```ts title=".opencode/plugins/custom-compaction.ts"
+import type { Plugin } from "@opencode-ai/plugin"
+
+export const CustomCompactionPlugin: Plugin = async (ctx) => {
+ return {
+ "experimental.session.compacting": async (input, output) => {
+ // Replace the entire compaction prompt
+ output.prompt = `
+You are generating a continuation prompt for a multi-agent swarm session.
+
+Summarize:
+1. The current task and its status
+2. Which files are being modified and by whom
+3. Any blockers or dependencies between agents
+4. The next steps to complete the work
+
+Format as a structured prompt that a new agent can use to resume work.
+`
+ },
+ }
+}
+```
+
+Når `output.prompt` er indstillet, erstatter den standardkompressionsprompten fuldstændigt. `output.context`-arrayet ignoreres i dette tilfælde.
diff --git a/packages/web/src/content/docs/da/providers.mdx b/packages/web/src/content/docs/da/providers.mdx
new file mode 100644
index 000000000..98e214b78
--- /dev/null
+++ b/packages/web/src/content/docs/da/providers.mdx
@@ -0,0 +1,1889 @@
+---
+title: Leverandører
+description: Bruke en hvilken som helst LLM-leverandør i OpenCode.
+---
+
+import config from "../../../../config.mjs"
+export const console = config.console
+
+OpenCode bruker [AI SDK](https://ai-sdk.dev/) og [Models.dev](https://models.dev) for å støtte **75+ LLM leverandører** og den støtter kjøring av lokale modeller.
+
+For å legge til en leverandør må du:
+
+1. Legg til API-nøklene for leverandøren ved å bruke kommandoen `/connect`.
+2. Konfigurer leverandøren i OpenCode-konfigurasjonen.
+
+---
+
+### Legitimasjon
+
+Når du legger til en leverandørs API-nøkler med `/connect`-kommandoen, lagres de
+i `~/.local/share/opencode/auth.json`.
+
+---
+
+### Konfig
+
+Du kan tilpasse leverandørene gjennom `provider`-delen i OpenCode
+konfig.
+
+---
+
+#### Base URL
+
+Du kan tilpasse basen URL for enhver leverandør ved å angi alternativet `baseURL`. Dette er nyttig når du bruker proxy-tjenester eller tilpassede endepunkter.
+
+```json title="opencode.json" {6}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "anthropic": {
+ "options": {
+ "baseURL": "https://api.anthropic.com/v1"
+ }
+ }
+ }
+}
+```
+
+---
+
+## OpenCode Zen
+
+OpenCode Zen er en liste over modeller levert av OpenCode-teamet som har vært
+testet og verifisert for å fungere godt med OpenCode. [Finn ut mer](/docs/zen).
+
+:::tupp
+Hvis du er ny, anbefaler vi å starte med OpenCode Zen.
+:::
+
+1. Kjør kommandoen `/connect` i TUI, velg opencode og gå til [opencode.ai/auth](https://opencode.ai/auth).
+
+ ```txt
+ /connect
+ ```
+
+2. Logg på, legg til faktureringsdetaljene dine og kopier API-nøkkelen.
+
+3. Lim inn API-nøkkelen.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Kjør `/models` i TUI for å se listen over modeller vi anbefaler.
+
+ ```txt
+ /models
+ ```
+
+Det fungerer som alle andre leverandører i OpenCode og er helt valgfritt å bruke.
+
+---
+
+## Katalog
+
+La oss se på noen av leverandørene i detalj. Hvis du vil legge til en leverandør til
+liste, åpne gjerne en PR.
+
+:::note
+Ser du ikke en leverandør her? Send inn en PR.
+:::
+
+---
+
+### 302.AI
+
+1. Gå over til [302.AI-konsollen](https://302.ai/), opprett en konto og generer en API-nøkkel.
+
+2. Kjør kommandoen `/connect` og søk etter **302.AI**.
+
+ ```txt
+ /connect
+ ```
+
+3. Skriv inn 302.AI API-nøkkelen.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Kjør kommandoen `/models` for å velge en modell.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### Amazonas grunnfjell
+
+Slik bruker du Amazon Bedrock med OpenCode:
+
+1. Gå over til **modellkatalogen** i Amazon Bedrock-konsollen og be om
+ tilgang til modellene du ønsker.
+
+ :::tupp
+ Du må ha tilgang til modellen du ønsker i Amazon Bedrock.
+ :::
+
+2. **Konfigurer autentisering** ved å bruke en av følgende metoder:
+
+ #### Miljøvariabler (hurtigstart)
+
+ Angi en av disse miljøvariablene mens du kjører opencode:
+
+ ```bash
+ # Option 1: Using AWS access keys
+ AWS_ACCESS_KEY_ID=XXX AWS_SECRET_ACCESS_KEY=YYY opencode
+
+ # Option 2: Using named AWS profile
+ AWS_PROFILE=my-profile opencode
+
+ # Option 3: Using Bedrock bearer token
+ AWS_BEARER_TOKEN_BEDROCK=XXX opencode
+ ```
+
+ Eller legg dem til bash-profilen din:
+
+ ```bash title="~/.bash_profile"
+ export AWS_PROFILE=my-dev-profile
+ export AWS_REGION=us-east-1
+ ```
+
+ #### Konfigurasjonsfil (anbefalt)
+
+ For prosjektspesifikk eller vedvarende konfigurasjon, bruk `opencode.json`:
+
+ ```json title="opencode.json"
+ {
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "amazon-bedrock": {
+ "options": {
+ "region": "us-east-1",
+ "profile": "my-aws-profile"
+ }
+ }
+ }
+ }
+ ```
+
+ **Tilgjengelige alternativer:**
+ - `region` - AWS region (f.eks. `us-east-1`, `eu-west-1`)
+ - `profile` - AWS navngitt profil fra `~/.aws/credentials`
+ - `endpoint` - Egendefinert endepunkt URL for VPC endepunkter (alias for generisk `baseURL`-alternativ)
+
+ :::tupp
+ Alternativer for konfigurasjonsfil har forrang over miljøvariabler.
+ :::
+
+ #### Avansert: VPC Sluttpunkter
+
+ Hvis du bruker VPC endepunkter for Berggrunn:
+
+ ```json title="opencode.json"
+ {
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "amazon-bedrock": {
+ "options": {
+ "region": "us-east-1",
+ "profile": "production",
+ "endpoint": "https://bedrock-runtime.us-east-1.vpce-xxxxx.amazonaws.com"
+ }
+ }
+ }
+ }
+ ```
+
+ :::note
+ Alternativet `endpoint` er et alias for det generiske alternativet `baseURL`, ved å bruke AWS-spesifikk terminologi. Hvis både `endpoint` og `baseURL` er spesifisert, har `endpoint` forrang.
+ :::
+
+ #### Autentiseringsmetoder
+ - **`AWS_ACCESS_KEY_ID` / `AWS_SECRET_ACCESS_KEY`**: Opprett en IAM-bruker og generer tilgangsnøkler i AWS-konsollen
+ - **`AWS_PROFILE`**: Bruk navngitte profiler fra `~/.aws/credentials`. Konfigurer først med `aws configure --profile my-profile` eller `aws sso login`
+ - **`AWS_BEARER_TOKEN_BEDROCK`**: Generer langsiktige API-nøkler fra Amazon Bedrock-konsollen
+ - **`AWS_WEB_IDENTITY_TOKEN_FILE` / `AWS_ROLE_ARN`**: For EKS IRSA (IAM roller for tjenestekontoer) eller andre Kubernetes-miljøer med OIDC føderasjon. Disse miljøvariablene injiseres automatisk av Kubernetes når du bruker tjenestekontokommentarer.
+
+ #### Autentiseringsprioritet
+
+ Amazon Bedrock bruker følgende autentiseringsprioritet:
+ 1. **Bearer Token** - `AWS_BEARER_TOKEN_BEDROCK` miljøvariabel eller token fra kommandoen `/connect`
+ 2. **AWS legitimasjonskjede** - profil, tilgangsnøkler, delt legitimasjon, IAM roller, nettidentitetstokener (EKS IRSA), forekomstmetadata
+
+ :::note
+ Når et bærertoken er angitt (via `/connect` eller `AWS_BEARER_TOKEN_BEDROCK`), har det forrang over alle AWS legitimasjonsmetoder inkludert konfigurerte profiler.
+ :::
+
+3. Kjør kommandoen `/models` for å velge modellen du ønsker.
+
+ ```txt
+ /models
+ ```
+
+:::note
+For egendefinerte slutningsprofiler, bruk modellen og leverandørnavnet i nøkkelen og sett egenskapen `id` til arn. Dette sikrer korrekt caching:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "amazon-bedrock": {
+ // ...
+ "models": {
+ "anthropic-claude-sonnet-4.5": {
+ "id": "arn:aws:bedrock:us-east-1:xxx:application-inference-profile/yyy"
+ }
+ }
+ }
+ }
+}
+```
+
+:::
+
+---
+
+### Antropisk
+
+1. Når du har registrert deg, kjør kommandoen `/connect` og velg Antropisk.
+
+ ```txt
+ /connect
+ ```
+
+2. Her kan du velge alternativet **Claude Pro/Max** og det vil åpne nettleseren din
+ og ber deg om å autentisere.
+
+ ```txt
+ ┌ Select auth method
+ │
+ │ Claude Pro/Max
+ │ Create an API Key
+ │ Manually enter API Key
+ └
+ ```
+
+3. Nå skal alle de antropiske modellene være tilgjengelige når du bruker kommandoen `/models`.
+
+ ```txt
+ /models
+ ```
+
+::: info
+Å bruke Claude Pro/Max-abonnementet ditt i OpenCode støttes ikke offisielt av [Anthropic](https://anthropic.com).
+:::
+
+##### Bruke API-tastene
+
+Du kan også velge **Opprett en API nøkkel** hvis du ikke har et Pro/Max-abonnement. Den åpner også nettleseren din og ber deg logge på Anthropic og gi deg en kode du kan lime inn i terminalen din.
+
+Eller hvis du allerede har en API-nøkkel, kan du velge **Angi API-nøkkel manuelt** og lime den inn i terminalen.
+
+---
+
+### Azure OpenAI
+
+:::note
+Hvis du støter på «Beklager, men jeg kan ikke hjelpe med den forespørselen»-feil, kan du prøve å endre innholdsfilteret fra **DefaultV2** til **Default** i Azure-ressursen.
+:::
+
+1. Gå over til [Azure-portalen](https://portal.azure.com/) og lag en **Azure OpenAI**-ressurs. Du trenger:
+ - **Ressursnavn**: Dette blir en del av API-endepunktet (`https://RESOURCE_NAME.openai.azure.com/`)
+ - **API nøkkel**: Enten `KEY 1` eller `KEY 2` fra ressursen din
+
+2. Gå til [Azure AI Foundry](https://ai.azure.com/) og distribuer en modell.
+
+ :::note
+ Distribusjonsnavnet må samsvare med modellnavnet for at opencode skal fungere skikkelig.
+ :::
+
+3. Kjør kommandoen `/connect` og søk etter **Azure**.
+
+ ```txt
+ /connect
+ ```
+
+4. Skriv inn API-nøkkelen.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+5. Angi ressursnavnet ditt som en miljøvariabel:
+
+ ```bash
+ AZURE_RESOURCE_NAME=XXX opencode
+ ```
+
+ Eller legg den til bash-profilen din:
+
+ ```bash title="~/.bash_profile"
+ export AZURE_RESOURCE_NAME=XXX
+ ```
+
+6. Kjør kommandoen `/models` for å velge den distribuerte modellen.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### Azure Cognitive Services
+
+1. Gå over til [Azure-portalen](https://portal.azure.com/) og lag en **Azure OpenAI**-ressurs. Du trenger:
+ - **Ressursnavn**: Dette blir en del av API-endepunktet (`https://AZURE_COGNITIVE_SERVICES_RESOURCE_NAME.cognitiveservices.azure.com/`)
+ - **API nøkkel**: Enten `KEY 1` eller `KEY 2` fra ressursen din
+
+2. Gå til [Azure AI Foundry](https://ai.azure.com/) og distribuer en modell.
+
+ :::note
+ Distribusjonsnavnet må samsvare med modellnavnet for at opencode skal fungere skikkelig.
+ :::
+
+3. Kjør kommandoen `/connect` og søk etter **Azure Cognitive Services**.
+
+ ```txt
+ /connect
+ ```
+
+4. Skriv inn API-nøkkelen.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+5. Angi ressursnavnet ditt som en miljøvariabel:
+
+ ```bash
+ AZURE_COGNITIVE_SERVICES_RESOURCE_NAME=XXX opencode
+ ```
+
+ Eller legg den til bash-profilen din:
+
+ ```bash title="~/.bash_profile"
+ export AZURE_COGNITIVE_SERVICES_RESOURCE_NAME=XXX
+ ```
+
+6. Kjør kommandoen `/models` for å velge den distribuerte modellen.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### Baseten
+
+1. Gå over til [Baseten](https://app.baseten.co/), opprett en konto og generer en API nøkkel.
+
+2. Kjør kommandoen `/connect` og søk etter **Baseten**.
+
+ ```txt
+ /connect
+ ```
+
+3. Skriv inn din Baseten API nøkkel.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Kjør kommandoen `/models` for å velge en modell.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### Cerebras
+
+1. Gå over til [Cerebras-konsollen](https://inference.cerebras.ai/), opprett en konto og generer en API-nøkkel.
+
+2. Kjør kommandoen `/connect` og søk etter **Cerebras**.
+
+ ```txt
+ /connect
+ ```
+
+3. Skriv inn Cerebras API-nøkkelen.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Kjør kommandoen `/models` for å velge en modell som _Qwen 3 Coder 480B_.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### Cloudflare AI Gateway
+
+Cloudflare AI Gateway lar deg få tilgang til modeller fra OpenAI, Anthropic, Workers AI og mer gjennom et enhetlig endepunkt. Med [Unified Billing](https://developers.cloudflare.com/ai-gateway/features/unified-billing/) trenger du ikke separate API-nøkler for hver leverandør.
+
+1. Gå over til [Cloudflare-dashbordet](https://dash.cloudflare.com/), naviger til **AI** > **AI Gateway**, og lag en ny gateway.
+
+2. Angi konto ID og gateway ID som miljøvariabler.
+
+ ```bash title="~/.bash_profile"
+ export CLOUDFLARE_ACCOUNT_ID=your-32-character-account-id
+ export CLOUDFLARE_GATEWAY_ID=your-gateway-id
+ ```
+
+3. Kjør kommandoen `/connect` og søk etter **Cloudflare AI Gateway**.
+
+ ```txt
+ /connect
+ ```
+
+4. Skriv inn Cloudflare API-tokenet ditt.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+ Eller angi den som en miljøvariabel.
+
+ ```bash title="~/.bash_profile"
+ export CLOUDFLARE_API_TOKEN=your-api-token
+ ```
+
+5. Kjør kommandoen `/models` for å velge en modell.
+
+ ```txt
+ /models
+ ```
+
+ Du kan også legge til modeller gjennom opencode-konfigurasjonen.
+
+ ```json title="opencode.json"
+ {
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "cloudflare-ai-gateway": {
+ "models": {
+ "openai/gpt-4o": {},
+ "anthropic/claude-sonnet-4": {}
+ }
+ }
+ }
+ }
+ ```
+
+---
+
+### Cortecs
+
+1. Gå over til [Cortecs-konsollen](https://cortecs.ai/), opprett en konto og generer en API-nøkkel.
+
+2. Kjør kommandoen `/connect` og søk etter **Cortecs**.
+
+ ```txt
+ /connect
+ ```
+
+3. Skriv inn Cortecs API-nøkkelen.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Kjør kommandoen `/models` for å velge en modell som _Kimi K2 Instruct_.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### DeepSeek
+
+1. Gå over til [DeepSeek-konsollen](https://platform.deepseek.com/), opprett en konto og klikk på **Opprett ny API-nøkkel**.
+
+2. Kjør kommandoen `/connect` og søk etter **DeepSeek**.
+
+ ```txt
+ /connect
+ ```
+
+3. Skriv inn DeepSeek API-nøkkelen.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Kjør kommandoen `/models` for å velge en DeepSeek-modell som _DeepSeek Reasoner_.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### Deep Infra
+
+1. Gå over til [Deep Infra-dashbordet](https://deepinfra.com/dash), opprett en konto og generer en API-nøkkel.
+
+2. Kjør kommandoen `/connect` og søk etter **Deep Infra**.
+
+ ```txt
+ /connect
+ ```
+
+3. Skriv inn Deep Infra API nøkkelen.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Kjør kommandoen `/models` for å velge en modell.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### Fastvare
+
+1. Gå over til [Firmware dashboard](https://app.firmware.ai/signup), opprett en konto og generer en API nøkkel.
+
+2. Kjør kommandoen `/connect` og søk etter **Firmware**.
+
+ ```txt
+ /connect
+ ```
+
+3. Skriv inn firmware API nøkkelen.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Kjør kommandoen `/models` for å velge en modell.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### Fyrverkeri AI
+
+1. Gå over til [Fireworks AI-konsollen](https://app.fireworks.ai/), opprett en konto og klikk på **Create API Key**.
+
+2. Kjør kommandoen `/connect` og søk etter **Fireworks AI**.
+
+ ```txt
+ /connect
+ ```
+
+3. Skriv inn Fireworks AI API nøkkelen.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Kjør kommandoen `/models` for å velge en modell som _Kimi K2 Instruct_.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### GitLab Duo
+
+GitLab Duo gir AI-drevet agentchat med native verktøyoppringingsfunksjoner gjennom GitLabs antropiske proxy.
+
+1. Kjør kommandoen `/connect` og velg GitLab.
+
+ ```txt
+ /connect
+ ```
+
+2. Velg autentiseringsmetoden din:
+
+ ```txt
+ ┌ Select auth method
+ │
+ │ OAuth (Recommended)
+ │ Personal Access Token
+ └
+ ```
+
+ #### Bruke OAuth (anbefalt)
+
+ Velg **OAuth** og nettleseren din åpnes for autorisasjon.
+
+ #### Bruker personlig tilgangstoken
+ 1. Gå til [GitLab User Settings > Access Tokens](https://gitlab.com/-/user_settings/personal_access_tokens)
+ 2. Klikk på **Legg til nytt token**
+ 3. Navn: `OpenCode`, omfang: `api`
+ 4. Kopier tokenet (starter med `glpat-`)
+ 5. Skriv den inn i terminalen
+
+3. Kjør kommandoen `/models` for å se tilgjengelige modeller.
+
+ ```txt
+ /models
+ ```
+
+ Tre Claude-baserte modeller er tilgjengelige:
+ - **duo-chat-haiku-4-5** (standard) - Raske svar for raske oppgaver
+ - **duo-chat-sonnet-4-5** - Balansert ytelse for de fleste arbeidsflyter
+ - **duo-chat-opus-4-5** - Mest egnet for kompleks analyse
+
+:::note
+Du kan også spesifisere 'GITLAB_TOKEN' miljøvariabel hvis du ikke vil
+for å lagre token i opencode auth-lagring.
+:::
+
+##### Selvhostet GitLab
+
+:::note[compliance note]
+OpenCode bruker en liten modell for noen AI oppgaver som å generere økttittelen.
+Den er konfigurert til å bruke gpt-5-nano som standard, hostet av Zen. For å låse OpenCode
+for kun å bruke din egen GitLab-hostede forekomst, legg til følgende i din
+`opencode.json` fil. Det anbefales også å deaktivere øktdeling.
+
+```json
+{
+ "$schema": "https://opencode.ai/config.json",
+ "small_model": "gitlab/duo-chat-haiku-4-5",
+ "share": "disabled"
+}
+```
+
+:::
+
+For selvhostede GitLab-forekomster:
+
+```bash
+export GITLAB_INSTANCE_URL=https://gitlab.company.com
+export GITLAB_TOKEN=glpat-...
+```
+
+Hvis forekomsten din kjører en tilpasset AI-gateway:
+
+```bash
+GITLAB_AI_GATEWAY_URL=https://ai-gateway.company.com
+```
+
+Eller legg til bash-profilen din:
+
+```bash title="~/.bash_profile"
+export GITLAB_INSTANCE_URL=https://gitlab.company.com
+export GITLAB_AI_GATEWAY_URL=https://ai-gateway.company.com
+export GITLAB_TOKEN=glpat-...
+```
+
+:::note
+GitLab-administratoren din må aktivere følgende:
+
+1. [Duo Agent Platform](https://docs.gitlab.com/user/gitlab_duo/turn_on_off/) for brukeren, gruppen eller forekomsten
+2. Funksjonsflagg (via Rails-konsollen):
+ - `agent_platform_claude_code`
+ - `third_party_agents_enabled`
+ :::
+
+##### OAuth for selvvertsbaserte forekomster
+
+For å få Oauth til å fungere for din selvhostede forekomst, må du opprette
+en ny applikasjon (Innstillinger → Programmer) med
+tilbakeringing URL `http://127.0.0.1:8080/callback` og følgende omfang:
+
+- api (Få tilgang til API på dine vegne)
+- read_user (Les din personlige informasjon)
+- read_repository (tillater skrivebeskyttet tilgang til depotet)
+
+Utsett deretter applikasjonen ID som miljøvariabel:
+
+```bash
+export GITLAB_OAUTH_CLIENT_ID=your_application_id_here
+```
+
+Mer dokumentasjon på [opencode-gitlab-auth](https://www.npmjs.com/package/@gitlab/opencode-gitlab-auth) hjemmeside.
+
+##### Konfigurasjon
+
+Tilpass gjennom `opencode.json`:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "gitlab": {
+ "options": {
+ "instanceUrl": "https://gitlab.com",
+ "featureFlags": {
+ "duo_agent_platform_agentic_chat": true,
+ "duo_agent_platform": true
+ }
+ }
+ }
+ }
+}
+```
+
+##### GitLab API Verktøy (valgfritt, men sterkt anbefalt)
+
+For å få tilgang til GitLab-verktøy (sammenslåingsforespørsler, problemer, pipelines, CI/CD, etc.):
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "plugin": ["@gitlab/opencode-gitlab-plugin"]
+}
+```
+
+Denne plugin-en gir omfattende GitLab-repository-administrasjonsfunksjoner, inkludert MR-anmeldelser, problemsporing, pipeline-overvåking og mer.
+
+---
+
+### GitHub Copilot
+
+Slik bruker du GitHub Copilot-abonnementet med OpenCode:
+
+:::note
+Noen modeller kan trenge en [Pro+
+abonnement](https://github.com/features/copilot/plans) å bruke.
+
+Noen modeller må aktiveres manuelt i [GitHub Copilot-innstillingene](https://docs.github.com/en/copilot/how-tos/use-ai-models/configure-access-to-ai-models#setup-for-individual-use).
+:::
+
+1. Kjør kommandoen `/connect` og søk etter GitHub Copilot.
+
+ ```txt
+ /connect
+ ```
+
+2. Naviger til [github.com/login/device](https://github.com/login/device) og skriv inn koden.
+
+ ```txt
+ ┌ Login with GitHub Copilot
+ │
+ │ https://github.com/login/device
+ │
+ │ Enter code: 8F43-6FCF
+ │
+ └ Waiting for authorization...
+ ```
+
+3. Kjør nå kommandoen `/models` for å velge modellen du ønsker.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### Google Vertex AI
+
+Slik bruker du Google Vertex AI med OpenCode:
+
+1. Gå over til **Model Garden** i Google Cloud Console og sjekk
+ modeller tilgjengelig i din region.
+
+ :::note
+ Du må ha et Google Cloud-prosjekt med Vertex AI API aktivert.
+ :::
+
+2. Angi de nødvendige miljøvariablene:
+ - `GOOGLE_CLOUD_PROJECT`: Google Cloud-prosjektet ditt ID
+ - `VERTEX_LOCATION` (valgfritt): Regionen for verteks AI (standard til `global`)
+ - Autentisering (velg en):
+ - `GOOGLE_APPLICATION_CREDENTIALS`: Bane til tjenestekontoen JSON nøkkelfil
+ - Autentiser med gcloud CLI: `gcloud auth application-default login`
+
+ Sett dem mens du kjører opencode.
+
+ ```bash
+ GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json GOOGLE_CLOUD_PROJECT=your-project-id opencode
+ ```
+
+ Eller legg dem til på bash-profilen din.
+
+ ```bash title="~/.bash_profile"
+ export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json
+ export GOOGLE_CLOUD_PROJECT=your-project-id
+ export VERTEX_LOCATION=global
+ ```
+
+:::tupp
+`global`-regionen forbedrer tilgjengeligheten og reduserer feil uten ekstra kostnad. Bruk regionale endepunkter (f.eks. `us-central1`) for krav til dataopphold. [Finn ut mer](https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models#regional_and_global_endpoints)
+:::
+
+3. Kjør kommandoen `/models` for å velge modellen du ønsker.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### Groq
+
+1. Gå over til [Groq-konsollen](https://console.groq.com/), klikk på **Create API Key**, og kopier nøkkelen.
+
+2. Kjør kommandoen `/connect` og søk etter Groq.
+
+ ```txt
+ /connect
+ ```
+
+3. Skriv inn API-nøkkelen for leverandøren.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Kjør kommandoen `/models` for å velge den du ønsker.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### Klemmer ansikt
+
+[Hugging Face Inference Providers](https://huggingface.co/docs/inference-providers) gir tilgang til åpne modeller som støttes av 17+ leverandører.
+
+1. Gå over til [Hugging Face-innstillinger](https://huggingface.co/settings/tokens/new?ownUserPermissions=inference.serverless.write&tokenType=fineGrained) for å opprette et token med tillatelse til å ringe til inferensleverandører.
+
+2. Kjør kommandoen `/connect` og søk etter **Hugging Face**.
+
+ ```txt
+ /connect
+ ```
+
+3. Skriv inn ditt Hugging Face-token.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Kjør kommandoen `/models` for å velge en modell som _Kimi-K2-Instruct_ eller _GLM-4.6_.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### Helikon
+
+[Helicone](https://helicone.ai) er en LLM observerbarhetsplattform som gir logging, overvåking og analyser for AI-applikasjonene dine. Helicone AI Gateway ruter forespørslene dine til riktig leverandør automatisk basert på modellen.
+
+1. Gå over til [Helicone](https://helicone.ai), opprett en konto og generer en API nøkkel fra dashbordet.
+
+2. Kjør kommandoen `/connect` og søk etter **Helicone**.
+
+ ```txt
+ /connect
+ ```
+
+3. Skriv inn Helicone API-nøkkelen.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Kjør kommandoen `/models` for å velge en modell.
+
+ ```txt
+ /models
+ ```
+
+For flere leverandører og avanserte funksjoner som bufring og hastighetsbegrensning, sjekk [Helicone-dokumentasjonen](https://docs.helicone.ai).
+
+#### Valgfrie konfigurasjoner
+
+I tilfelle du ser en funksjon eller modell fra Helicone som ikke konfigureres automatisk gjennom opencode, kan du alltid konfigurere den selv.
+
+Her er [Helicone's Model Directory](https://helicone.ai/models), du trenger denne for å hente ID-ene til modellene du vil legge til.
+
+```jsonc title="~/.config/opencode/opencode.jsonc"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "helicone": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "Helicone",
+ "options": {
+ "baseURL": "https://ai-gateway.helicone.ai",
+ },
+ "models": {
+ "gpt-4o": {
+ // Model ID (from Helicone's model directory page)
+ "name": "GPT-4o", // Your own custom name for the model
+ },
+ "claude-sonnet-4-20250514": {
+ "name": "Claude Sonnet 4",
+ },
+ },
+ },
+ },
+}
+```
+
+#### Egendefinerte topptekster
+
+Helicone støtter tilpassede overskrifter for funksjoner som bufring, brukersporing og øktadministrasjon. Legg dem til leverandørkonfigurasjonen din ved å bruke `options.headers`:
+
+```jsonc title="~/.config/opencode/opencode.jsonc"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "helicone": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "Helicone",
+ "options": {
+ "baseURL": "https://ai-gateway.helicone.ai",
+ "headers": {
+ "Helicone-Cache-Enabled": "true",
+ "Helicone-User-Id": "opencode",
+ },
+ },
+ },
+ },
+}
+```
+
+##### Sesjonssporing
+
+Helicones [Sessions](https://docs.helicone.ai/features/sessions) funksjon lar deg gruppere relaterte LLM forespørsler sammen. Bruk [opencode-helicone-session](https://github.com/H2Shami/opencode-helicone-session) plugin for automatisk å logge hver OpenCode-samtale som en økt i Helicone.
+
+```bash
+npm install -g opencode-helicone-session
+```
+
+Legg den til i konfigurasjonen din.
+
+```json title="opencode.json"
+{
+ "plugin": ["opencode-helicone-session"]
+}
+```
+
+Programtillegget injiserer `Helicone-Session-Id` og `Helicone-Session-Name` overskrifter i forespørslene dine. På Helicones Sessions-side vil du se hver OpenCode-samtale oppført som en separat økt.
+
+##### Vanlige helikonhoder
+
+| Overskrift | Beskrivelse |
+| -------------------------- | -------------------------------------------------------------------------- |
+| `Helicone-Cache-Enabled` | Aktiver responsbufring (`true`/`false`) |
+| `Helicone-User-Id` | Spor beregninger etter bruker |
+| `Helicone-Property-[Name]` | Legg til egendefinerte egenskaper (f.eks. `Helicone-Property-Environment`) |
+| `Helicone-Prompt-Id` | Knytt forespørsler til spørsmålsversjoner |
+
+Se [Helicone Header Directory](https://docs.helicone.ai/helicone-headers/header-directory) for alle tilgjengelige overskrifter.
+
+---
+
+### lama.cpp
+
+Du kan konfigurere opencode for å bruke lokale modeller gjennom [llama.cpps](https://github.com/ggml-org/llama.cpp) lama-server-verktøy
+
+```json title="opencode.json" "llama.cpp" {5, 6, 8, 10-15}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "llama.cpp": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "llama-server (local)",
+ "options": {
+ "baseURL": "http://127.0.0.1:8080/v1"
+ },
+ "models": {
+ "qwen3-coder:a3b": {
+ "name": "Qwen3-Coder: a3b-30b (local)",
+ "limit": {
+ "context": 128000,
+ "output": 65536
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+I dette eksemplet:
+
+- `llama.cpp` er den tilpassede leverandøren ID. Dette kan være hvilken som helst streng du vil.
+- `npm` spesifiserer pakken som skal brukes for denne leverandøren. Her brukes `@ai-sdk/openai-compatible` for enhver OpenAI-kompatibel API.
+- `name` er visningsnavnet for leverandøren i UI.
+- `options.baseURL` er endepunktet for den lokale serveren.
+- `models` er et kart over modell-ID-er til deres konfigurasjoner. Modellnavnet vil vises i modellvalglisten.
+
+---
+
+### IO.NET
+
+IO.NET tilbyr 17 modeller optimert for ulike brukstilfeller:
+
+1. Gå over til [IO.NET-konsollen](https://ai.io.net/), opprett en konto og generer en API-nøkkel.
+
+2. Kjør kommandoen `/connect` og søk etter **IO.NET**.
+
+ ```txt
+ /connect
+ ```
+
+3. Skriv inn nøkkelen IO.NET API.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Kjør kommandoen `/models` for å velge en modell.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### LM Studio
+
+Du kan konfigurere opencode for å bruke lokale modeller gjennom LM Studio.
+
+```json title="opencode.json" "lmstudio" {5, 6, 8, 10-14}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "lmstudio": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "LM Studio (local)",
+ "options": {
+ "baseURL": "http://127.0.0.1:1234/v1"
+ },
+ "models": {
+ "google/gemma-3n-e4b": {
+ "name": "Gemma 3n-e4b (local)"
+ }
+ }
+ }
+ }
+}
+```
+
+I dette eksemplet:
+
+- `lmstudio` er den tilpassede leverandøren ID. Dette kan være hvilken som helst streng du vil.
+- `npm` spesifiserer pakken som skal brukes for denne leverandøren. Her brukes `@ai-sdk/openai-compatible` for enhver OpenAI-kompatibel API.
+- `name` er visningsnavnet for leverandøren i UI.
+- `options.baseURL` er endepunktet for den lokale serveren.
+- `models` er et kart over modell-ID-er til deres konfigurasjoner. Modellnavnet vil vises i modellvalglisten.
+
+---
+
+### Måneskudd AI
+
+Slik bruker du Kimi K2 fra Moonshot AI:
+
+1. Gå over til [Moonshot AI-konsollen](https://platform.moonshot.ai/console), opprett en konto og klikk på **Opprett API-nøkkel**.
+
+2. Kjør kommandoen `/connect` og søk etter **Moonshot AI**.
+
+ ```txt
+ /connect
+ ```
+
+3. Skriv inn Moonshot API-nøkkelen.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Kjør kommandoen `/models` for å velge _Kimi K2_.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### MiniMax
+
+1. Gå over til [MiniMax API-konsollen](https://platform.minimax.io/login), opprett en konto og generer en API-nøkkel.
+
+2. Kjør kommandoen `/connect` og søk etter **MiniMax**.
+
+ ```txt
+ /connect
+ ```
+
+3. Skriv inn MiniMax API-nøkkelen.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Kjør kommandoen `/models` for å velge en modell som _M2.1_.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### Nebius Token Factory
+
+1. Gå over til [Nebius Token Factory-konsollen](https://tokenfactory.nebius.com/), opprett en konto og klikk på **Legg til nøkkel**.
+
+2. Kjør kommandoen `/connect` og søk etter **Nebius Token Factory**.
+
+ ```txt
+ /connect
+ ```
+
+3. Skriv inn Nebius Token Factory API-nøkkelen.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Kjør kommandoen `/models` for å velge en modell som _Kimi K2 Instruct_.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### Ollama
+
+Du kan konfigurere opencode for å bruke lokale modeller gjennom Ollama.
+
+:::tupp
+Ollama kan automatisk konfigurere seg selv for OpenCode. Se [Ollama-integrasjonsdokumentene](https://docs.ollama.com/integrations/opencode) for detaljer.
+:::
+
+```json title="opencode.json" "ollama" {5, 6, 8, 10-14}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "ollama": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "Ollama (local)",
+ "options": {
+ "baseURL": "http://localhost:11434/v1"
+ },
+ "models": {
+ "llama2": {
+ "name": "Llama 2"
+ }
+ }
+ }
+ }
+}
+```
+
+I dette eksemplet:
+
+- `ollama` er den tilpassede leverandøren ID. Dette kan være hvilken som helst streng du vil.
+- `npm` spesifiserer pakken som skal brukes for denne leverandøren. Her brukes `@ai-sdk/openai-compatible` for enhver OpenAI-kompatibel API.
+- `name` er visningsnavnet for leverandøren i UI.
+- `options.baseURL` er endepunktet for den lokale serveren.
+- `models` er et kart over modell-ID-er til deres konfigurasjoner. Modellnavnet vil vises i modellvalglisten.
+
+:::tupp
+Hvis verktøykall ikke fungerer, prøv å øke `num_ctx` i Ollama. Start rundt 16k - 32k.
+:::
+
+---
+
+### Ollama Cloud
+
+Slik bruker du Ollama Cloud med OpenCode:
+
+1. Gå over til [https://ollama.com/](https://ollama.com/) og logg på eller opprett en konto.
+
+2. Naviger til **Innstillinger** > **Nøkler** og klikk på **Legg til API nøkkel** for å generere en ny API nøkkel.
+
+3. Kopier API-nøkkelen for bruk i OpenCode.
+
+4. Kjør kommandoen `/connect` og søk etter **Ollama Cloud**.
+
+ ```txt
+ /connect
+ ```
+
+5. Skriv inn din Ollama Cloud API nøkkel.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+6. **Viktig**: Før du bruker skymodeller i OpenCode, må du hente modellinformasjonen lokalt:
+
+ ```bash
+ ollama pull gpt-oss:20b-cloud
+ ```
+
+7. Kjør kommandoen `/models` for å velge din Ollama Cloud-modell.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### OpenAI
+
+Vi anbefaler at du registrerer deg for [ChatGPT Plus eller Pro](https://chatgpt.com/pricing).
+
+1. Når du har registrert deg, kjør kommandoen `/connect` og velg OpenAI.
+
+ ```txt
+ /connect
+ ```
+
+2. Her kan du velge alternativet **ChatGPT Plus/Pro** og det åpner nettleseren din
+ og ber deg om å autentisere.
+
+ ```txt
+ ┌ Select auth method
+ │
+ │ ChatGPT Plus/Pro
+ │ Manually enter API Key
+ └
+ ```
+
+3. Nå skal alle OpenAI-modellene være tilgjengelige når du bruker kommandoen `/models`.
+
+ ```txt
+ /models
+ ```
+
+##### Bruke API-tastene
+
+Hvis du allerede har en API-nøkkel, kan du velge **Angi API-nøkkel manuelt** og lime den inn i terminalen.
+
+---
+
+### OpenCode Zen
+
+OpenCode Zen er en liste over testede og verifiserte modeller levert av OpenCode-teamet. [Finn ut mer](/docs/zen).
+
+1. Logg på **OpenCode Zen** og klikk på **Create API Key**.
+
+2. Kjør kommandoen `/connect` og søk etter **OpenCode Zen**.
+
+ ```txt
+ /connect
+ ```
+
+3. Skriv inn OpenCode API-nøkkelen.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Kjør kommandoen `/models` for å velge en modell som _Qwen 3 Coder 480B_.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### OpenRouter
+
+1. Gå over til [OpenRouter-dashbordet](https://openrouter.ai/settings/keys), klikk på **Create API Key**, og kopier nøkkelen.
+
+2. Kjør kommandoen `/connect` og søk etter OpenRouter.
+
+ ```txt
+ /connect
+ ```
+
+3. Skriv inn API-nøkkelen for leverandøren.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Mange OpenRouter-modeller er forhåndslastet som standard, kjør kommandoen `/models` for å velge den du ønsker.
+
+ ```txt
+ /models
+ ```
+
+ Du kan også legge til flere modeller gjennom opencode-konfigurasjonen.
+
+ ```json title="opencode.json" {6}
+ {
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "openrouter": {
+ "models": {
+ "somecoolnewmodel": {}
+ }
+ }
+ }
+ }
+ ```
+
+5. Du kan også tilpasse dem gjennom opencode-konfigurasjonen. Her er et eksempel på å spesifisere en leverandør
+
+ ```json title="opencode.json"
+ {
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "openrouter": {
+ "models": {
+ "moonshotai/kimi-k2": {
+ "options": {
+ "provider": {
+ "order": ["baseten"],
+ "allow_fallbacks": false
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ ```
+
+---
+
+### SAP AI Kjerne
+
+SAP AI Core gir tilgang til 40+ modeller fra OpenAI, Anthropic, Google, Amazon, Meta, Mistral og AI21 gjennom en enhetlig plattform.
+
+1. Gå til din [SAP BTP Cockpit](https://account.hana.ondemand.com/), naviger til din SAP AI kjernetjenesteforekomst, og lag en tjenestenøkkel.
+
+ :::tupp
+ Tjenestenøkkelen er et JSON-objekt som inneholder `clientid`, `clientsecret`, `url` og `serviceurls.AI_API_URL`. Du finner AI kjerneforekomsten din under **Tjenester** > **Forekomster og abonnementer** i BTP cockpiten.
+ :::
+
+2. Kjør kommandoen `/connect` og søk etter **SAP AI Core**.
+
+ ```txt
+ /connect
+ ```
+
+3. Skriv inn tjenestenøkkelen JSON.
+
+ ```txt
+ ┌ Service key
+ │
+ │
+ └ enter
+ ```
+
+ Eller angi miljøvariabelen `AICORE_SERVICE_KEY`:
+
+ ```bash
+ AICORE_SERVICE_KEY='{"clientid":"...","clientsecret":"...","url":"...","serviceurls":{"AI_API_URL":"..."}}' opencode
+ ```
+
+ Eller legg den til bash-profilen din:
+
+ ```bash title="~/.bash_profile"
+ export AICORE_SERVICE_KEY='{"clientid":"...","clientsecret":"...","url":"...","serviceurls":{"AI_API_URL":"..."}}'
+ ```
+
+4. Angi eventuelt distribusjon ID og ressursgruppe:
+
+ ```bash
+ AICORE_DEPLOYMENT_ID=your-deployment-id AICORE_RESOURCE_GROUP=your-resource-group opencode
+ ```
+
+ :::note
+ Disse innstillingene er valgfrie og bør konfigureres i henhold til SAP AI kjerneoppsettet.
+ :::
+
+5. Kjør kommandoen `/models` for å velge fra 40+ tilgjengelige modeller.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### OVHcloud AI endepunkter
+
+1. Gå over til [OVHcloud-panelet](https://ovh.com/manager). Naviger til `Public Cloud`-delen, `AI & Machine Learning` > `AI Endpoints` og i `API Keys`-fanen klikker du på **Opprett en ny API-nøkkel**.
+
+2. Kjør kommandoen `/connect` og søk etter **OVHcloud AI endepunkter**.
+
+ ```txt
+ /connect
+ ```
+
+3. Skriv inn OVHcloud AI Endpoints API nøkkel.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Kjør kommandoen `/models` for å velge en modell som _gpt-oss-120b_.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### Scaleway
+
+Slik bruker du [Scaleway Generative APIs](https://www.scaleway.com/en/docs/generative-apis/) med OpenCode:
+
+1. Gå over til [Scaleway Console IAM innstillinger](https://console.scaleway.com/iam/api-keys) for å generere en ny API nøkkel.
+
+2. Kjør kommandoen `/connect` og søk etter **Scaleway**.
+
+ ```txt
+ /connect
+ ```
+
+3. Skriv inn Scaleway API-nøkkelen.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Kjør kommandoen `/models` for å velge en modell som _devstral-2-123b-instruct-2512_ eller _gpt-oss-120b_.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### Sammen AI
+
+1. Gå over til [Together AI-konsollen](https://api.together.ai), opprett en konto og klikk på **Legg til nøkkel**.
+
+2. Kjør kommandoen `/connect` og søk etter **Together AI**.
+
+ ```txt
+ /connect
+ ```
+
+3. Skriv inn Together AI API nøkkelen.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Kjør kommandoen `/models` for å velge en modell som _Kimi K2 Instruct_.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### Venezia AI
+
+1. Gå over til [Venezia AI-konsollen](https://venice.ai), opprett en konto og generer en API-nøkkel.
+
+2. Kjør kommandoen `/connect` og søk etter **Venezia AI**.
+
+ ```txt
+ /connect
+ ```
+
+3. Skriv inn Venezia AI API nøkkelen.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Kjør kommandoen `/models` for å velge en modell som _Llama 3.3 70B_.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### Vercel AI Gateway
+
+Vercel AI Gateway lar deg få tilgang til modeller fra OpenAI, Anthropic, Google, xAI og mer gjennom et enhetlig endepunkt. Modeller tilbys til listepris uten påslag.
+
+1. Gå over til [Vercel dashboard](https://vercel.com/), naviger til fanen **AI Gateway**, og klikk på **API nøkler** for å opprette en ny API nøkkel.
+
+2. Kjør kommandoen `/connect` og søk etter **Vercel AI Gateway**.
+
+ ```txt
+ /connect
+ ```
+
+3. Skriv inn Vercel AI Gateway API nøkkel.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Kjør kommandoen `/models` for å velge en modell.
+
+ ```txt
+ /models
+ ```
+
+Du kan også tilpasse modeller gjennom opencode-konfigurasjonen. Her er et eksempel på spesifisering av leverandørrutingsrekkefølge.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "vercel": {
+ "models": {
+ "anthropic/claude-sonnet-4": {
+ "options": {
+ "order": ["anthropic", "vertex"]
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+Noen nyttige rutealternativer:
+
+| Alternativ | Beskrivelse |
+| ------------------- | ------------------------------------------------------------- |
+| `order` | Providersekvens for å prøve |
+| `only` | Begrens til spesifikke leverandører |
+| `zeroDataRetention` | Bruk kun leverandører med null retningslinjer for datalagring |
+
+---
+
+### xAI
+
+1. Gå over til [xAI-konsollen](https://console.x.ai/), opprett en konto og generer en API-nøkkel.
+
+2. Kjør kommandoen `/connect` og søk etter **xAI**.
+
+ ```txt
+ /connect
+ ```
+
+3. Skriv inn xAI API-nøkkelen.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Kjør kommandoen `/models` for å velge en modell som _Grok Beta_.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### Z.AI
+
+1. Gå over til [Z.AI API-konsollen](https://z.ai/manage-apikey/apikey-list), opprett en konto og klikk på **Opprett en ny API-nøkkel**.
+
+2. Kjør kommandoen `/connect` og søk etter **Z.AI**.
+
+ ```txt
+ /connect
+ ```
+
+ Hvis du abonnerer på **GLM Coding Plan**, velg **Z.AI Coding Plan**.
+
+3. Skriv inn Z.AI API-nøkkelen.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Kjør kommandoen `/models` for å velge en modell som _GLM-4.7_.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### ZenMux
+
+1. Gå over til [ZenMux-dashbordet](https://zenmux.ai/settings/keys), klikk på **Create API Key**, og kopier nøkkelen.
+
+2. Kjør kommandoen `/connect` og søk etter ZenMux.
+
+ ```txt
+ /connect
+ ```
+
+3. Skriv inn API-nøkkelen for leverandøren.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Mange ZenMux-modeller er forhåndslastet som standard, kjør kommandoen `/models` for å velge den du ønsker.
+
+ ```txt
+ /models
+ ```
+
+ Du kan også legge til flere modeller gjennom opencode-konfigurasjonen.
+
+ ```json title="opencode.json" {6}
+ {
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "zenmux": {
+ "models": {
+ "somecoolnewmodel": {}
+ }
+ }
+ }
+ }
+ ```
+
+---
+
+## Egendefinert leverandør
+
+Slik legger du til en **OpenAI-kompatibel**-leverandør som ikke er oppført i `/connect`-kommandoen:
+
+:::tupp
+Du kan bruke hvilken som helst OpenAI-kompatibel leverandør med opencode. De fleste moderne AI-leverandører tilbyr OpenAI-kompatible APIer.
+:::
+
+1. Kjør kommandoen `/connect` og rull ned til **Annet**.
+
+ ```bash
+ $ /connect
+
+ ┌ Add credential
+ │
+ ◆ Select provider
+ │ ...
+ │ ● Other
+ └
+ ```
+
+2. Skriv inn en unik ID for leverandøren.
+
+ ```bash
+ $ /connect
+
+ ┌ Add credential
+ │
+ ◇ Enter provider id
+ │ myprovider
+ └
+ ```
+
+ :::note
+ Velg en minneverdig ID, du vil bruke denne i konfigurasjonsfilen din.
+ :::
+
+3. Skriv inn API-nøkkelen for leverandøren.
+
+ ```bash
+ $ /connect
+
+ ┌ Add credential
+ │
+ ▲ This only stores a credential for myprovider - you will need to configure it in opencode.json, check the docs for examples.
+ │
+ ◇ Enter your API key
+ │ sk-...
+ └
+ ```
+
+4. Opprett eller oppdater `opencode.json`-filen i prosjektkatalogen:
+
+ ```json title="opencode.json" ""myprovider"" {5-15}
+ {
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "myprovider": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "My AI ProviderDisplay Name",
+ "options": {
+ "baseURL": "https://api.myprovider.com/v1"
+ },
+ "models": {
+ "my-model-name": {
+ "name": "My Model Display Name"
+ }
+ }
+ }
+ }
+ }
+ ```
+
+ Her er konfigurasjonsalternativene:
+ - **npm**: AI SDK pakke å bruke, `@ai-sdk/openai-compatible` for OpenAI-kompatible leverandører
+ - **navn**: Visningsnavn i UI.
+ - **modeller**: Tilgjengelige modeller.
+ - **options.baseURL**: API endepunkt URL.
+ - **options.apiKey**: Angi API-nøkkelen hvis du ikke bruker auth.
+ - **options.headers**: Angi egendefinerte overskrifter.
+
+ Mer om de avanserte alternativene i eksemplet nedenfor.
+
+5. Kjør kommandoen `/models` og din egendefinerte leverandør og modeller vil vises i utvalgslisten.
+
+---
+
+##### Eksempel
+
+Her er et eksempel på innstilling av alternativene `apiKey`, `headers` og modell `limit`.
+
+```json title="opencode.json" {9,11,17-20}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "myprovider": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "My AI ProviderDisplay Name",
+ "options": {
+ "baseURL": "https://api.myprovider.com/v1",
+ "apiKey": "{env:ANTHROPIC_API_KEY}",
+ "headers": {
+ "Authorization": "Bearer custom-token"
+ }
+ },
+ "models": {
+ "my-model-name": {
+ "name": "My Model Display Name",
+ "limit": {
+ "context": 200000,
+ "output": 65536
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+Konfigurasjonsdetaljer:
+
+- **apiKey**: Angi med `env` variabel syntaks, [finn ut mer](/docs/config#env-vars).
+- **overskrifter**: Egendefinerte overskrifter sendt med hver forespørsel.
+- **limit.context**: Maksimalt inndatatoken som modellen godtar.
+- **limit.output**: Maksimalt antall tokens modellen kan generere.
+
+`limit`-feltene lar OpenCode forstå hvor mye kontekst du har igjen. Standardleverandører henter disse automatisk fra models.dev.
+
+---
+
+## Feilsøking
+
+Hvis du har problemer med å konfigurere en leverandør, sjekk følgende:
+
+1. **Sjekk autentiseringsoppsettet**: Kjør `opencode auth list` for å se om legitimasjonen
+ for leverandøren legges til konfigurasjonen din.
+
+ Dette gjelder ikke leverandører som Amazon Bedrock, som er avhengige av miljøvariabler for godkjenning.
+
+2. For tilpassede leverandører, sjekk opencode-konfigurasjonen og:
+ - Sørg for at leverandøren ID som brukes i `/connect`-kommandoen samsvarer med ID i opencode-konfigurasjonen.
+ – Den riktige npm-pakken brukes for leverandøren. Bruk for eksempel `@ai-sdk/cerebras` for Cerebras. Og for alle andre OpenAI-kompatible leverandører, bruk `@ai-sdk/openai-compatible`.
+ - Kontroller at riktig API-endepunkt er brukt i `options.baseURL`-feltet.
diff --git a/packages/web/src/content/docs/da/rules.mdx b/packages/web/src/content/docs/da/rules.mdx
new file mode 100644
index 000000000..e34097381
--- /dev/null
+++ b/packages/web/src/content/docs/da/rules.mdx
@@ -0,0 +1,180 @@
+---
+title: Regler
+description: Set custom instructions for opencode.
+---
+
+Du kan gi tilpassede instruksjoner for å OpenCode ved å opprette en `AGENTS.md`-fil. Dette ligner på Cursors regler. Den inneholder instruksjoner som vil bli inkludert i LLMs kontekst for å tilpasse oppførselen til ditt spesifikke prosjekt.
+
+---
+
+## Initialiser
+
+For å lage en ny `AGENTS.md` fil, kan du kjøre kommandoen `/init` i opencode.
+
+:::tupp
+Du bør overgi prosjektets `AGENTS.md`-fil til Git.
+:::
+
+Dette vil skanne prosjektet og alt dets innhold for å forstå hva prosjektet handler om og generere en `AGENTS.md`-fil med det. Dette hjelper opencode å navigere i prosjektet bedre.
+
+Hvis du har en eksisterende `AGENTS.md`-fil, vil denne prøve å legge til den.
+
+---
+
+## Eksempel
+
+Du kan også bare lage denne filen manuelt. Her er et eksempel på noen ting du kan legge inn i en `AGENTS.md`-fil.
+
+```markdown title="AGENTS.md"
+# SST v3 Monorepo Project
+
+This is an SST v3 monorepo with TypeScript. The project uses bun workspaces for package management.
+
+## Project Structure
+
+- `packages/` - Contains all workspace packages (functions, core, web, etc.)
+- `infra/` - Infrastructure definitions split by service (storage.ts, api.ts, web.ts)
+- `sst.config.ts` - Main SST configuration with dynamic imports
+
+## Code Standards
+
+- Use TypeScript with strict mode enabled
+- Shared code goes in `packages/core/` with proper exports configuration
+- Functions go in `packages/functions/`
+- Infrastructure should be split into logical files in `infra/`
+
+## Monorepo Conventions
+
+- Import shared modules using workspace names: `@my-app/core/example`
+```
+
+Vi legger til prosjektspesifikke instruksjoner her, og dette vil bli delt på tvers av teamet ditt.
+
+---
+
+## Typer
+
+opencode støtter også lesing av `AGENTS.md`-filen fra flere steder. Og dette tjener forskjellige formål.
+
+### Prosjekt
+
+Plasser en `AGENTS.md` i prosjektroten for prosjektspesifikke regler. Disse gjelder kun når du arbeider i denne katalogen eller dens underkataloger.
+
+### Globalt
+
+Du kan også ha globale regler i en `~/.config/opencode/AGENTS.md`-fil. Dette blir brukt på alle opencode-økter.
+
+Siden dette ikke er forpliktet til Git eller delt med teamet ditt, anbefaler vi å bruke dette til å spesifisere eventuelle personlige regler som LLM bør følge.
+
+### Claude-kodekompatibilitet
+
+For brukere som migrerer fra Claude Code, støtter OpenCode Claude Codes filkonvensjoner som fallbacks:
+
+- **Prosjektregler**: `CLAUDE.md` i prosjektkatalogen din (brukes hvis ingen `AGENTS.md` eksisterer)
+- **Globale regler**: `~/.claude/CLAUDE.md` (brukes hvis ingen `~/.config/opencode/AGENTS.md` eksisterer)
+- **Skills**: `~/.claude/skills/` — se [Agent Skills](/docs/skills/) for detaljer
+
+For å deaktivere Claude Code-kompatibilitet, sett en av disse miljøvariablene:
+
+```bash
+export OPENCODE_DISABLE_CLAUDE_CODE=1 # Disable all .claude support
+export OPENCODE_DISABLE_CLAUDE_CODE_PROMPT=1 # Disable only ~/.claude/CLAUDE.md
+export OPENCODE_DISABLE_CLAUDE_CODE_SKILLS=1 # Disable only .claude/skills
+```
+
+---
+
+## Forrang
+
+Når opencode starter, ser den etter regelfiler i denne rekkefølgen:
+
+1. **Lokale filer** ved å gå opp fra gjeldende katalog (`AGENTS.md`, `CLAUDE.md`)
+2. **Global fil** på `~/.config/opencode/AGENTS.md`
+3. **Claude Code-fil** på `~/.claude/CLAUDE.md` (med mindre de er deaktivert)
+
+Den første matchende filen vinner i hver kategori. For eksempel, hvis du har både `AGENTS.md` og `CLAUDE.md`, brukes bare `AGENTS.md`. På samme måte har `~/.config/opencode/AGENTS.md` forrang over `~/.claude/CLAUDE.md`.
+
+---
+
+## Egendefinerte instruksjoner
+
+Du kan spesifisere egendefinerte instruksjonsfiler i din `opencode.json` eller den globale `~/.config/opencode/opencode.json`. Dette lar deg og teamet ditt gjenbruke eksisterende regler i stedet for å måtte duplisere dem til AGENTS.md.
+
+Eksempel:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
+}
+```
+
+Du kan også bruke eksterne URL-er for å laste instruksjoner fra nettet.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "instructions": ["https://raw.githubusercontent.com/my-org/shared-rules/main/style.md"]
+}
+```
+
+Fjerninstruksjoner hentes med 5 sekunders tidsavbrudd.
+
+Alle instruksjonsfilene er kombinert med `AGENTS.md`-filene dine.
+
+---
+
+## Refererer til eksterne filer
+
+Selv om opencode ikke automatisk analyserer filreferanser i `AGENTS.md`, kan du oppnå lignende funksjonalitet på to måter:
+
+### Bruker opencode.json
+
+Den anbefalte tilnærmingen er å bruke feltet `instructions` i `opencode.json`:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "instructions": ["docs/development-standards.md", "test/testing-guidelines.md", "packages/*/AGENTS.md"]
+}
+```
+
+### Manuelle instruksjoner i AGENTS.md
+
+Du kan lære opencode å lese eksterne filer ved å gi eksplisitte instruksjoner i `AGENTS.md`. Her er et praktisk eksempel:
+
+```markdown title="AGENTS.md"
+# TypeScript Project Rules
+
+## External File Loading
+
+CRITICAL: When you encounter a file reference (e.g., @rules/general.md), use your Read tool to load it on a need-to-know basis. They're relevant to the SPECIFIC task at hand.
+
+Instructions:
+
+- Do NOT preemptively load all references - use lazy loading based on actual need
+- When loaded, treat content as mandatory instructions that override defaults
+- Follow references recursively when needed
+
+## Development Guidelines
+
+For TypeScript code style and best practices: @docs/typescript-guidelines.md
+For React component architecture and hooks patterns: @docs/react-patterns.md
+For REST API design and error handling: @docs/api-standards.md
+For testing strategies and coverage requirements: @test/testing-guidelines.md
+
+## General Guidelines
+
+Read the following file immediately as it's relevant to all workflows: @rules/general-guidelines.md.
+```
+
+Denne tilnærmingen lar deg:
+
+- Lag modulære, gjenbrukbare regelfiler
+- Del regler på tvers av prosjekter via symbolkoblinger eller git-undermoduler
+- Hold AGENTS.md kortfattet mens du refererer til detaljerte retningslinjer
+- Sørg for at opencode laster filer kun når det er nødvendig for den spesifikke oppgaven
+
+:::tupp
+For monorepos eller prosjekter med delte standarder er bruk av `opencode.json` med glob-mønstre (som `packages/*/AGENTS.md`) mer vedlikeholdbart enn manuelle instruksjoner.
+:::
diff --git a/packages/web/src/content/docs/da/sdk.mdx b/packages/web/src/content/docs/da/sdk.mdx
new file mode 100644
index 000000000..ee5ed97aa
--- /dev/null
+++ b/packages/web/src/content/docs/da/sdk.mdx
@@ -0,0 +1,391 @@
+---
+title: SDK
+description: Typesikker JS-klient for åpen kodeserver.
+---
+
+import config from "../../../../config.mjs"
+export const typesUrl = `${config.github}/blob/dev/packages/sdk/js/src/gen/types.gen.ts`
+
+Åpenkoden JS/TS SDK gir en typesikker klient for samhandling med serveren.
+Bruk den til å bygge integrasjoner og kontrollere opencode programmatisk.
+
+[Finn ut mer](/docs/server) om hvordan serveren fungerer. For eksempler, sjekk ut [prosjektene](/docs/ecosystem#projects) bygget av fellesskapet.
+
+---
+
+## Installer
+
+Installer SDK fra npm:
+
+```bash
+npm install @opencode-ai/sdk
+```
+
+---
+
+## Opprett klient
+
+Opprett en forekomst av opencode:
+
+```javascript
+import { createOpencode } from "@opencode-ai/sdk"
+
+const { client } = await createOpencode()
+```
+
+Dette starter både en server og en klient
+
+#### Alternativer
+
+| Alternativ | Skriv | Beskrivelse | Standard |
+| ---------- | ------------- | -------------------------------- | ----------- |
+| `hostname` | `string` | Server vertsnavn | `127.0.0.1` |
+| `port` | `number` | Serverport | `4096` |
+| `signal` | `AbortSignal` | Avbryt signal for kansellering | `undefined` |
+| `timeout` | `number` | Tidsavbrudd i ms for serverstart | `5000` |
+| `config` | `Config` | Konfigurasjonsobjekt | `{}` |
+
+---
+
+## Konfig
+
+Du kan sende et konfigurasjonsobjekt for å tilpasse virkemåten. Forekomsten henter fortsatt din `opencode.json`, men du kan overstyre eller legge til konfigurasjon inline:
+
+```javascript
+import { createOpencode } from "@opencode-ai/sdk"
+
+const opencode = await createOpencode({
+ hostname: "127.0.0.1",
+ port: 4096,
+ config: {
+ model: "anthropic/claude-3-5-sonnet-20241022",
+ },
+})
+
+console.log(`Server running at ${opencode.server.url}`)
+
+opencode.server.close()
+```
+
+## Kun klient
+
+Hvis du allerede har en kjørende forekomst av opencode, kan du opprette en klientforekomst for å koble til den:
+
+```javascript
+import { createOpencodeClient } from "@opencode-ai/sdk"
+
+const client = createOpencodeClient({
+ baseUrl: "http://localhost:4096",
+})
+```
+
+#### Alternativer
+
+| Alternativ | Skriv inn | Beskrivelse | Standard |
+| --------------- | ---------- | ---------------------------------- | ----------------------- |
+| `baseUrl` | `string` | URL av serveren | `http://localhost:4096` |
+| `fetch` | `function` | Egendefinert hentingimplementering | `globalThis.fetch` |
+| `parseAs` | `string` | Svarparsingmetode | `auto` |
+| `responseStyle` | `string` | Returstil: `data` eller `fields` | `fields` |
+| `throwOnError` | `boolean` | Kast feil i stedet for retur | `false` |
+
+---
+
+## Typer
+
+SDK inkluderer TypeScript-definisjoner for alle API-typer. Importer dem direkte:
+
+```typescript
+import type { Session, Message, Part } from "@opencode-ai/sdk"
+```
+
+Alle typer er generert fra serverens OpenAPI-spesifikasjon og tilgjengelig i types-filen.
+
+---
+
+## Feil
+
+SDK kan gi feil som du kan fange opp og håndtere:
+
+```typescript
+try {
+ await client.session.get({ path: { id: "invalid-id" } })
+} catch (error) {
+ console.error("Failed to get session:", (error as Error).message)
+}
+```
+
+---
+
+## APIer
+
+SDK avslører alle server-APIer gjennom en typesikker klient.
+
+---
+
+### Globalt
+
+| Metode | Beskrivelse | Svar |
+| ----------------- | ---------------------------- | ------------------------------------ |
+| `global.health()` | Sjekk serverhelse og versjon | `{ healthy: true, version: string }` |
+
+---
+
+#### Eksempler
+
+```javascript
+const health = await client.global.health()
+console.log(health.data.version)
+```
+
+---
+
+### App
+
+| Metode | Beskrivelse | Svar |
+| -------------- | -------------------------------- | ------------------------------------------- |
+| `app.log()` | Skriv en loggoppføring | `boolean` |
+| `app.agents()` | Liste alle tilgjengelige agenter | Agent[] |
+
+---
+
+#### Eksempler
+
+```javascript
+// Write a log entry
+await client.app.log({
+ body: {
+ service: "my-app",
+ level: "info",
+ message: "Operation completed",
+ },
+})
+
+// List available agents
+const agents = await client.app.agents()
+```
+
+---
+
+### Prosjekt
+
+| Metode | Beskrivelse | Svar |
+| ------------------- | -------------------------- | ---------------------------------------------- |
+| `project.list()` | Liste over alle prosjekter | Prosjekt[] |
+| `project.current()` | Få nåværende prosjekt | Prosjekt |
+
+---
+
+#### Eksempler
+
+```javascript
+// List all projects
+const projects = await client.project.list()
+
+// Get current project
+const currentProject = await client.project.current()
+```
+
+---
+
+### Sti
+
+| Metode | Beskrivelse | Svar |
+| ------------ | ----------------- | ---------------------------------------- |
+| `path.get()` | Få gjeldende bane | Path |
+
+---
+
+#### Eksempler
+
+```javascript
+// Get current path information
+const pathInfo = await client.path.get()
+```
+
+---
+
+### Konfig
+
+| Metode | Beskrivelse | Svar |
+| -------------------- | -------------------------------------- | ----------------------------------------------------------------------------------------------------- |
+| `config.get()` | Få konfigurasjonsinformasjon | Config |
+| `config.providers()` | Liste leverandører og standardmodeller | `{ providers: `Tilbyder[]`, default: { [key: string]: string } }` |
+
+---
+
+#### Eksempler
+
+```javascript
+const config = await client.config.get()
+
+const { providers, default: defaults } = await client.config.providers()
+```
+
+---
+
+### økter
+
+| Metode | Beskrivelse | Merknader |
+| ---------------------------------------------------------- | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
+| `session.list()` | Liste økter | Returnerer Session[] |
+| `session.get({ path })` | Få økt | Returnerer Session |
+| `session.children({ path })` | Liste over barneøkter | Returnerer Session[] |
+| `session.create({ body })` | Opprett økt | Returnerer Session |
+| `session.delete({ path })` | Slett økt | Returnerer `boolean` |
+| `session.update({ path, body })` | Oppdater øktegenskaper | Returnerer Session |
+| `session.init({ path, body })` | Analyser appen og lag `AGENTS.md` | Returnerer `boolean` |
+| `session.abort({ path })` | Avbryt en løpeøkt | Returnerer `boolean` |
+| `session.share({ path })` | Del økten | Returnerer Session |
+| `session.unshare({ path })` | Slutt å dele økten | Returnerer Session |
+| `session.summarize({ path, body })` | Oppsummer økten | Returnerer `boolean` |
+| `session.messages({ path })` | Liste meldinger i en økt | Returnerer `{ info: `Message`, parts: `Del[]`}[]` |
+| `session.message({ path })` | Få meldingsdetaljer | Returnerer `{ info: `Message`, parts: `Del[]`}` |
+| `session.prompt({ path, body })` | Send melding | `body.noReply: true` returnerer UserMessage (kun kontekst). Standard returnerer AssistantMessage med AI svar |
+| `session.command({ path, body })` | Send kommando til økt | Returnerer `{ info: `AssistantMessage`, parts: `Del[]`}` |
+| `session.shell({ path, body })` | Kjør en shell-kommando | Returnerer AssistantMessage |
+| `session.revert({ path, body })` | Tilbakestill en melding | Returnerer Session |
+| `session.unrevert({ path })` | Gjenopprett tilbakestilte meldinger | Returnerer Session |
+| `postSessionByIdPermissionsByPermissionId({ path, body })` | Svar på en tillatelsesforespørsel | Returnerer `boolean` |
+
+---
+
+#### Eksempler
+
+```javascript
+// Create and manage sessions
+const session = await client.session.create({
+ body: { title: "My session" },
+})
+
+const sessions = await client.session.list()
+
+// Send a prompt message
+const result = await client.session.prompt({
+ path: { id: session.id },
+ body: {
+ model: { providerID: "anthropic", modelID: "claude-3-5-sonnet-20241022" },
+ parts: [{ type: "text", text: "Hello!" }],
+ },
+})
+
+// Inject context without triggering AI response (useful for plugins)
+await client.session.prompt({
+ path: { id: session.id },
+ body: {
+ noReply: true,
+ parts: [{ type: "text", text: "You are a helpful assistant." }],
+ },
+})
+```
+
+---
+
+### Filer
+
+| Metode | Beskrivelse | Svar |
+| ------------------------- | ---------------------------------- | ------------------------------------------------------------------------------------------ |
+| `find.text({ query })` | Søk etter tekst i filer | En rekke matchobjekter med `path`, `lines`, `line_number`, `absolute_offset`, `submatches` |
+| `find.files({ query })` | Finn filer og kataloger etter navn | `string[]` (baner) |
+| `find.symbols({ query })` | Finn arbeidsområdesymboler | Symbol[] |
+| `file.read({ query })` | Les en fil | `{ type: "raw" \| "patch", content: string }` |
+| `file.status({ query? })` | Få status for sporede filer | Fil[] |
+
+`find.files` støtter noen få valgfrie søkefelt:
+
+- `type`: `"file"` eller `"directory"`
+- `directory`: overstyr prosjektroten for søket
+- `limit`: maksimalt antall resultater (1–200)
+
+---
+
+#### Eksempler
+
+```javascript
+// Search and read files
+const textResults = await client.find.text({
+ query: { pattern: "function.*opencode" },
+})
+
+const files = await client.find.files({
+ query: { query: "*.ts", type: "file" },
+})
+
+const directories = await client.find.files({
+ query: { query: "packages", type: "directory", limit: 20 },
+})
+
+const content = await client.file.read({
+ query: { path: "src/index.ts" },
+})
+```
+
+---
+
+### TUI
+
+| Metode | Beskrivelse | Svar |
+| ------------------------------ | ---------------------------- | --------- |
+| `tui.appendPrompt({ body })` | Legg til tekst i ledeteksten | `boolean` |
+| `tui.openHelp()` | Åpne hjelpedialogen | `boolean` |
+| `tui.openSessions()` | Åpne øktvelgeren | `boolean` |
+| `tui.openThemes()` | Åpne temavelgeren | `boolean` |
+| `tui.openModels()` | Åpne modellvelgeren | `boolean` |
+| `tui.submitPrompt()` | Send inn gjeldende ledetekst | `boolean` |
+| `tui.clearPrompt()` | Fjern ledeteksten | `boolean` |
+| `tui.executeCommand({ body })` | Utfør en kommando | `boolean` |
+| `tui.showToast({ body })` | Vis toastvarsel | `boolean` |
+
+---
+
+#### Eksempler
+
+```javascript
+// Control TUI interface
+await client.tui.appendPrompt({
+ body: { text: "Add this to prompt" },
+})
+
+await client.tui.showToast({
+ body: { message: "Task completed", variant: "success" },
+})
+```
+
+---
+
+### Auth
+
+| Metode | Beskrivelse | Svar |
+| ------------------- | ------------------------------- | --------- |
+| `auth.set({ ... })` | Angi autentiseringslegitimasjon | `boolean` |
+
+---
+
+#### Eksempler
+
+```javascript
+await client.auth.set({
+ path: { id: "anthropic" },
+ body: { type: "api", key: "your-api-key" },
+})
+```
+
+---
+
+### Hendelser
+
+| Metode | Beskrivelse | Svar |
+| ------------------- | ------------------------------ | ------------------------------ |
+| `event.subscribe()` | Server-sendte hendelser stream | Server-sendte hendelser stream |
+
+---
+
+#### Eksempler
+
+```javascript
+// Listen to real-time events
+const events = await client.event.subscribe()
+for await (const event of events.stream) {
+ console.log("Event:", event.type, event.properties)
+}
+```
diff --git a/packages/web/src/content/docs/da/server.mdx b/packages/web/src/content/docs/da/server.mdx
new file mode 100644
index 000000000..04d2e9221
--- /dev/null
+++ b/packages/web/src/content/docs/da/server.mdx
@@ -0,0 +1,287 @@
+---
+title: Server
+description: Samhandle med opencode-server over HTTP.
+---
+
+import config from "../../../../config.mjs"
+export const typesUrl = `${config.github}/blob/dev/packages/sdk/js/src/gen/types.gen.ts`
+
+Kommandoen `opencode serve` kjører en hodeløs HTTP-server som avslører et OpenAPI-endepunkt som en opencode-klient kan bruke.
+
+---
+
+### Bruk
+
+```bash
+opencode serve [--port ] [--hostname ] [--cors ]
+```
+
+#### Alternativer
+
+| Flagg | Beskrivelse | Standard |
+| --------------- | ---------------------------------------------- | ---------------- |
+| `--port` | Port å lytte på | `4096` |
+| `--hostname` | Vertsnavn å lytte på | `127.0.0.1` |
+| `--mdns` | Aktiver mDNS-oppdagelse | `false` |
+| `--mdns-domain` | Egendefinert domenenavn for mDNS-tjeneste | `opencode.local` |
+| `--cors` | Ytterligere nettleseropprinnelse for å tillate | `[]` |
+
+`--cors` kan passeres flere ganger:
+
+```bash
+opencode serve --cors http://localhost:5173 --cors https://app.example.com
+```
+
+---
+
+### Autentisering
+
+Sett `OPENCODE_SERVER_PASSWORD` for å beskytte serveren med HTTP grunnleggende autentisering. Brukernavnet er standard til `opencode`, eller sett `OPENCODE_SERVER_USERNAME` for å overstyre det. Dette gjelder både `opencode serve` og `opencode web`.
+
+```bash
+OPENCODE_SERVER_PASSWORD=your-password opencode serve
+```
+
+---
+
+### Slik fungerer det
+
+Når du kjører `opencode` starter den en TUI og en server. Der TUI er
+klient som snakker med serveren. Serveren viser en OpenAPI 3.1-spesifikasjon
+endepunkt. Dette endepunktet brukes også til å generere en [SDK](/docs/sdk).
+
+:::tupp
+Bruk opencode-serveren til å samhandle med opencode programmatisk.
+:::
+
+Denne arkitekturen lar opencode støtte flere klienter og lar deg samhandle med opencode programmatisk.
+
+Du kan kjøre `opencode serve` for å starte en frittstående server. Hvis du har
+opencode TUI kjører, vil `opencode serve` starte en ny server.
+
+---
+
+#### Koble til en eksisterende server
+
+Når du starter TUI, tildeler den tilfeldig en port og vertsnavn. Du kan i stedet sende inn `--hostname` og `--port` [flagg](/docs/cli). Bruk deretter denne til å koble til serveren.
+
+[`/tui`](#tui) endepunktet kan brukes til å kjøre TUI gjennom serveren. Du kan for eksempel forhåndsutfylle eller kjøre en forespørsel. Dette oppsettet brukes av OpenCode [IDE](/docs/ide) plugins.
+
+---
+
+## Spes
+
+Serveren publiserer en OpenAPI 3.1-spesifikasjon som kan vises på:
+
+```
+http://:/doc
+```
+
+For eksempel `http://localhost:4096/doc`. Bruk spesifikasjonen til å generere klienter eller inspisere forespørsels- og svartyper. Eller se den i en Swagger-utforsker.
+
+---
+
+## APIer
+
+OpenCode-serveren viser følgende APIer.
+
+---
+
+### Globalt
+
+| Metode | Sti | Beskrivelse | Svar |
+| ------ | ---------------- | -------------------------------- | ------------------------------------ |
+| `GET` | `/global/health` | Få serverhelse og versjon | `{ healthy: true, version: string }` |
+| `GET` | `/global/event` | Få globale hendelser (SSE strøm) | Eventstrøm |
+
+---
+
+### Prosjekt
+
+| Metode | Sti | Beskrivelse | Svar |
+| ------ | ------------------ | --------------------------- | ---------------------------------------------- |
+| `GET` | `/project` | Liste over alle prosjekter | Prosjekt[] |
+| `GET` | `/project/current` | Få det nåværende prosjektet | Prosjekt |
+
+---
+
+### Bane og VCS
+
+| Metode | Sti | Beskrivelse | Svar |
+| ------ | ------- | ---------------------------------- | ------------------------------------------- |
+| `GET` | `/path` | Få gjeldende bane | Path |
+| `GET` | `/vcs` | Få VCS info for gjeldende prosjekt | VcsInfo |
+
+---
+
+### Forekomst
+
+| Metode | Sti | Beskrivelse | Svar |
+| ------ | ------------------- | ------------------------ | --------- |
+| `POST` | `/instance/dispose` | Kast gjeldende forekomst | `boolean` |
+
+---
+
+### Konfig
+
+| Metode | Sti | Beskrivelse | Svar |
+| ------- | ------------------- | -------------------------------------- | ---------------------------------------------------------------------------------------- |
+| `GET` | `/config` | Få konfigurasjonsinformasjon | Config |
+| `PATCH` | `/config` | Oppdater konfigurasjon | Config |
+| `GET` | `/config/providers` | Liste leverandører og standardmodeller | `{ providers: `Tilbyder[]`, default: { [key: string]: string } }` |
+
+---
+
+### Leverandør
+
+| Metode | Sti | Beskrivelse | Svar |
+| ------ | -------------------------------- | ----------------------------------------------- | ----------------------------------------------------------------------------------- |
+| `GET` | `/provider` | Liste alle leverandører | `{ all: `Tilbyder[]`, default: {...}, connected: string[] }` |
+| `GET` | `/provider/auth` | Få leverandørautentiseringsmetoder | `{ [providerID: string]: `ProviderAuthMethod[]` }` |
+| `POST` | `/provider/{id}/oauth/authorize` | Autoriser en leverandør ved å bruke OAuth | ProviderAuthAuthorization |
+| `POST` | `/provider/{id}/oauth/callback` | Håndtere OAuth-tilbakeringing for en leverandør | `boolean` |
+
+---
+
+### økter
+
+| Metode | Sti | Beskrivelse | Merknader |
+| -------- | ---------------------------------------- | ---------------------------------------- | ------------------------------------------------------------------------------------- |
+| `GET` | `/session` | Liste alle økter | Returnerer Session[] |
+| `POST` | `/session` | Opprett en ny økt | body: `{ parentID?, title? }`, returnerer Session |
+| `GET` | `/session/status` | Få øktstatus for alle økter | Returnerer `{ [sessionID: string]: `SessionStatus` }` |
+| `GET` | `/session/:id` | Få øktdetaljer | Returnerer Session |
+| `DELETE` | `/session/:id` | Slett en økt og alle dens data | Returnerer `boolean` |
+| `PATCH` | `/session/:id` | Oppdater øktegenskaper | body: `{ title? }`, returnerer Session |
+| `GET` | `/session/:id/children` | Få en økts barneøkter | Returnerer Session[] |
+| `GET` | `/session/:id/todo` | Få gjøremålslisten for en økt | Returnerer Todo[] |
+| `POST` | `/session/:id/init` | Analyser appen og lag `AGENTS.md` | body: `{ messageID, providerID, modelID }`, returnerer `boolean` |
+| `POST` | `/session/:id/fork` | Fork en eksisterende økt ved en melding | body: `{ messageID? }`, returnerer Session |
+| `POST` | `/session/:id/abort` | Avbryt en løpeøkt | Returnerer `boolean` |
+| `POST` | `/session/:id/share` | Del en økt | Returnerer Session |
+| `DELETE` | `/session/:id/share` | Slutt å dele en økt | Returnerer Session |
+| `GET` | `/session/:id/diff` | Få diff for denne økten | spørring: `messageID?`, returnerer FileDiff[] |
+| `POST` | `/session/:id/summarize` | Oppsummer økten | body: `{ providerID, modelID }`, returnerer `boolean` |
+| `POST` | `/session/:id/revert` | Tilbakestill en melding | body: `{ messageID, partID? }`, returnerer `boolean` |
+| `POST` | `/session/:id/unrevert` | Gjenopprett alle tilbakestilte meldinger | Returnerer `boolean` |
+| `POST` | `/session/:id/permissions/:permissionID` | Svar på en tillatelsesforespørsel | body: `{ response, remember? }`, returnerer `boolean` |
+
+---
+
+### Meldinger
+
+| Metode | Sti | Beskrivelse | Merknader |
+| ------ | --------------------------------- | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| `GET` | `/session/:id/message` | Liste meldinger i en økt | spørring: `limit?`, returnerer `{ info: `Message`, parts: `Part[]`}[]` |
+| `POST` | `/session/:id/message` | Send en melding og vent på svar | body: `{ messageID?, model?, agent?, noReply?, system?, tools?, parts }`, returnerer `{ info: `Message`, parts: `Part[]`}` |
+| `GET` | `/session/:id/message/:messageID` | Få meldingsdetaljer | Returnerer `{ info: `Message`, parts: `Del[]`}` |
+| `POST` | `/session/:id/prompt_async` | Send en melding asynkront (ingen vent) | body: samme som `/session/:id/message`, returnerer `204 No Content` |
+| `POST` | `/session/:id/command` | Utfør en skråstrek-kommando | body: `{ messageID?, agent?, model?, command, arguments }`, returnerer `{ info: `Message`, parts: `Part[]`}` |
+| `POST` | `/session/:id/shell` | Kjør en shell-kommando | body: `{ agent, model?, command }`, returnerer `{ info: `Message`, parts: `Part[]`}` |
+
+---
+
+### Kommandoer
+
+| Metode | Sti | Beskrivelse | Svar |
+| ------ | ---------- | --------------------- | ---------------------------------------------- |
+| `GET` | `/command` | Liste alle kommandoer | Kommando[] |
+
+---
+
+### Filer
+
+| Metode | Sti | Beskrivelse | Svar |
+| ------ | ------------------------ | ---------------------------------- | ------------------------------------------------------------------------------------------ |
+| `GET` | `/find?pattern=` | Søk etter tekst i filer | En rekke matchobjekter med `path`, `lines`, `line_number`, `absolute_offset`, `submatches` |
+| `GET` | `/find/file?query=` | Finn filer og kataloger etter navn | `string[]` (baner) |
+| `GET` | `/find/symbol?query=` | Finn arbeidsområdesymboler | Symbol[] |
+| `GET` | `/file?path=` | Liste filer og kataloger | FilNode[] |
+| `GET` | `/file/content?path=` | Les en fil | Filinnhold |
+| `GET` | `/file/status` | Få status for sporede filer | Fil[] |
+
+#### `/find/file` spørringsparametere
+
+- `query` (obligatorisk) - søkestreng (uklar samsvar)
+- `type` (valgfritt) - begrense resultatene til `"file"` eller `"directory"`
+- `directory` (valgfritt) — overstyr prosjektroten for søket
+- `limit` (valgfritt) - maks. resultater (1–200)
+- `dirs` (valgfritt) - eldre flagg (`"false"` returnerer kun filer)
+
+---
+
+### Verktøy (eksperimentelt)
+
+| Metode | Sti | Beskrivelse | Svar |
+| ------ | ------------------------------------------- | -------------------------------------------- | -------------------------------------------- |
+| `GET` | `/experimental/tool/ids` | Vis alle verktøy-ID-er | ToolIDs |
+| `GET` | `/experimental/tool?provider=
&model=` | List verktøy med JSON-skjemaer for en modell | ToolList |
+
+---
+
+### LSP, formattere og MCP
+
+| Metode | Sti | Beskrivelse | Svar |
+| ------ | ------------ | ---------------------------- | -------------------------------------------------------- |
+| `GET` | `/lsp` | Få LSP serverstatus | LSPStatus[] |
+| `GET` | `/formatter` | Få formateringsstatus | FormatterStatus[] |
+| `GET` | `/mcp` | Få MCP serverstatus | `{ [name: string]: `MCPStatus` }` |
+| `POST` | `/mcp` | Legg til MCP server dynamisk | body: `{ name, config }`, returnerer MCP statusobjekt |
+
+---
+
+### Agenter
+
+| Metode | Sti | Beskrivelse | Svar |
+| ------ | -------- | -------------------------------- | ------------------------------------------- |
+| `GET` | `/agent` | Liste alle tilgjengelige agenter | Agent[] |
+
+---
+
+### Logging
+
+| Metode | Sti | Beskrivelse | Svar |
+| ------ | ------ | --------------------------------------------------------------------- | --------- |
+| `POST` | `/log` | Skriv loggoppføring. Brødtekst: `{ service, level, message, extra? }` | `boolean` |
+
+---
+
+### TUI
+
+| Metode | Sti | Beskrivelse | Svar |
+| ------ | ----------------------- | ------------------------------------------- | -------------------------- |
+| `POST` | `/tui/append-prompt` | Legg til tekst i ledeteksten | `boolean` |
+| `POST` | `/tui/open-help` | Åpne hjelpedialogen | `boolean` |
+| `POST` | `/tui/open-sessions` | Åpne øktvelgeren | `boolean` |
+| `POST` | `/tui/open-themes` | Åpne temavelgeren | `boolean` |
+| `POST` | `/tui/open-models` | Åpne modellvelgeren | `boolean` |
+| `POST` | `/tui/submit-prompt` | Send inn gjeldende ledetekst | `boolean` |
+| `POST` | `/tui/clear-prompt` | Fjern ledeteksten | `boolean` |
+| `POST` | `/tui/execute-command` | Utfør en kommando (`{ command }`) | `boolean` |
+| `POST` | `/tui/show-toast` | Vis toast (`{ title?, message, variant }`) | `boolean` |
+| `GET` | `/tui/control/next` | Vent på neste kontrollforespørsel | Kontrollforespørselsobjekt |
+| `POST` | `/tui/control/response` | Svar på en kontrollforespørsel (`{ body }`) | `boolean` |
+
+---
+
+### Auth
+
+| Metode | Sti | Beskrivelse | Svar |
+| ------ | ----------- | --------------------------------------------------------------------------- | --------- |
+| `PUT` | `/auth/:id` | Angi autentiseringslegitimasjon. Brødtekst må samsvare med leverandørskjema | `boolean` |
+
+---
+
+### Hendelser
+
+| Metode | Sti | Beskrivelse | Svar |
+| ------ | -------- | -------------------------------------------------------------------------------------------------- | ------------------------------ |
+| `GET` | `/event` | Server-sendte hendelsesstrøm. Første arrangement er `server.connected`, deretter bussarrangementer | Server-sendte hendelser stream |
+
+---
+
+### Dokumenter
+
+| Metode | Sti | Beskrivelse | Svar |
+| ------ | ------ | ------------------------- | ----------------------------------- |
+| `GET` | `/doc` | OpenAPI 3.1-spesifikasjon | HTML side med OpenAPI-spesifikasjon |
diff --git a/packages/web/src/content/docs/da/share.mdx b/packages/web/src/content/docs/da/share.mdx
new file mode 100644
index 000000000..16dff7c52
--- /dev/null
+++ b/packages/web/src/content/docs/da/share.mdx
@@ -0,0 +1,128 @@
+---
+title: Dele
+description: Del dine OpenCode-samtaler.
+---
+
+OpenCodes delingsfunksjon lar deg lage offentlige lenker til dine OpenCode-samtaler, slik at du kan samarbeide med lagkamerater eller få hjelp fra andre.
+
+:::note
+Delte samtaler er offentlig tilgjengelige for alle med linken.
+:::
+
+---
+
+## Slik fungerer det
+
+Når du deler en samtale, OpenCode:
+
+1. Oppretter en unik offentlig URL for økten din
+2. Synkroniserer samtaleloggen din til serverne våre
+3. Gjør samtalen tilgjengelig via den delbare lenken — `opncd.ai/s/`
+
+---
+
+## Deling
+
+OpenCode støtter tre delingsmoduser som kontrollerer hvordan samtaler deles:
+
+---
+
+### Manuell (standard)
+
+Som standard bruker OpenCode manuell delingsmodus. Økter deles ikke automatisk, men du kan dele dem manuelt ved å bruke kommandoen `/share`:
+
+```
+/share
+```
+
+Dette vil generere en unik URL som vil bli kopiert til utklippstavlen din.
+
+For å eksplisitt angi manuell modus i [konfigurasjonsfilen](/docs/config):
+
+```json title="opencode.json"
+{
+ "$schema": "https://opncd.ai/config.json",
+ "share": "manual"
+}
+```
+
+---
+
+### Automatisk deling
+
+Du kan aktivere automatisk deling for alle nye samtaler ved å sette alternativet `share` til `"auto"` i [konfigurasjonsfilen](/docs/config):
+
+```json title="opencode.json"
+{
+ "$schema": "https://opncd.ai/config.json",
+ "share": "auto"
+}
+```
+
+Med automatisk deling aktivert, vil hver nye samtale automatisk bli delt og en kobling vil bli generert.
+
+---
+
+### Deaktivert
+
+Du kan deaktivere deling helt ved å sette alternativet `share` til `"disabled"` i [konfigurasjonsfilen](/docs/config):
+
+```json title="opencode.json"
+{
+ "$schema": "https://opncd.ai/config.json",
+ "share": "disabled"
+}
+```
+
+For å håndheve dette på tvers av teamet ditt for et gitt prosjekt, legg det til `opencode.json` i prosjektet ditt og sjekk inn i Git.
+
+---
+
+## Opphev deling
+
+Slik slutter du å dele en samtale og fjerner den fra offentlig tilgang:
+
+```
+/unshare
+```
+
+Dette vil fjerne delelinken og slette dataene knyttet til samtalen.
+
+---
+
+## Personvern
+
+Det er et par ting du må huske på når du deler en samtale.
+
+---
+
+### Datalagring
+
+Delte samtaler forblir tilgjengelige til du eksplisitt opphever deling av dem. Dette
+inkluderer:
+
+- Full samtalehistorikk
+- Alle meldinger og svar
+- Metadata for økter
+
+---
+
+### Anbefalinger
+
+- Del kun samtaler som ikke inneholder sensitiv informasjon.
+- Se gjennom samtaleinnholdet før du deler.
+- Opphev deling av samtaler når samarbeidet er fullført.
+- Unngå å dele samtaler med proprietær kode eller konfidensielle data.
+- For sensitive prosjekter, deaktiver deling helt.
+
+---
+
+## For bedrifter
+
+For bedriftsimplementeringer kan delingsfunksjonen være:
+
+- **Deaktivert** helt for overholdelse av sikkerhet
+- **Begrenset** til brukere som kun er autentisert gjennom SSO
+- **Selvvert** på din egen infrastruktur
+
+[Finn ut mer](/docs/enterprise) om bruk av opencode i organisasjonen din.
diff --git a/packages/web/src/content/docs/da/skills.mdx b/packages/web/src/content/docs/da/skills.mdx
new file mode 100644
index 000000000..21168ef4b
--- /dev/null
+++ b/packages/web/src/content/docs/da/skills.mdx
@@ -0,0 +1,222 @@
+---
+title: "Agentferdigheter"
+description: "Definer gjenbrukbar atferd via SKILL.md-definisjoner"
+---
+
+Agentferdigheter lar OpenCode oppdage gjenbrukbare instruksjoner fra repo- eller hjemmekatalogen din.
+Ferdigheter lastes inn på forespørsel via det opprinnelige `skill`-verktøyet – agenter ser tilgjengelige ferdigheter og kan laste inn hele innholdet når det er nødvendig.
+
+---
+
+## Plasser filer
+
+Opprett én mappe per ferdighetsnavn og legg inn en `SKILL.md` i den.
+OpenCode søker etter disse stedene:
+
+- Prosjektkonfigurasjon: `.opencode/skills//SKILL.md`
+- Global konfigurasjon: `~/.config/opencode/skills//SKILL.md`
+- Prosjekt Claude-kompatibel: `.claude/skills//SKILL.md`
+- Global Claude-kompatibel: `~/.claude/skills//SKILL.md`
+- Prosjektagent-kompatibel: `.agents/skills//SKILL.md`
+- Global agent-kompatibel: `~/.agents/skills//SKILL.md`
+
+---
+
+## Forstå oppdagelsen
+
+For prosjektlokale stier går OpenCode opp fra din nåværende arbeidskatalog til den når git-arbeidstreet.
+Den laster alle matchende `skills/*/SKILL.md` i `.opencode/` og alle matchende `.claude/skills/*/SKILL.md` eller `.agents/skills/*/SKILL.md` underveis.
+
+Globale definisjoner lastes også inn fra `~/.config/opencode/skills/*/SKILL.md`, `~/.claude/skills/*/SKILL.md` og `~/.agents/skills/*/SKILL.md`.
+
+---
+
+## Skriv frontmaterie
+
+Hver `SKILL.md` må starte med YAML frontmatter.
+Bare disse feltene gjenkjennes:
+
+- `name` (påkrevd)
+- `description` (påkrevd)
+- `license` (valgfritt)
+- `compatibility` (valgfritt)
+- `metadata` (valgfritt, streng-til-streng kart)
+
+Ukjente frontmatter-felter ignoreres.
+
+---
+
+## Bekreft navn
+
+`name` må:
+
+- Bestå av 1–64 tegn
+- Vær alfanumerisk med små bokstaver med skilletegn med enkelt bindestrek
+- Ikke begynne eller slutte med `-`
+- Ikke inneholde påfølgende `--`
+- Match katalognavnet som inneholder `SKILL.md`
+
+Ekvivalent regulært uttrykk:
+
+```text
+^[a-z0-9]+(-[a-z0-9]+)*$
+```
+
+---
+
+## Følg lengdereglene
+
+`description` må bestå av 1-1024 tegn.
+Hold det spesifikt nok til at agenten kan velge riktig.
+
+---
+
+## Bruk et eksempel
+
+Lag `.opencode/skills/git-release/SKILL.md` slik:
+
+```markdown
+---
+name: git-release
+description: Create consistent releases and changelogs
+license: MIT
+compatibility: opencode
+metadata:
+ audience: maintainers
+ workflow: github
+---
+
+## What I do
+
+- Draft release notes from merged PRs
+- Propose a version bump
+- Provide a copy-pasteable `gh release create` command
+
+## When to use me
+
+Use this when you are preparing a tagged release.
+Ask clarifying questions if the target versioning scheme is unclear.
+```
+
+---
+
+## Gjenkjenne verktøybeskrivelsen
+
+OpenCode viser tilgjengelige ferdigheter i `skill` verktøybeskrivelsen.
+Hver oppføring inneholder ferdighetsnavnet og beskrivelsen:
+
+```xml
+
+
+ git-release
+ Create consistent releases and changelogs
+
+
+```
+
+Agenten laster inn en ferdighet ved å kalle verktøyet:
+
+```
+skill({ name: "git-release" })
+```
+
+---
+
+## Konfigurer tillatelser
+
+Kontroller hvilke ferdigheter agenter har tilgang til ved å bruke mønsterbaserte tillatelser i `opencode.json`:
+
+```json
+{
+ "permission": {
+ "skill": {
+ "*": "allow",
+ "pr-review": "allow",
+ "internal-*": "deny",
+ "experimental-*": "ask"
+ }
+ }
+}
+```
+
+| Tillatelse | Atferd |
+| ---------- | ----------------------------------------- |
+| `allow` | Ferdigheter lastes umiddelbart |
+| `deny` | Ferdighet skjult for agent, tilgang avvist |
+| `ask` | Bruker bedt om godkjenning før lasting |
+
+Mønstre støtter jokertegn: `internal-*` samsvarer med `internal-docs`, `internal-tools` osv.
+
+---
+
+## Overstyring per agent
+
+Gi spesifikke agenter andre tillatelser enn de globale standardinnstillingene.
+
+**For egendefinerte agenter** (i agent frontmatter):
+
+```yaml
+---
+permission:
+ skill:
+ "documents-*": "allow"
+---
+```
+
+**For innebygde agenter** (i `opencode.json`):
+
+```json
+{
+ "agent": {
+ "plan": {
+ "permission": {
+ "skill": {
+ "internal-*": "allow"
+ }
+ }
+ }
+ }
+}
+```
+
+---
+
+## Deaktiver ferdighetsverktøyet
+
+Deaktiver ferdigheter fullstendig for agenter som ikke bør bruke dem:
+
+**For egendefinerte agenter**:
+
+```yaml
+---
+tools:
+ skill: false
+---
+```
+
+**For innebygde agenter**:
+
+```json
+{
+ "agent": {
+ "plan": {
+ "tools": {
+ "skill": false
+ }
+ }
+ }
+}
+```
+
+Når den er deaktivert, blir ``-delen utelatt helt.
+
+---
+
+## Feilsøk lasting
+
+Hvis en ferdighet ikke vises:
+
+1. Kontroller at `SKILL.md` er stavet med store bokstaver
+2. Sjekk at frontmatter inkluderer `name` og `description`
+3. Sørg for at ferdighetsnavnene er unike på alle steder
+4. Sjekk tillatelser – ferdigheter med `deny` er skjult for agenter
diff --git a/packages/web/src/content/docs/da/themes.mdx b/packages/web/src/content/docs/da/themes.mdx
new file mode 100644
index 000000000..d7f2fb377
--- /dev/null
+++ b/packages/web/src/content/docs/da/themes.mdx
@@ -0,0 +1,369 @@
+---
+title: Temaer
+description: Velg et innebygd tema eller definer ditt eget.
+---
+
+Med OpenCode kan du velge fra ett av flere innebygde temaer, bruke et tema som tilpasser seg terminaltemaet ditt, eller definere ditt eget tilpassede tema.
+
+Som standard bruker OpenCode vårt eget `opencode`-tema.
+
+---
+
+## Terminalkrav
+
+For at temaer skal vises riktig med fullfargepalett, må terminalen din støtte **truecolor** (24-biters farger). De fleste moderne terminaler støtter dette som standard, men du må kanskje aktivere det:
+
+- **Sjekk støtte**: Kjør `echo $COLORTERM` - den skal gi ut `truecolor` eller `24bit`
+- **Aktiver truecolor**: Sett miljøvariabelen `COLORTERM=truecolor` i skallprofilen din
+- **Terminalkompatibilitet**: Sørg for at terminalemulatoren din støtter 24-bits farger (de fleste moderne terminaler som iTerm2, Alacritty, Kitty, Windows Terminal og nyere versjoner av GNOME Terminal gjør det)
+
+Uten truecolor-støtte kan temaer vises med redusert fargenøyaktighet eller falle tilbake til nærmeste 256-fargers tilnærming.
+
+---
+
+## Innebygde temaer
+
+OpenCode kommer med flere innebygde temaer.
+
+| Navn | Beskrivelse |
+| ---------------------- | ---------------------------------------------------------------------------- |
+| `system` | Tilpasser seg terminalens bakgrunnsfarge |
+| `tokyonight` | Basert på [Tokyonight](https://github.com/folke/tokyonight.nvim)-temaet |
+| `everforest` | Basert på [Everforest](https://github.com/sainnhe/everforest)-temaet |
+| `ayu` | Basert på [Ayu](https://github.com/ayu-theme) mørke tema |
+| `catppuccin` | Basert på [Catppuccin](https://github.com/catppuccin)-temaet |
+| `catppuccin-macchiato` | Basert på [Catppuccin](https://github.com/catppuccin)-temaet |
+| `gruvbox` | Basert på [Gruvbox](https://github.com/morhetz/gruvbox)-temaet |
+| `kanagawa` | Basert på [Kanagawa](https://github.com/rebelot/kanagawa.nvim)-temaet |
+| `nord` | Basert på [Nord](https://github.com/nordtheme/nord)-temaet |
+| `matrix` | Hacker-stil grønt på svart tema |
+| `one-dark` | Basert på [Atom One](https://github.com/Th3Whit3Wolf/one-nvim) Mørkt tema |
+
+Og mer, vi legger stadig til nye temaer.
+
+---
+
+## Systemtema
+
+`system`-temaet er designet for å automatisk tilpasse seg terminalens fargevalg. I motsetning til tradisjonelle temaer som bruker faste farger, er _system_-temaet:
+
+- **Genererer gråskala**: Oppretter en tilpasset gråskala basert på terminalens bakgrunnsfarge, og sikrer optimal kontrast.
+- **Bruker ANSI farger**: Bruker standard ANSI farger (0-15) for syntaksutheving og UI elementer, som respekterer terminalens fargepalett.
+- **Bevarer terminalens standardinnstillinger**: Bruker `none` for tekst- og bakgrunnsfarger for å opprettholde terminalens opprinnelige utseende.
+
+Systemtemaet er for brukere som:
+
+- Vil at OpenCode skal matche terminalens utseende
+- Bruk tilpassede terminalfargeskjemaer
+- Foretrekker et konsistent utseende på tvers av alle terminalapplikasjoner
+
+---
+
+## Bruke et tema
+
+Du kan velge et tema ved å hente frem temavalg med kommandoen `/theme`. Eller du kan spesifisere det i [config](/docs/config).
+
+```json title="opencode.json" {3}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "theme": "tokyonight"
+}
+```
+
+---
+
+## Egendefinerte temaer
+
+OpenCode støtter et fleksibelt JSON-basert temasystem som lar brukere enkelt lage og tilpasse temaer.
+
+---
+
+### Hierarki
+
+Temaer lastes inn fra flere kataloger i følgende rekkefølge der senere kataloger overstyrer tidligere:
+
+1. **Innebygde temaer** - Disse er innebygd i binæren
+2. **Brukerkonfigurasjonskatalog** - Definert i `~/.config/opencode/themes/*.json` eller `$XDG_CONFIG_HOME/opencode/themes/*.json`
+3. **Prosjektrotkatalog** - Definert i `/.opencode/themes/*.json`
+4. **Gjeldende arbeidskatalog** - Definert i `./.opencode/themes/*.json`
+
+Hvis flere kataloger inneholder et tema med samme navn, vil temaet fra katalogen med høyere prioritet bli brukt.
+
+---
+
+### Opprette et tema
+
+For å lage et tilpasset tema, lag en JSON-fil i en av temakatalogene.
+
+For brukeromfattende temaer:
+
+```bash no-frame
+mkdir -p ~/.config/opencode/themes
+vim ~/.config/opencode/themes/my-theme.json
+```
+
+Og for prosjektspesifikke temaer.
+
+```bash no-frame
+mkdir -p .opencode/themes
+vim .opencode/themes/my-theme.json
+```
+
+---
+
+### JSON format
+
+Temaer bruker et fleksibelt JSON-format med støtte for:
+
+- **Sekskantfarger**: `"#ffffff"`
+- **ANSI farger**: `3` (0-255)
+- **Fargereferanser**: `"primary"` eller egendefinerte definisjoner
+- **Mørke/lyse varianter**: `{"dark": "#000", "light": "#fff"}`
+- **Ingen farge**: `"none"` - Bruker terminalens standardfarge eller transparent
+
+---
+
+### Fargedefinisjoner
+
+`defs`-delen er valgfri, og den lar deg definere gjenbrukbare farger som kan refereres til i temaet.
+
+---
+
+### Terminalstandarder
+
+Spesialverdien `"none"` kan brukes for hvilken som helst farge for å arve terminalens standardfarge. Dette er spesielt nyttig for å lage temaer som passer sømløst med terminalens fargeskjema:
+
+- `"text": "none"` - Bruker terminalens standard forgrunnsfarge
+- `"background": "none"` - Bruker terminalens standard bakgrunnsfarge
+
+---
+
+### Eksempel
+
+Her er et eksempel på et tilpasset tema:
+
+```json title="my-theme.json"
+{
+ "$schema": "https://opencode.ai/theme.json",
+ "defs": {
+ "nord0": "#2E3440",
+ "nord1": "#3B4252",
+ "nord2": "#434C5E",
+ "nord3": "#4C566A",
+ "nord4": "#D8DEE9",
+ "nord5": "#E5E9F0",
+ "nord6": "#ECEFF4",
+ "nord7": "#8FBCBB",
+ "nord8": "#88C0D0",
+ "nord9": "#81A1C1",
+ "nord10": "#5E81AC",
+ "nord11": "#BF616A",
+ "nord12": "#D08770",
+ "nord13": "#EBCB8B",
+ "nord14": "#A3BE8C",
+ "nord15": "#B48EAD"
+ },
+ "theme": {
+ "primary": {
+ "dark": "nord8",
+ "light": "nord10"
+ },
+ "secondary": {
+ "dark": "nord9",
+ "light": "nord9"
+ },
+ "accent": {
+ "dark": "nord7",
+ "light": "nord7"
+ },
+ "error": {
+ "dark": "nord11",
+ "light": "nord11"
+ },
+ "warning": {
+ "dark": "nord12",
+ "light": "nord12"
+ },
+ "success": {
+ "dark": "nord14",
+ "light": "nord14"
+ },
+ "info": {
+ "dark": "nord8",
+ "light": "nord10"
+ },
+ "text": {
+ "dark": "nord4",
+ "light": "nord0"
+ },
+ "textMuted": {
+ "dark": "nord3",
+ "light": "nord1"
+ },
+ "background": {
+ "dark": "nord0",
+ "light": "nord6"
+ },
+ "backgroundPanel": {
+ "dark": "nord1",
+ "light": "nord5"
+ },
+ "backgroundElement": {
+ "dark": "nord1",
+ "light": "nord4"
+ },
+ "border": {
+ "dark": "nord2",
+ "light": "nord3"
+ },
+ "borderActive": {
+ "dark": "nord3",
+ "light": "nord2"
+ },
+ "borderSubtle": {
+ "dark": "nord2",
+ "light": "nord3"
+ },
+ "diffAdded": {
+ "dark": "nord14",
+ "light": "nord14"
+ },
+ "diffRemoved": {
+ "dark": "nord11",
+ "light": "nord11"
+ },
+ "diffContext": {
+ "dark": "nord3",
+ "light": "nord3"
+ },
+ "diffHunkHeader": {
+ "dark": "nord3",
+ "light": "nord3"
+ },
+ "diffHighlightAdded": {
+ "dark": "nord14",
+ "light": "nord14"
+ },
+ "diffHighlightRemoved": {
+ "dark": "nord11",
+ "light": "nord11"
+ },
+ "diffAddedBg": {
+ "dark": "#3B4252",
+ "light": "#E5E9F0"
+ },
+ "diffRemovedBg": {
+ "dark": "#3B4252",
+ "light": "#E5E9F0"
+ },
+ "diffContextBg": {
+ "dark": "nord1",
+ "light": "nord5"
+ },
+ "diffLineNumber": {
+ "dark": "nord2",
+ "light": "nord4"
+ },
+ "diffAddedLineNumberBg": {
+ "dark": "#3B4252",
+ "light": "#E5E9F0"
+ },
+ "diffRemovedLineNumberBg": {
+ "dark": "#3B4252",
+ "light": "#E5E9F0"
+ },
+ "markdownText": {
+ "dark": "nord4",
+ "light": "nord0"
+ },
+ "markdownHeading": {
+ "dark": "nord8",
+ "light": "nord10"
+ },
+ "markdownLink": {
+ "dark": "nord9",
+ "light": "nord9"
+ },
+ "markdownLinkText": {
+ "dark": "nord7",
+ "light": "nord7"
+ },
+ "markdownCode": {
+ "dark": "nord14",
+ "light": "nord14"
+ },
+ "markdownBlockQuote": {
+ "dark": "nord3",
+ "light": "nord3"
+ },
+ "markdownEmph": {
+ "dark": "nord12",
+ "light": "nord12"
+ },
+ "markdownStrong": {
+ "dark": "nord13",
+ "light": "nord13"
+ },
+ "markdownHorizontalRule": {
+ "dark": "nord3",
+ "light": "nord3"
+ },
+ "markdownListItem": {
+ "dark": "nord8",
+ "light": "nord10"
+ },
+ "markdownListEnumeration": {
+ "dark": "nord7",
+ "light": "nord7"
+ },
+ "markdownImage": {
+ "dark": "nord9",
+ "light": "nord9"
+ },
+ "markdownImageText": {
+ "dark": "nord7",
+ "light": "nord7"
+ },
+ "markdownCodeBlock": {
+ "dark": "nord4",
+ "light": "nord0"
+ },
+ "syntaxComment": {
+ "dark": "nord3",
+ "light": "nord3"
+ },
+ "syntaxKeyword": {
+ "dark": "nord9",
+ "light": "nord9"
+ },
+ "syntaxFunction": {
+ "dark": "nord8",
+ "light": "nord8"
+ },
+ "syntaxVariable": {
+ "dark": "nord7",
+ "light": "nord7"
+ },
+ "syntaxString": {
+ "dark": "nord14",
+ "light": "nord14"
+ },
+ "syntaxNumber": {
+ "dark": "nord15",
+ "light": "nord15"
+ },
+ "syntaxType": {
+ "dark": "nord7",
+ "light": "nord7"
+ },
+ "syntaxOperator": {
+ "dark": "nord9",
+ "light": "nord9"
+ },
+ "syntaxPunctuation": {
+ "dark": "nord4",
+ "light": "nord0"
+ }
+ }
+}
+```
diff --git a/packages/web/src/content/docs/da/tools.mdx b/packages/web/src/content/docs/da/tools.mdx
new file mode 100644
index 000000000..0b4da5ca3
--- /dev/null
+++ b/packages/web/src/content/docs/da/tools.mdx
@@ -0,0 +1,379 @@
+---
+title: Verktøy
+description: Administrer verktøyene en LLM kan bruke.
+---
+
+Verktøy lar LLM utføre handlinger i kodebasen din. OpenCode kommer med et sett med innebygde verktøy, men du kan utvide det med [egendefinerte verktøy](/docs/custom-tools) eller [MCP servere](/docs/mcp-servers).
+
+Som standard er alle verktøy **aktivert** og trenger ikke tillatelse for å kjøre. Du kan kontrollere verktøyets oppførsel gjennom [tillatelser](/docs/permissions).
+
+---
+
+## Konfigurer
+
+Bruk feltet `permission` for å kontrollere verktøyets oppførsel. Du kan tillate, avslå eller kreve godkjenning for hvert verktøy.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "edit": "deny",
+ "bash": "ask",
+ "webfetch": "allow"
+ }
+}
+```
+
+Du kan også bruke jokertegn for å kontrollere flere verktøy samtidig. For eksempel, for å kreve godkjenning for alle verktøy fra en MCP-server:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "mymcp_*": "ask"
+ }
+}
+```
+
+[Finn ut mer](/docs/permissions) om konfigurering av tillatelser.
+
+---
+
+## Innebygd
+
+Her er alle de innebygde verktøyene som er tilgjengelige i OpenCode.
+
+---
+
+### bash
+
+Utfør skallkommandoer i prosjektmiljøet ditt.
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "bash": "allow"
+ }
+}
+```
+
+Dette verktøyet lar LLM kjøre terminalkommandoer som `npm install`, `git status` eller en hvilken som helst annen shell-kommando.
+
+---
+
+### rediger
+
+Endre eksisterende filer ved å bruke eksakte strengerstatninger.
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "edit": "allow"
+ }
+}
+```
+
+Dette verktøyet utfører nøyaktige redigeringer av filer ved å erstatte eksakte teksttreff. Det er den primære måten LLM endrer kode på.
+
+---
+
+### skriv
+
+Opprett nye filer eller overskriv eksisterende.
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "edit": "allow"
+ }
+}
+```
+
+Bruk denne for å la LLM lage nye filer. Den vil overskrive eksisterende filer hvis de allerede eksisterer.
+
+:::note
+`write`-verktøyet kontrolleres av tillatelsen `edit`, som dekker alle filendringer (`edit`, `write`, `patch`, `multiedit`).
+:::
+
+---
+
+### lest
+
+Les filinnholdet fra kodebasen din.
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "read": "allow"
+ }
+}
+```
+
+Dette verktøyet leser filer og returnerer innholdet. Den støtter lesing av spesifikke linjeområder for store filer.
+
+---
+
+### grep
+
+Søk i filinnhold ved hjelp av regulære uttrykk.
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "grep": "allow"
+ }
+}
+```
+
+Rask innholdssøk på tvers av kodebasen din. Støtter full regex-syntaks og filmønsterfiltrering.
+
+---
+
+### glob
+
+Finn filer etter mønstermatching.
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "glob": "allow"
+ }
+}
+```
+
+Søk etter filer ved å bruke glob-mønstre som `**/*.js` eller `src/**/*.ts`. Returnerer samsvarende filbaner sortert etter endringstid.
+
+---
+
+### liste
+
+List filer og kataloger i en gitt bane.
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "list": "allow"
+ }
+}
+```
+
+Dette verktøyet viser kataloginnhold. Den aksepterer glob-mønstre for å filtrere resultater.
+
+---
+
+### lsp (eksperimentell)
+
+Samhandle med dine konfigurerte LSP-servere for å få kodeintelligensfunksjoner som definisjoner, referanser, sveveinformasjon og anropshierarki.
+
+:::note
+Dette verktøyet er bare tilgjengelig når `OPENCODE_EXPERIMENTAL_LSP_TOOL=true` (eller `OPENCODE_EXPERIMENTAL=true`).
+:::
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "lsp": "allow"
+ }
+}
+```
+
+Støttede operasjoner inkluderer `goToDefinition`, `findReferences`, `hover`, `documentSymbol`, `workspaceSymbol`, `goToImplementation`, `prepareCallHierarchy`, `incomingCalls` og `outgoingCalls`.
+
+For å konfigurere hvilke LSP-servere som er tilgjengelige for prosjektet ditt, se [LSP-servere](/docs/lsp).
+
+---
+
+### patch
+
+Bruk patcher på filer.
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "edit": "allow"
+ }
+}
+```
+
+Dette verktøyet bruker oppdateringsfiler til kodebasen din. Nyttig for å påføre diff og lapper fra forskjellige kilder.
+
+:::note
+`patch`-verktøyet kontrolleres av tillatelsen `edit`, som dekker alle filendringer (`edit`, `write`, `patch`, `multiedit`).
+:::
+
+---
+
+### ferdighet
+
+Last inn en [ferdighet](/docs/skills) (en `SKILL.md` fil) og returner innholdet i samtalen.
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "skill": "allow"
+ }
+}
+```
+
+---
+
+### for å skrive
+
+Administrer gjøremålslister under kodingsøkter.
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "todowrite": "allow"
+ }
+}
+```
+
+Oppretter og oppdaterer oppgavelister for å spore fremdrift under komplekse operasjoner. LLM bruker dette til å organisere flertrinnsoppgaver.
+
+:::note
+Dette verktøyet er deaktivert for subagenter som standard, men du kan aktivere det manuelt. [Finn ut mer](/docs/agents/#permissions)
+:::
+
+---
+
+### todoread
+
+Les eksisterende gjøremålslister.
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "todoread": "allow"
+ }
+}
+```
+
+Leser gjeldende gjøremålslistestatus. Brukes av LLM for å spore hvilke oppgaver som venter eller er fullført.
+
+:::note
+Dette verktøyet er deaktivert for subagenter som standard, men du kan aktivere det manuelt. [Finn ut mer](/docs/agents/#permissions)
+:::
+
+---
+
+### webhenting
+
+Hent nettinnhold.
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "webfetch": "allow"
+ }
+}
+```
+
+Lar LLM hente og lese nettsider. Nyttig for å slå opp dokumentasjon eller forske på nettressurser.
+
+---
+
+### nettsøk
+
+Søk på nettet for informasjon.
+
+:::note
+Dette verktøyet er bare tilgjengelig når du bruker OpenCode-leverandøren eller når miljøvariabelen `OPENCODE_ENABLE_EXA` er satt til en sannverdi (f.eks. `true` eller `1`).
+
+Slik aktiverer du når du starter OpenCode:
+
+```bash
+OPENCODE_ENABLE_EXA=1 opencode
+```
+
+:::
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "websearch": "allow"
+ }
+}
+```
+
+Utfører nettsøk med Exa AI for å finne relevant informasjon på nettet. Nyttig for å undersøke emner, finne aktuelle hendelser eller samle informasjon utover treningsdataavbruddet.
+
+Ingen API-nøkkel kreves — verktøyet kobles direkte til Exa AIs vertsbaserte MCP-tjeneste uten autentisering.
+
+:::tupp
+Bruk `websearch` når du trenger å finne informasjon (oppdagelse), og `webfetch` når du trenger å hente innhold fra en bestemt URL (henting).
+:::
+
+---
+
+### spørsmål
+
+Still brukeren spørsmål under utførelse.
+
+```json title="opencode.json" {4}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "question": "allow"
+ }
+}
+```
+
+Dette verktøyet lar LLM stille spørsmål til brukeren under en oppgave. Det er nyttig for:
+
+- Samle brukerpreferanser eller krav
+- Avklarende tvetydige instruksjoner
+- Få beslutninger om gjennomføringsvalg
+- Tilbyr valg om hvilken retning du skal ta
+
+Hvert spørsmål inkluderer en overskrift, spørsmålsteksten og en liste over alternativer. Brukere kan velge fra de angitte alternativene eller skrive inn et tilpasset svar. Når det er flere spørsmål, kan brukerne navigere mellom dem før de sender inn alle svarene.
+
+---
+
+## Egendefinerte verktøy
+
+Egendefinerte verktøy lar deg definere dine egne funksjoner som LLM kan kalle. Disse er definert i konfigurasjonsfilen din og kan kjøre vilkårlig kode.
+
+[Finn ut mer](/docs/custom-tools) om å lage tilpassede verktøy.
+
+---
+
+## MCP servere
+
+MCP (Model Context Protocol) servere lar deg integrere eksterne verktøy og tjenester. Dette inkluderer databasetilgang, API-integrasjoner og tredjepartstjenester.
+
+[Les mer](/docs/mcp-servers) om konfigurering av MCP-servere.
+
+---
+
+## Internaler
+
+Internt bruker verktøy som `grep`, `glob` og `list` [ripgrep](https://github.com/BurntSushi/ripgrep) under panseret. Som standard respekterer ripgrep `.gitignore`-mønstre, noe som betyr at filer og kataloger som er oppført i `.gitignore` vil bli ekskludert fra søk og oppføringer.
+
+---
+
+### Ignorer mønstre
+
+For å inkludere filer som normalt vil bli ignorert, lag en `.ignore`-fil i prosjektroten. Denne filen kan eksplisitt tillate visse stier.
+
+```text title=".ignore"
+!node_modules/
+!dist/
+!build/
+```
+
+For eksempel lar denne `.ignore` filen ripgrep søke i `node_modules/`, `dist/` og `build/` kataloger selv om de er oppført i `.gitignore`.
diff --git a/packages/web/src/content/docs/da/troubleshooting.mdx b/packages/web/src/content/docs/da/troubleshooting.mdx
new file mode 100644
index 000000000..37ee70c3e
--- /dev/null
+++ b/packages/web/src/content/docs/da/troubleshooting.mdx
@@ -0,0 +1,300 @@
+---
+title: Feilsøking
+description: Vanlige problemer og hvordan de kan løses.
+---
+
+For å feilsøke problemer med OpenCode, start med å sjekke loggene og lokale data den lagrer på disken.
+
+---
+
+## Logger
+
+Loggfiler skrives til:
+
+- **macOS/Linux**: `~/.local/share/opencode/log/`
+- **Windows**: Trykk `WIN+R` og lim inn `%USERPROFILE%\.local\share\opencode\log`
+
+Loggfiler navngis med tidsstempler (f.eks. `2025-01-09T123456.log`) og de siste 10 loggfilene beholdes.
+
+Du kan angi loggnivået med kommandolinjealternativet `--log-level` for å få mer detaljert feilsøkingsinformasjon. For eksempel `opencode --log-level DEBUG`.
+
+---
+
+## Lagring
+
+opencode lagrer øktdata og andre applikasjonsdata på disken på:
+
+- **macOS/Linux**: `~/.local/share/opencode/`
+- **Windows**: Trykk `WIN+R` og lim inn `%USERPROFILE%\.local\share\opencode`
+
+Denne katalogen inneholder:
+
+- `auth.json` - Autentiseringsdata som API-nøkler, OAuth-tokens
+- `log/` - Applikasjonslogger
+- `project/` - Prosjektspesifikke data som økt- og meldingsdata
+ - Hvis prosjektet er innenfor en Git-repo, lagres det i `.//storage/`
+ - Hvis det ikke er en Git-repo, lagres det i `./global/storage/`
+
+---
+
+## Desktop-app
+
+OpenCode Desktop kjører en lokal OpenCode-server (`opencode-cli` sidevognen) i bakgrunnen. De fleste problemene er forårsaket av en plugin som fungerer dårlig, en ødelagt cache eller en dårlig serverinnstilling.
+
+### Raske sjekker
+
+- Avslutt og start appen på nytt.
+- Hvis appen viser en feilskjerm, klikker du på **Start på nytt** og kopierer feildetaljene.
+- Bare macOS: `OpenCode`-meny -> **Last nettvisning på nytt** (hjelper hvis UI er tom/frosset).
+
+---
+
+### Deaktiver plugins
+
+Hvis skrivebordsappen krasjer ved oppstart, henger eller oppfører seg merkelig, start med å deaktivere plugins.
+
+#### Sjekk den globale konfigurasjonen
+
+Åpne den globale konfigurasjonsfilen og se etter en `plugin`-nøkkel.
+
+- **macOS/Linux**: `~/.config/opencode/opencode.jsonc` (eller `~/.config/opencode/opencode.json`)
+- **macOS/Linux** (eldre installasjoner): `~/.local/share/opencode/opencode.jsonc`
+- **Windows**: Trykk `WIN+R` og lim inn `%USERPROFILE%\.config\opencode\opencode.jsonc`
+
+Hvis du har konfigurert plugins, deaktiver dem midlertidig ved å fjerne nøkkelen eller sette den til en tom matrise:
+
+```jsonc
+{
+ "$schema": "https://opencode.ai/config.json",
+ "plugin": [],
+}
+```
+
+#### Sjekk plugin-kataloger
+
+OpenCode kan også laste lokale plugins fra disken. Flytt disse midlertidig ut av veien (eller gi nytt navn til mappen) og start skrivebordsappen på nytt:
+
+- **Globale plugins**
+ - **macOS/Linux**: `~/.config/opencode/plugins/`
+ - **Windows**: Trykk `WIN+R` og lim inn `%USERPROFILE%\.config\opencode\plugins`
+- **Prosjektplugins** (bare hvis du bruker konfigurasjon per prosjekt)
+ - `/.opencode/plugins/`
+
+Hvis appen begynner å fungere igjen, aktiverer du plugins én om gangen for å finne ut hvilken som forårsaker problemet.
+
+---
+
+### Tøm hurtigbufferen
+
+Hvis deaktivering av plugins ikke hjelper (eller en plugin-installasjon sitter fast), tøm hurtigbufferen slik at OpenCode kan gjenoppbygge den.
+
+1. Avslutt OpenCode Desktop helt.
+2. Slett hurtigbufferkatalogen:
+
+- **macOS**: Finder -> `Cmd+Shift+G` -> lim inn `~/.cache/opencode`
+- **Linux**: slett `~/.cache/opencode` (eller kjør `rm -rf ~/.cache/opencode`)
+- **Windows**: Trykk `WIN+R` og lim inn `%USERPROFILE%\.cache\opencode`
+
+3. Start OpenCode Desktop på nytt.
+
+---
+
+### Løs problemer med servertilkobling
+
+OpenCode Desktop kan enten starte sin egen lokale server (standard) eller koble til en server URL du har konfigurert.
+
+Hvis du ser en **"Tilkobling mislyktes"**-dialogboks (eller appen kommer aldri forbi splash-skjermen), se etter en tilpasset server URL.
+
+#### Slett standardserveren for skrivebordet URL
+
+Fra startskjermen klikker du på servernavnet (med statusprikken) for å åpne servervelgeren. I delen **Standardserver** klikker du på **Slett**.
+
+#### Fjern `server.port` / `server.hostname` fra konfigurasjonen din
+
+Hvis `opencode.json(c)` inneholder en `server`-del, fjern den midlertidig og start skrivebordsappen på nytt.
+
+#### Sjekk miljøvariabler
+
+Hvis du har `OPENCODE_PORT` satt i miljøet ditt, vil skrivebordsappen prøve å bruke den porten for den lokale serveren.
+
+- Deaktiver `OPENCODE_PORT` (eller velg en ledig port) og start på nytt.
+
+---
+
+### Linux: Wayland / X11 problemer
+
+På Linux kan noen Wayland-oppsett forårsake tomme vinduer eller kompositorfeil.
+
+- Hvis du er på Wayland og appen er tom/krasj, prøv å starte med `OC_ALLOW_WAYLAND=1`.
+- Hvis det gjør ting verre, fjern det og prøv å starte under en X11-økt i stedet.
+
+---
+
+### Windows: WebView2 kjøretid
+
+På Windows krever OpenCode Desktop Microsoft Edge **WebView2 Runtime**. Hvis appen åpnes i et tomt vindu eller ikke starter, installer/oppdater WebView2 og prøv igjen.
+
+---
+
+### Windows: Generelle ytelsesproblemer
+
+Hvis du opplever treg ytelse, problemer med filtilgang eller terminalproblemer på Windows, kan du prøve å bruke [WSL (Windows Subsystem for Linux)](/docs/windows-wsl). WSL gir et Linux-miljø som fungerer mer sømløst med funksjonene til OpenCode.
+
+---
+
+### Varsler vises ikke
+
+OpenCode Desktop viser bare systemvarsler når:
+
+- varsler er aktivert for OpenCode i OS-innstillingene dine, og
+- appvinduet er ikke fokusert.
+
+---
+
+### Tilbakestill skrivebordsapplagring (siste utvei)
+
+Hvis appen ikke starter og du ikke kan slette innstillingene fra UI, tilbakestill skrivebordsappens lagrede tilstand.
+
+1. Avslutt OpenCode Desktop.
+2. Finn og slett disse filene (de finnes i OpenCode Desktop-appens datakatalog):
+
+- `opencode.settings.dat` (stasjonær standardserver URL)
+- `opencode.global.dat` og `opencode.workspace.*.dat` (UI tilstand som nylige servere/prosjekter)
+
+Slik finner du katalogen raskt:
+
+- **macOS**: Finder -> `Cmd+Shift+G` -> `~/Library/Application Support` (søk deretter etter filnavnene ovenfor)
+- **Linux**: søk under `~/.local/share` etter filnavnene ovenfor
+- **Windows**: Trykk `WIN+R` -> `%APPDATA%` (søk deretter etter filnavnene ovenfor)
+
+---
+
+## Får hjelp
+
+Hvis du opplever problemer med OpenCode:
+
+1. **Rapporter problemer på GitHub**
+
+ Den beste måten å rapportere feil eller be om funksjoner på er gjennom vårt GitHub-lager:
+
+ [**github.com/anomalyco/opencode/issues**](https://github.com/anomalyco/opencode/issues)
+
+ Før du oppretter et nytt problem, søk i eksisterende problemer for å se om problemet ditt allerede er rapportert.
+
+2. **Bli med i vår Discord**
+
+ For sanntidshjelp og fellesskapsdiskusjon, bli med i vår Discord-server:
+
+ [**opencode.ai/discord**](https://opencode.ai/discord)
+
+---
+
+## Vanlige problemer
+
+Her er noen vanlige problemer og hvordan du kan løse dem.
+
+---
+
+### OpenCode vil ikke starte
+
+1. Sjekk loggene for feilmeldinger
+2. Prøv å kjøre med `--print-logs` for å se utdata i terminalen
+3. Sørg for at du har den nyeste versjonen med `opencode upgrade`
+
+---
+
+### Autentiseringsproblemer
+
+1. Prøv å autentisere på nytt med kommandoen `/connect` i TUI
+2. Sjekk at API-nøklene dine er gyldige
+3. Sørg for at nettverket ditt tillater tilkoblinger til leverandørens API
+
+---
+
+### Modellen er ikke tilgjengelig
+
+1. Sjekk at du har autentisert deg med leverandøren
+2. Kontroller at modellnavnet i konfigurasjonen er riktig
+3. Noen modeller kan kreve spesifikk tilgang eller abonnement
+
+Hvis du støter på `ProviderModelNotFoundError` er du mest sannsynlig feil
+refererer til en modell et sted.
+Modeller skal refereres slik: `/`
+
+Eksempler:
+
+- `openai/gpt-4.1`
+- `openrouter/google/gemini-2.5-flash`
+- `opencode/kimi-k2`
+
+For å finne ut hvilke modeller du har tilgang til, kjør `opencode models`
+
+---
+
+### ProviderInitError
+
+Hvis du støter på en ProviderInitError, har du sannsynligvis en ugyldig eller ødelagt konfigurasjon.
+
+For å løse dette:
+
+1. Kontroller først at leverandøren din er riktig konfigurert ved å følge [leverandørveiledningen](/docs/providers)
+2. Hvis problemet vedvarer, prøv å tømme den lagrede konfigurasjonen:
+
+ ```bash
+ rm -rf ~/.local/share/opencode
+ ```
+
+ På Windows, trykk `WIN+R` og slett: `%USERPROFILE%\.local\share\opencode`
+
+3. Autentiser på nytt med leverandøren din ved å bruke kommandoen `/connect` i TUI.
+
+---
+
+### AI_APICallError og leverandørpakkeproblemer
+
+Hvis du støter på API anropsfeil, kan dette skyldes utdaterte leverandørpakker. opencode installerer dynamisk leverandørpakker (OpenAI, Anthropic, Google, etc.) etter behov og cacher dem lokalt.
+
+For å løse problemer med leverandørpakke:
+
+1. Tøm leverandørens pakkebuffer:
+
+ ```bash
+ rm -rf ~/.cache/opencode
+ ```
+
+ På Windows, trykk `WIN+R` og slett: `%USERPROFILE%\.cache\opencode`
+
+2. Start opencode på nytt for å installere de nyeste leverandørpakkene på nytt
+
+Dette vil tvinge opencode til å laste ned de nyeste versjonene av leverandørpakkene, som ofte løser kompatibilitetsproblemer med modellparametere og API endringer.
+
+---
+
+### Kopier/lim inn fungerer ikke på Linux
+
+Linux-brukere må ha ett av følgende utklippstavleverktøy installert for at kopier/lim inn-funksjonalitet skal fungere:
+
+**For X11-systemer:**
+
+```bash
+apt install -y xclip
+# or
+apt install -y xsel
+```
+
+**For Wayland-systemer:**
+
+```bash
+apt install -y wl-clipboard
+```
+
+**For hodeløse miljøer:**
+
+```bash
+apt install -y xvfb
+# and run:
+Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
+export DISPLAY=:99.0
+```
+
+opencode vil oppdage om du bruker Wayland og foretrekker `wl-clipboard`, ellers vil den prøve å finne utklippstavleverktøy i rekkefølgen: `xclip` og `xsel`.
diff --git a/packages/web/src/content/docs/da/tui.mdx b/packages/web/src/content/docs/da/tui.mdx
new file mode 100644
index 000000000..58b9b547e
--- /dev/null
+++ b/packages/web/src/content/docs/da/tui.mdx
@@ -0,0 +1,390 @@
+---
+title: TUI
+description: Bruke OpenCode-terminalbrukergrensesnittet.
+---
+
+import { Tabs, TabItem } from "@astrojs/starlight/components"
+
+OpenCode gir et interaktivt terminalgrensesnitt eller TUI for å jobbe med prosjektene dine med en LLM.
+
+Å kjøre OpenCode starter TUI for gjeldende katalog.
+
+```bash
+opencode
+```
+
+Eller du kan starte den for en bestemt arbeidskatalog.
+
+```bash
+opencode /path/to/project
+```
+
+Når du er i TUI, kan du spørre den med en melding.
+
+```text
+Give me a quick summary of the codebase.
+```
+
+---
+
+## Filreferanser
+
+Du kan referere til filer i meldingene dine ved å bruke `@`. Dette gjør et uklar filsøk i gjeldende arbeidskatalog.
+
+:::tupp
+Du kan også bruke `@` til å referere til filer i meldingene dine.
+:::
+
+```text "@packages/functions/src/api/index.ts"
+How is auth handled in @packages/functions/src/api/index.ts?
+```
+
+Innholdet i filen legges automatisk til samtalen.
+
+---
+
+## Bash-kommandoer
+
+Start en melding med `!` for å kjøre en shell-kommando.
+
+```bash frame="none"
+!ls -la
+```
+
+Utdataene fra kommandoen legges til samtalen som et verktøyresultat.
+
+---
+
+## Kommandoer
+
+Når du bruker OpenCode TUI, kan du skrive `/` etterfulgt av et kommandonavn for raskt å utføre handlinger. For eksempel:
+
+```bash frame="none"
+/help
+```
+
+De fleste kommandoer har også tastebinding som bruker `ctrl+x` som ledernøkkel, der `ctrl+x` er standard ledernøkkel. [Finn ut mer](/docs/keybinds).
+
+Her er alle tilgjengelige skråstrekkommandoer:
+
+---
+
+### koble til
+
+Legg til en leverandør til OpenCode. Lar deg velge fra tilgjengelige leverandører og legge til deres API-nøkler.
+
+```bash frame="none"
+/connect
+```
+
+---
+
+### kompakt
+
+Komprimer gjeldende økt. _Alias_: `/summarize`
+
+```bash frame="none"
+/compact
+```
+
+**Nøkkelbinding:** `ctrl+x c`
+
+---
+
+### detaljer
+
+Veksle verktøyutførelsesdetaljer.
+
+```bash frame="none"
+/details
+```
+
+**Nøkkelbinding:** `ctrl+x d`
+
+---
+
+### redaktør
+
+Åpne eksternt redigeringsprogram for å skrive meldinger. Bruker redigeringssettet i miljøvariabelen `EDITOR`. [Finn ut mer](#editor-setup).
+
+```bash frame="none"
+/editor
+```
+
+**Nøkkelbinding:** `ctrl+x e`
+
+---
+
+### avslutt
+
+Avslutt OpenCode. _Aliaser_: `/quit`, `/q`
+
+```bash frame="none"
+/exit
+```
+
+**Nøkkelbinding:** `ctrl+x q`
+
+---
+
+### eksport
+
+Eksporter gjeldende samtale til Markdown og åpne i standardredigeringsprogrammet. Bruker redigeringssettet i miljøvariabelen `EDITOR`. [Finn ut mer](#editor-setup).
+
+```bash frame="none"
+/export
+```
+
+**Nøkkelbinding:** `ctrl+x x`
+
+---
+
+### hjelp
+
+Vis hjelpedialogen.
+
+```bash frame="none"
+/help
+```
+
+**Nøkkelbinding:** `ctrl+x h`
+
+---
+
+### init
+
+Opprett eller oppdater `AGENTS.md`-fil. [Finn ut mer](/docs/rules).
+
+```bash frame="none"
+/init
+```
+
+**Nøkkelbinding:** `ctrl+x i`
+
+---
+
+### modeller
+
+Liste over tilgjengelige modeller.
+
+```bash frame="none"
+/models
+```
+
+**Nøkkelbinding:** `ctrl+x m`
+
+---
+
+### ny
+
+Start en ny økt. _Alias_: `/clear`
+
+```bash frame="none"
+/new
+```
+
+**Nøkkelbinding:** `ctrl+x n`
+
+---
+
+### gjør om
+
+Gjenta en tidligere angret melding. Kun tilgjengelig etter bruk av `/undo`.
+
+:::tupp
+Eventuelle filendringer vil også bli gjenopprettet.
+:::
+
+Internt bruker dette Git til å administrere filendringene. Så ditt prosjekt **må
+være et Git-depot**.
+
+```bash frame="none"
+/redo
+```
+
+**Nøkkelbinding:** `ctrl+x r`
+
+---
+
+### økter
+
+List opp og bytt mellom økter. _Aliaser_: `/resume`, `/continue`
+
+```bash frame="none"
+/sessions
+```
+
+**Nøkkelbinding:** `ctrl+x l`
+
+---
+
+### del
+
+Del gjeldende økt. [Finn ut mer](/docs/share).
+
+```bash frame="none"
+/share
+```
+
+**Nøkkelbinding:** `ctrl+x s`
+
+---
+
+### temaer
+
+Liste over tilgjengelige temaer.
+
+```bash frame="none"
+/theme
+```
+
+**Nøkkelbinding:** `ctrl+x t`
+
+---
+
+### tenker
+
+Veksle mellom synligheten av tenke-/resonneringsblokker i samtalen. Når den er aktivert, kan du se modellens resonneringsprosess for modeller som støtter utvidet tenkning.
+
+:::note
+Denne kommandoen kontrollerer bare om tenkeblokker **vises** - den aktiverer eller deaktiverer ikke modellens resonneringsmuligheter. For å veksle mellom faktiske resonneringsmuligheter, bruk `ctrl+t` for å bla gjennom modellvarianter.
+:::
+
+```bash frame="none"
+/thinking
+```
+
+---
+
+### angre
+
+Angre siste melding i samtalen. Fjerner den siste brukermeldingen, alle påfølgende svar og eventuelle filendringer.
+
+:::tupp
+Eventuelle filendringer vil også bli tilbakestilt.
+:::
+
+Internt bruker dette Git til å administrere filendringene. Så ditt prosjekt **må
+være et Git-depot**.
+
+```bash frame="none"
+/undo
+```
+
+**Nøkkelbinding:** `ctrl+x u`
+
+---
+
+### avbryt deling
+
+Opphev deling av gjeldende økt. [Finn ut mer](/docs/share#un-sharing).
+
+```bash frame="none"
+/unshare
+```
+
+---
+
+## Redaktøroppsett
+
+Både kommandoene `/editor` og `/export` bruker redigeringsprogrammet som er spesifisert i miljøvariabelen `EDITOR`.
+
+
+
+ ```bash
+ # Example for nano or vim
+ export EDITOR=nano
+ export EDITOR=vim
+
+ # For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
+ # include --wait
+ export EDITOR="code --wait"
+ ```
+
+ For å gjøre det permanent, legg dette til i skallprofilen din;
+ `~/.bashrc`, `~/.zshrc` osv.
+
+
+
+
+ ```bash
+ set EDITOR=notepad
+
+ # For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
+ # include --wait
+ set EDITOR=code --wait
+ ```
+
+ For å gjøre det permanent, bruk **Systemegenskaper** > **Miljø
+ Variabler**.
+
+
+
+
+ ```powershell
+ $env:EDITOR = "notepad"
+
+ # For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
+ # include --wait
+ $env:EDITOR = "code --wait"
+ ```
+
+ For å gjøre det permanent, legg dette til i PowerShell-profilen din.
+
+
+
+
+Populære redigeringsalternativer inkluderer:
+
+- `code` - Visual Studio Code
+- `cursor` - Cursor
+- `windsurf` - Vindsurfing
+- `nvim` - Neovim-redaktør
+- `vim` - Vim editor
+- `nano` - Nano-editor
+- `notepad` - Windows Notisblokk
+- `subl` - Sublim tekst
+
+:::note
+Noen redaktører som VS Code må startes med flagget `--wait`.
+:::
+
+Noen redaktører trenger kommandolinjeargumenter for å kjøre i blokkeringsmodus. `--wait`-flagget gjør at redigeringsprosessen blokkeres til den lukkes.
+
+---
+
+## Konfigurer
+
+Du kan tilpasse TUI-oppførselen gjennom OpenCode-konfigurasjonsfilen.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "tui": {
+ "scroll_speed": 3,
+ "scroll_acceleration": {
+ "enabled": true
+ }
+ }
+}
+```
+
+### Alternativer
+
+- `scroll_acceleration` - Aktiver rulleakselerasjon i macOS-stil for jevn, naturlig rulling. Når aktivert, øker rullehastigheten med raske rullebevegelser og forblir presis for langsommere bevegelser. **Denne innstillingen har forrang over `scroll_speed` og overstyrer den når den er aktivert.**
+- `scroll_speed` - Styrer hvor raskt TUI ruller når du bruker rullekommandoer (minimum: `1`). Standard er `3`. **Merk: Dette ignoreres hvis `scroll_acceleration.enabled` er satt til `true`.**
+
+---
+
+## Tilpasning
+
+Du kan tilpasse ulike aspekter av TUI-visningen ved å bruke kommandopaletten (`ctrl+x h` eller `/help`). Disse innstillingene vedvarer ved omstarter.
+
+---
+
+#### Visning av brukernavn
+
+Veksle om brukernavnet ditt vises i chat-meldinger. Få tilgang til dette gjennom:
+
+- Kommandopalett: Søk etter "brukernavn" eller "skjul brukernavn"
+- Innstillingen vedvarer automatisk og vil bli husket over TUI økter
diff --git a/packages/web/src/content/docs/da/web.mdx b/packages/web/src/content/docs/da/web.mdx
new file mode 100644
index 000000000..931fffa34
--- /dev/null
+++ b/packages/web/src/content/docs/da/web.mdx
@@ -0,0 +1,142 @@
+---
+title: Web
+description: Brug af OpenCode i din browser.
+---
+
+OpenCode kan køre som en webapplikation i din browser, hvilket giver den samme kraftfulde AI-kodningsoplevelse uden behov for en terminal.
+
+
+
+## Kom godt i gang
+
+Start webgrænsefladen ved at køre:
+
+```bash
+opencode web
+```
+
+Dette starter en lokal server på `127.0.0.1` med en tilfældig tilgængelig port og åbner automatisk OpenCode i din standardbrowser.
+
+:::caution
+Hvis `OPENCODE_SERVER_PASSWORD` ikke er indstillet, vil serveren være usikret. Dette er fint til lokal brug, men bør indstilles til netværksadgang.
+:::
+
+:::tip[Windows Users]
+For den bedste oplevelse skal du køre `opencode web` fra [WSL](/docs/windows-wsl) i stedet for PowerShell. Dette sikrer korrekt filsystemadgang og terminalintegration.
+:::
+
+---
+
+## Konfiguration
+
+Du kan konfigurere webserveren ved hjælp af kommandolinjeflag eller i din [config-fil](/docs/config).
+
+### Port
+
+Som standard vælger OpenCode en tilgængelig port. Du kan angive en port:
+
+```bash
+opencode web --port 4096
+```
+
+### Værtsnavn
+
+Som standard binder serveren til `127.0.0.1` (kun lokal vært). Sådan gør du OpenCode tilgængelig på dit netværk:
+
+```bash
+opencode web --hostname 0.0.0.0
+```
+
+Når du bruger `0.0.0.0`, vil OpenCode vise både lokale adresser og netværksadresser:
+
+```
+ Local access: http://localhost:4096
+ Network access: http://192.168.1.100:4096
+```
+
+### mDNS-opdagelse
+
+Aktiver mDNS for at gøre din server synlig på det lokale netværk:
+
+```bash
+opencode web --mdns
+```
+
+Dette indstiller automatisk værtsnavnet til `0.0.0.0` og annoncerer serveren som `opencode.local`.
+
+Du kan tilpasse mDNS-domænenavnet til at køre flere forekomster på det samme netværk:
+
+```bash
+opencode web --mdns --mdns-domain myproject.local
+```
+
+### CORS
+
+For at tillade yderligere domæner til CORS (nyttigt til brugerdefinerede frontends):
+
+```bash
+opencode web --cors https://example.com
+```
+
+### Godkendelse
+
+For at beskytte adgangen skal du angive en adgangskode ved hjælp af `OPENCODE_SERVER_PASSWORD` miljøvariablen:
+
+```bash
+OPENCODE_SERVER_PASSWORD=secret opencode web
+```
+
+Brugernavnet er som standard `opencode`, men kan ændres med `OPENCODE_SERVER_USERNAME`.
+
+---
+
+## Brug af webgrænsefladen
+
+Når den er startet, giver webgrænsefladen adgang til dine OpenCode-sessioner.
+
+### Sessioner
+
+Se og administrer dine sessioner fra hjemmesiden. Du kan se aktive sessioner og starte nye.
+
+
+
+### Serverstatus
+
+Klik på "Se servere" for at se tilsluttede servere og deres status.
+
+
+
+---
+
+## Tilslutning af en terminal
+
+Du kan vedhæfte en terminal TUI til en kørende webserver:
+
+```bash
+# Start the web server
+opencode web --port 4096
+
+# In another terminal, attach the TUI
+opencode attach http://localhost:4096
+```
+
+Dette giver dig mulighed for at bruge både webgrænsefladen og terminalen samtidigt og dele de samme sessioner og tilstand.
+
+---
+
+## Konfigurationsfil
+
+Du kan også konfigurere serverindstillinger i din `opencode.json`-konfigurationsfil:
+
+```json
+{
+ "server": {
+ "port": 4096,
+ "hostname": "0.0.0.0",
+ "mdns": true,
+ "cors": ["https://example.com"]
+ }
+}
+```
+
+Kommandolinjeflag har forrang over konfigurationsfilindstillinger.
diff --git a/packages/web/src/content/docs/da/windows-wsl.mdx b/packages/web/src/content/docs/da/windows-wsl.mdx
new file mode 100644
index 000000000..37be04963
--- /dev/null
+++ b/packages/web/src/content/docs/da/windows-wsl.mdx
@@ -0,0 +1,113 @@
+---
+title: Windows (WSL)
+description: Kør OpenCode på Windows med WSL for den bedste oplevelse.
+---
+
+import { Steps } from "@astrojs/starlight/components"
+
+Selvom OpenCode kan køre direkte på Windows, anbefaler vi at bruge [Windows Subsystem for Linux (WSL)](https://learn.microsoft.com/en-us/windows/wsl/install) for den bedste oplevelse. WSL giver et Linux-miljø, der fungerer problemfrit med OpenCodes funktioner.
+
+:::tip[Hvorfor WSL?]
+WSL giver bedre filsystemydelse, fuld terminalunderstøttelse og kompatibilitet med de udviklingsværktøjer, som OpenCode er afhængig af.
+:::
+
+---
+
+## Opsætning
+
+
+
+1. **Installer WSL**
+
+ Hvis du ikke allerede har gjort det, så [installer WSL](https://learn.microsoft.com/en-us/windows/wsl/install) med Microsofts officielle vejledning.
+
+2. **Installer OpenCode i WSL**
+
+ Når WSL er sat op, skal du åbne din WSL-terminal og installere OpenCode med en af [installationsmetoderne](/docs/).
+
+ ```bash
+ curl -fsSL https://opencode.ai/install | bash
+ ```
+
+3. **Brug OpenCode fra WSL**
+
+ Gå til din projektmappe (få adgang til Windows-filer via `/mnt/c/`, `/mnt/d/` osv.) og kør OpenCode.
+
+ ```bash
+ cd /mnt/c/Users/YourName/project
+ opencode
+ ```
+
+
+
+---
+
+## Desktop-app + WSL-server
+
+Hvis du foretrækker OpenCode Desktop-appen, men vil køre serveren i WSL:
+
+1. **Start serveren i WSL** med `--hostname 0.0.0.0` for at tillade eksterne forbindelser:
+
+ ```bash
+ opencode serve --hostname 0.0.0.0 --port 4096
+ ```
+
+2. **Forbind Desktop-appen** til `http://localhost:4096`
+
+:::note
+Hvis `localhost` ikke virker i din opsætning, så forbind i stedet med WSL-IP-adressen (fra WSL: `hostname -I`) og brug `http://:4096`.
+:::
+
+:::caution
+Når du bruger `--hostname 0.0.0.0`, skal du sætte `OPENCODE_SERVER_PASSWORD` for at sikre serveren.
+
+```bash
+OPENCODE_SERVER_PASSWORD=your-password opencode serve --hostname 0.0.0.0
+```
+
+:::
+
+---
+
+## Webklient + WSL
+
+For den bedste weboplevelse på Windows:
+
+1. **Kør `opencode web` i WSL-terminalen** i stedet for PowerShell:
+
+ ```bash
+ opencode web --hostname 0.0.0.0
+ ```
+
+2. **Åbn fra din Windows-browser** på `http://localhost:` (OpenCode udskriver URL'en)
+
+Når du kører `opencode web` fra WSL, får du korrekt filsystemadgang og terminalintegration, samtidig med at det stadig er tilgængeligt fra din Windows-browser.
+
+---
+
+## Adgang til Windows-filer
+
+WSL kan få adgang til alle dine Windows-filer via `/mnt/`-mappen:
+
+- `C:`-drev → `/mnt/c/`
+- `D:`-drev → `/mnt/d/`
+- Og så videre...
+
+Eksempel:
+
+```bash
+cd /mnt/c/Users/YourName/Documents/project
+opencode
+```
+
+:::tip
+For den mest problemfri oplevelse kan du overveje at klone/kopiere dit repo ind i WSL-filsystemet (for eksempel under `~/code/`) og køre OpenCode derfra.
+:::
+
+---
+
+## Tips
+
+- Lad OpenCode køre i WSL for projekter, der ligger på Windows-drev - filadgangen er problemfri
+- Brug VS Codes [WSL-udvidelse](https://code.visualstudio.com/docs/remote/wsl) sammen med OpenCode for et integreret udviklingsworkflow
+- Din OpenCode-konfiguration og dine sessioner gemmes i WSL-miljøet i `~/.local/share/opencode/`
diff --git a/packages/web/src/content/docs/da/zen.mdx b/packages/web/src/content/docs/da/zen.mdx
new file mode 100644
index 000000000..4503f7c40
--- /dev/null
+++ b/packages/web/src/content/docs/da/zen.mdx
@@ -0,0 +1,254 @@
+---
+title: Zen
+description: Utvalgt liste over modeller levert av OpenCode.
+---
+
+import config from "../../../../config.mjs"
+export const console = config.console
+export const email = `mailto:${config.email}`
+
+OpenCode Zen er en liste over testede og verifiserte modeller levert av OpenCode-teamet.
+
+:::note
+OpenCode Zen er for øyeblikket i beta.
+:::
+
+Zen fungerer som alle andre leverandører i OpenCode. Du logger på OpenCode Zen og får
+din API nøkkel. Den er **helt valgfri** og du trenger ikke bruke den for å bruke den
+OpenCode.
+
+---
+
+## Bakgrunn
+
+Det er et stort antall modeller der ute, men bare noen få av dem
+disse modellene fungerer godt som kodeagenter. I tillegg er de fleste tilbydere
+konfigurert veldig annerledes; slik at du får veldig forskjellig ytelse og kvalitet.
+
+:::tupp
+Vi testet en utvalgt gruppe modeller og leverandører som fungerer godt med OpenCode.
+:::
+
+Så hvis du bruker en modell gjennom noe som OpenRouter, kan du aldri bli det
+sikker på om du får den beste versjonen av modellen du ønsker.
+
+For å fikse dette gjorde vi et par ting:
+
+1. Vi testet en utvalgt gruppe modeller og snakket med teamene deres om hvordan
+ best kjøre dem.
+2. Vi samarbeidet deretter med noen få leverandører for å sikre at disse ble servert
+ riktig.
+3. Til slutt benchmarket vi kombinasjonen av modell/leverandør og kom frem
+ med en liste som vi har lyst til å anbefale.
+
+OpenCode Zen er en AI gateway som gir deg tilgang til disse modellene.
+
+---
+
+## Slik fungerer det
+
+OpenCode Zen fungerer som alle andre leverandører i OpenCode.
+
+1. Du logger på **OpenCode Zen**, legg til fakturering
+ detaljer, og kopier API-nøkkelen.
+2. Du kjører kommandoen `/connect` i TUI, velger OpenCode Zen og limer inn API-nøkkelen.
+3. Kjør `/models` i TUI for å se listen over modeller vi anbefaler.
+
+Du belastes per forespørsel, og du kan legge til kreditt på kontoen din.
+
+---
+
+## Endepunkter
+
+Du kan også få tilgang til modellene våre gjennom følgende API-endepunkter.
+
+| Modell | Modell ID | Endepunkt | AI SDK Pakke |
+| ------------------- | ------------------ | -------------------------------------------------- | --------------------------- |
+| GPT 5.2 | gpt-5.2 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
+| GPT 5.2 Codex | gpt-5.2-kodeks | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
+| GPT 5.1 | gpt-5.1 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
+| GPT 5.1 Codex | gpt-5.1-kodeks | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
+| GPT 5.1 Codex Max | gpt-5.1-codex-max | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
+| GPT 5.1 Codex Mini | gpt-5.1-codex-mini | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
+| GPT 5 | gpt-5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
+| GPT 5 Codex | gpt-5-kodeks | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
+| GPT 5 Nano | gpt-5-nano | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
+| Claude Sonnet 4.5 | claude-sonnett-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
+| Claude Sonnet 4 | claude-sonnett-4 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
+| Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
+| Claude Haiku 3.5 | claude-3-5-haiku | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
+| Claude Opus 4.6 | claude-opus-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
+| Claude Opus 4.5 | claude-opus-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
+| Claude Opus 4.1 | claude-opus-4-1 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
+| Gemini 3 Pro | gemini-3-pro | `https://opencode.ai/zen/v1/models/gemini-3-pro` | `@ai-sdk/google` |
+| Gemini 3 Flash | gemini-3-flash | `https://opencode.ai/zen/v1/models/gemini-3-flash` | `@ai-sdk/google` |
+| MiniMax M2.1 | minimax-m2.1 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
+| MiniMax M2.1 Gratis | minimax-m2.1-fri | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
+| GLM 4.7 | glm-4.7 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
+| GLM 4.7 Gratis | glm-4.7-fri | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
+| GLM 4.6 | glm-4.6 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
+| Kimi K2.5 | kimi-k2.5 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
+| Kimi K2.5 Gratis | kimi-k2.5-fri | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
+| Kimi K2 Tenker | kimi-k2-tenking | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
+| Kimi K2 | kimi-k2 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
+| Qwen3-koder 480B | qwen3-koder | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
+| Stor sylteagurk | stor sylteagurk | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
+
+[modell-id](/docs/config/#models) i OpenCode-konfigurasjonen
+bruker formatet `opencode/`. For eksempel, for GPT 5.2 Codex, ville du
+bruk `opencode/gpt-5.2-codex` i konfigurasjonen din.
+
+---
+
+### Modeller
+
+Du kan hente hele listen over tilgjengelige modeller og deres metadata fra:
+
+```
+https://opencode.ai/zen/v1/models
+```
+
+---
+
+## Priser
+
+Vi støtter en pay-as-you-go-modell. Nedenfor er prisene **per 1 million tokens**.
+
+| Modell | Inngang | Utgang | Bufret Les | Bufret skriv |
+| --------------------------------- | ------- | ------ | ---------- | ------------ |
+| Stor sylteagurk | Gratis | Gratis | Gratis | - |
+| MiniMax M2.1 Gratis | Gratis | Gratis | Gratis | - |
+| MiniMax M2.1 | $0,30 | $1,20 | $0,10 | - |
+| GLM 4.7 Gratis | Gratis | Gratis | Gratis | - |
+| GLM 4.7 | $0,60 | $2,20 | $0,10 | - |
+| GLM 4.6 | $0,60 | $2,20 | $0,10 | - |
+| Kimi K2.5 Gratis | Gratis | Gratis | Gratis | - |
+| Kimi K2.5 | $0,60 | $3,00 | $0,08 | - |
+| Kimi K2 Tenker | $0,40 | $2,50 | - | - |
+| Kimi K2 | $0,40 | $2,50 | - | - |
+| Qwen3-koder 480B | $0,45 | $1,50 | - | - |
+| Claude Sonnet 4.5 (≤ 200K tokens) | $3,00 | $15,00 | $0,30 | $3,75 |
+| Claude Sonnet 4.5 (> 200K tokens) | $6,00 | $22,50 | $0,60 | $7,50 |
+| Claude Sonnet 4 (≤ 200K tokens) | $3,00 | $15,00 | $0,30 | $3,75 |
+| Claude Sonnet 4 (> 200K tokens) | $6,00 | $22,50 | $0,60 | $7,50 |
+| Claude Haiku 4.5 | $1,00 | $5,00 | $0,10 | $1,25 |
+| Claude Haiku 3.5 | $0,80 | $4,00 | $0,08 | $1,00 |
+| Claude Opus 4.6 (≤ 200K tokens) | $5,00 | $25,00 | $0,50 | $6,25 |
+| Claude Opus 4.6 (> 200K tokens) | $10,00 | $37,50 | $1,00 | $12,50 |
+| Claude Opus 4.5 | $5,00 | $25,00 | $0,50 | $6,25 |
+| Claude Opus 4.1 | $15,00 | $75,00 | $1,50 | $18,75 |
+| Gemini 3 Pro (≤ 200K tokens) | $2,00 | $12,00 | $0,20 | - |
+| Gemini 3 Pro (> 200K tokens) | $4,00 | $18,00 | $0,40 | - |
+| Gemini 3 Flash | $0,50 | $3,00 | $0,05 | - |
+| GPT 5.2 | $1,75 | $14,00 | $0,175 | - |
+| GPT 5.2 Codex | $1,75 | $14,00 | $0,175 | - |
+| GPT 5.1 | $1,07 | $8,50 | $0,107 | - |
+| GPT 5.1 Codex | $1,07 | $8,50 | $0,107 | - |
+| GPT 5.1 Codex Max | $1,25 | $10,00 | $0,125 | - |
+| GPT 5.1 Codex Mini | $0,25 | $2,00 | $0,025 | - |
+| GPT 5 | $1,07 | $8,50 | $0,107 | - |
+| GPT 5 Codex | $1,07 | $8,50 | $0,107 | - |
+| GPT 5 Nano | Gratis | Gratis | Gratis | - |
+
+Du legger kanskje merke til _Claude Haiku 3.5_ i brukshistorikken din. Dette er en [lavprismodell](/docs/config/#models) som brukes til å generere titlene på øktene dine.
+
+:::note
+Kredittkortgebyrer overføres til kostpris (4,4 % + $0,30 per transaksjon); vi belaster ikke noe utover det.
+:::
+
+De gratis modellene:
+
+- GLM 4.7 Free er tilgjengelig på OpenCode i en begrenset periode. Teamet bruker denne tiden til å samle tilbakemeldinger og forbedre modellen.
+- Kimi K2.5 Gratis er tilgjengelig på OpenCode i en begrenset periode. Teamet bruker denne tiden til å samle tilbakemeldinger og forbedre modellen.
+- MiniMax M2.1 Free er tilgjengelig på OpenCode i en begrenset periode. Teamet bruker denne tiden til å samle tilbakemeldinger og forbedre modellen.
+- Big Pickle er en stealth-modell som er gratis på OpenCode i en begrenset periode. Teamet bruker denne tiden til å samle tilbakemeldinger og forbedre modellen.
+
+Contact us if you have any questions.
+
+---
+
+### Last inn automatisk
+
+Hvis saldoen din går under $5, vil Zen automatisk laste inn $20 på nytt.
+
+Du kan endre beløpet for automatisk påfylling. Du kan også deaktivere automatisk reload helt.
+
+---
+
+### Månedlige grenser
+
+Du kan også angi en månedlig bruksgrense for hele arbeidsområdet og for hver
+medlem av teamet ditt.
+
+La oss for eksempel si at du setter en månedlig bruksgrense til $20, Zen vil ikke bruke
+mer enn $20 på en måned. Men hvis du har automatisk reload aktivert, kan Zen ende opp
+belaster deg mer enn $20 hvis saldoen din går under $5.
+
+---
+
+## Personvern
+
+Alle våre modeller er vert i US. Leverandørene våre følger en nulloppbevaringspolicy og bruker ikke dataene dine til modellopplæring, med følgende unntak:
+
+- Big Pickle: I løpet av gratisperioden kan innsamlede data brukes til å forbedre modellen.
+- GLM 4.7 Gratis: I løpet av gratisperioden kan innsamlede data brukes til å forbedre modellen.
+- Kimi K2.5 Gratis: I løpet av gratisperioden kan innsamlede data brukes til å forbedre modellen.
+- MiniMax M2.1 Gratis: I løpet av gratisperioden kan innsamlede data brukes til å forbedre modellen.
+- OpenAI APIer: Forespørsler oppbevares i 30 dager i samsvar med [OpenAIs datapolicyer](https://platform.openai.com/docs/guides/your-data).
+- Anthropic APIer: Forespørsler oppbevares i 30 dager i samsvar med [Anthropics datapolicyer](https://docs.anthropic.com/en/docs/claude-code/data-usage).
+
+---
+
+## For lag
+
+Zen fungerer også utmerket for team. Du kan invitere lagkamerater, tildele roller, kuratere
+modellene laget ditt bruker, og mer.
+
+:::note
+Arbeidsområder er for øyeblikket gratis for team som en del av betaversjonen.
+:::
+
+Å administrere arbeidsområdet ditt er for øyeblikket gratis for team som en del av betaversjonen. Det blir vi
+deler mer informasjon om prisene snart.
+
+---
+
+### Roller
+
+Du kan invitere lagkamerater til arbeidsområdet ditt og tildele roller:
+
+- **Admin**: Administrer modeller, medlemmer, API-nøkler og fakturering
+- **Medlem**: Administrer kun sine egne API-nøkler
+
+Administratorer kan også sette månedlige forbruksgrenser for hvert medlem for å holde kostnadene under kontroll.
+
+---
+
+### Modelltilgang
+
+Administratorer kan aktivere eller deaktivere spesifikke modeller for arbeidsområdet. Forespørsler til en deaktivert modell vil returnere en feil.
+
+Dette er nyttig for tilfeller der du ønsker å deaktivere bruken av en modell som
+samler inn data.
+
+---
+
+### Ta med egen nøkkel
+
+Du kan bruke dine egne OpenAI- eller Anthropic API-nøkler mens du fortsatt har tilgang til andre modeller i Zen.
+
+Når du bruker dine egne nøkler, faktureres tokens direkte av leverandøren, ikke av Zen.
+
+For eksempel kan organisasjonen din allerede ha en nøkkel for OpenAI eller Anthropic
+og du vil bruke det i stedet for det Zen gir.
+
+---
+
+## Mål
+
+Vi opprettet OpenCode Zen for å:
+
+1. **Benchmark** de beste modellene/leverandørene for kodingsagenter.
+2. Ha tilgang til alternativene for **høyeste kvalitet** og ikke nedgrader ytelsen eller rute til billigere leverandører.
+3. Gi videre eventuelle **prisfall** ved å selge til kostpris; så den eneste markeringen er å dekke behandlingsgebyrene våre.
+4. Ha **ingen låsing** ved å la deg bruke den med en hvilken som helst annen kodeagent. Og la deg alltid bruke en hvilken som helst annen leverandør med OpenCode også.
diff --git a/packages/web/src/content/docs/de/1-0.mdx b/packages/web/src/content/docs/de/1-0.mdx
new file mode 100644
index 000000000..ac7694608
--- /dev/null
+++ b/packages/web/src/content/docs/de/1-0.mdx
@@ -0,0 +1,67 @@
+---
+title: Migration zu 1.0
+description: Was ist neu in OpenCode 1.0.
+---
+
+OpenCode 1.0 ist eine komplette Neufassung des TUI.
+
+Wir sind vom go+bubbletea-basierten TUI, das Leistungs- und Leistungsprobleme aufwies, zu einem internen Framework (OpenTUI) übergegangen, das in zig+solidjs geschrieben wurde.
+
+Der neue TUI funktioniert wie der alte, da er eine Verbindung zum gleichen Opencode-Server herstellt.
+
+---
+
+## Upgrading
+
+Sie sollten nicht automatisch auf 1.0 aktualisiert werden, wenn Sie derzeit eine frühere Version verwenden
+Version. Einige ältere Versionen von OpenCode greifen jedoch immer auf die neueste Version zu.
+
+Führen Sie zum manuellen Upgrade Folgendes aus:
+
+```bash
+$ opencode upgrade 1.0.0
+```
+
+Führen Sie Folgendes aus, um ein Downgrade auf 0.x durchzuführen
+
+```bash
+$ opencode upgrade 0.15.31
+```
+
+---
+
+## UX ändert sich
+
+Der Sitzungsverlauf ist stärker komprimiert und zeigt nur alle Details des Bearbeitungs- und Bash-Tools an.
+
+Wir haben eine Befehlsleiste hinzugefügt, durch die schnell alles fließt. Drücken Sie Strg+P, um es in einem beliebigen Kontext aufzurufen und alles zu sehen, was Sie tun können.
+
+Eine Sitzungsseitenleiste (kann umgeschaltet werden) mit nützlichen Informationen hinzugefügt.
+
+Wir haben einige Funktionen entfernt, von denen wir nicht sicher waren, ob sie tatsächlich jemand nutzte. Wenn etwas Wichtiges fehlt, öffnen Sie bitte eine Ausgabe und wir werden es schnell wieder hinzufügen.
+
+---
+
+## Bahnbrechende Veränderungen
+
+### Tastenkombinationen umbenannt
+
+- Nachrichten_revert -> Nachrichten_Rückgängig machen
+- switch_agent -> agent_cycle
+- switch_agent_reverse -> agent_cycle_reverse
+- switch_mode -> agent_cycle
+- switch_mode_reverse -> agent_cycle_reverse
+
+### Tastenkombinationen entfernt
+
+- message_layout_toggle
+- message_next
+- Nachrichten_vorherige
+- file_diff_toggle
+- file_search
+- file_close
+- Dateiliste
+- app_help
+- project_init
+- Werkzeugdetails
+- think_blocks
diff --git a/packages/web/src/content/docs/de/acp.mdx b/packages/web/src/content/docs/de/acp.mdx
new file mode 100644
index 000000000..04c5c67ac
--- /dev/null
+++ b/packages/web/src/content/docs/de/acp.mdx
@@ -0,0 +1,156 @@
+---
+title: ACP-Unterstützung
+description: Verwenden Sie OpenCode in jedem ACP-kompatiblen Editor.
+---
+
+OpenCode unterstützt [Agent Client Protocol](https://agentclientprotocol.com) oder (ACP), sodass Sie es direkt in kompatiblen Editoren und IDEs verwenden können.
+
+:::tip
+Eine Liste der Editoren und Tools, die ACP unterstützen, finden Sie unter [ACP progress report](https://zed.dev/blog/acp-progress-report#available-now).
+:::
+
+ACP ist ein offenes Protokoll, das die Kommunikation zwischen Code-Editoren und AI-Codierungsagenten standardisiert.
+
+---
+
+## Konfigurieren
+
+Um OpenCode über ACP zu verwenden, konfigurieren Sie Ihren Editor für die Ausführung des Befehls `opencode acp`.
+
+Der Befehl startet OpenCode als ACP-kompatiblen Unterprozess, der über stdio über JSON-RPC mit Ihrem Editor kommuniziert.
+
+Nachfolgend finden Sie Beispiele für beliebte Editoren, die ACP unterstützen.
+
+---
+
+### Zed
+
+Fügen Sie Ihrer [Zed](https://zed.dev)-Konfiguration (`~/.config/zed/settings.json`) Folgendes hinzu:
+
+```json title="~/.config/zed/settings.json"
+{
+ "agent_servers": {
+ "OpenCode": {
+ "command": "opencode",
+ "args": ["acp"]
+ }
+ }
+}
+```
+
+Um es zu öffnen, verwenden Sie die Aktion `agent: new thread` in der **Befehlspalette**.
+
+Sie können auch eine Tastenkombination binden, indem Sie Ihren `keymap.json` bearbeiten:
+
+```json title="keymap.json"
+[
+ {
+ "bindings": {
+ "cmd-alt-o": [
+ "agent::NewExternalAgentThread",
+ {
+ "agent": {
+ "custom": {
+ "name": "OpenCode",
+ "command": {
+ "command": "opencode",
+ "args": ["acp"]
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+]
+```
+
+---
+
+### JetBrains IDEs
+
+Fügen Sie zu Ihrem [JetBrains IDE](https://www.jetbrains.com/) acp.json gemäß [documentation](https://www.jetbrains.com/help/ai-assistant/acp.html) hinzu:
+
+```json title="acp.json"
+{
+ "agent_servers": {
+ "OpenCode": {
+ "command": "/absolute/path/bin/opencode",
+ "args": ["acp"]
+ }
+ }
+}
+```
+
+Um es zu öffnen, verwenden Sie den neuen Agenten „OpenCode“ in der Chat-Agentenauswahl AI.
+
+---
+
+### Avante.nvim
+
+Fügen Sie Ihrer [Avante.nvim](https://github.com/yetone/avante.nvim)-Konfiguration Folgendes hinzu:
+
+```lua
+{
+ acp_providers = {
+ ["opencode"] = {
+ command = "opencode",
+ args = { "acp" }
+ }
+ }
+}
+```
+
+Wenn Sie Umgebungsvariablen übergeben müssen:
+
+```lua {6-8}
+{
+ acp_providers = {
+ ["opencode"] = {
+ command = "opencode",
+ args = { "acp" },
+ env = {
+ OPENCODE_API_KEY = os.getenv("OPENCODE_API_KEY")
+ }
+ }
+ }
+}
+```
+
+---
+
+### CodeCompanion.nvim
+
+Um OpenCode als ACP-Agent in [CodeCompanion.nvim](https://github.com/olimorris/codecompanion.nvim) zu verwenden, fügen Sie Folgendes zu Ihrer Neovim-Konfiguration hinzu:
+
+```lua
+require("codecompanion").setup({
+ interactions = {
+ chat = {
+ adapter = {
+ name = "opencode",
+ model = "claude-sonnet-4",
+ },
+ },
+ },
+})
+```
+
+Diese Konfiguration richtet CodeCompanion so ein, dass OpenCode als ACP-Agent für den Chat verwendet wird.
+
+Wenn Sie Umgebungsvariablen (wie `OPENCODE_API_KEY`) übergeben müssen, finden Sie ausführliche Informationen zu [Configuring Adapters: Environment Variables](https://codecompanion.olimorris.dev/getting-started#setting-an-api-key) in der Dokumentation zu CodeCompanion.nvim.
+
+## Support
+
+OpenCode funktioniert über ACP genauso wie im Terminal. Alle Funktionen werden unterstützt:
+
+:::note
+Einige integrierte Schrägstrichbefehle wie `/undo` und `/redo` werden derzeit nicht unterstützt.
+:::
+
+- Integrierte Tools (Dateioperationen, Terminalbefehle usw.)
+- Benutzerdefinierte Tools und Slash-Befehle
+- MCP-Server, die in Ihrer OpenCode-Konfiguration konfiguriert sind
+- Projektspezifische Regeln von `AGENTS.md`
+- Benutzerdefinierte Formatierer und Linters
+- Agenten- und Berechtigungssystem
diff --git a/packages/web/src/content/docs/de/agents.mdx b/packages/web/src/content/docs/de/agents.mdx
new file mode 100644
index 000000000..7503658be
--- /dev/null
+++ b/packages/web/src/content/docs/de/agents.mdx
@@ -0,0 +1,747 @@
+---
+title: Agenten
+description: Konfigurieren und verwenden Sie spezielle Agenten.
+---
+
+Agenten sind spezialisierte AI-Assistenten, die für bestimmte Aufgaben und Arbeitsabläufe konfiguriert werden können. Sie ermöglichen Ihnen die Erstellung gezielter Werkzeuge mit benutzerdefinierten Eingabeaufforderungen, Modellen und Werkzeugzugriff.
+
+:::tip
+Verwenden Sie den Planagenten, um Code zu analysieren und Vorschläge zu überprüfen, ohne Codeänderungen vorzunehmen.
+:::
+
+Sie können während einer Sitzung zwischen Agenten wechseln oder sie mit der Erwähnung `@` aufrufen.
+
+---
+
+## Typen
+
+Es gibt zwei Arten von Agenten in OpenCode; Primäragenten und Subagenten.
+
+---
+
+### Primäragenten
+
+Primäragenten sind die Hauptassistenten, mit denen Sie direkt interagieren. Sie können sie mit der **Tabulatortaste** oder Ihrer konfigurierten Tastenkombination `switch_agent` durchblättern. Diese Agenten kümmern sich um Ihr Hauptgespräch. Der Werkzeugzugriff wird über Berechtigungen konfiguriert – zum Beispiel sind bei „Build“ alle Werkzeuge aktiviert, während „Plan“ eingeschränkt ist.
+
+:::tip
+Sie können die **Tabulatortaste** verwenden, um während einer Sitzung zwischen primären Agenten zu wechseln.
+:::
+
+OpenCode verfügt über zwei integrierte Primäragenten: **Build** und **Plan**. Auch
+Schauen Sie sich diese unten an.
+
+---
+
+### Subagenten
+
+Unteragenten sind spezialisierte Assistenten, die Primäragenten für bestimmte Aufgaben aufrufen können. Sie können sie auch manuell aufrufen, indem Sie sie in Ihren Nachrichten **@erwähnen**.
+
+OpenCode verfügt über zwei integrierte Subagenten: **General** und **Explore**. Wir werden uns das weiter unten ansehen.
+
+---
+
+## Eingebaut
+
+OpenCode verfügt über zwei integrierte Primäragenten und zwei integrierte Subagenten.
+
+---
+
+### Verwenden Sie Build
+
+_Modus_: `primary`
+
+Build ist der **Standard**-Primäragent mit allen aktivierten Tools. Dies ist der Standardagent für Entwicklungsarbeiten, bei dem Sie vollen Zugriff auf Dateioperationen und Systembefehle benötigen.
+
+---
+
+### Nutzungsplan
+
+_Modus_: `primary`
+
+Ein eingeschränkter Agent, der für Planung und Analyse entwickelt wurde. Wir verwenden ein Berechtigungssystem, um Ihnen mehr Kontrolle zu geben und unbeabsichtigte Änderungen zu verhindern.
+Standardmäßig sind alle folgenden Elemente auf `ask` gesetzt:
+
+- `file edits`: Alle Schreibvorgänge, Patches und Bearbeitungen
+- `bash`: Alle Bash-Befehle
+
+Dieser Agent ist nützlich, wenn Sie möchten, dass LLM Code analysiert, Änderungen vorgeschlagen oder Pläne erstellt werden, ohne tatsächliche Änderungen an Ihrer Codebasis vorzunehmen.
+
+---
+
+### Verwenden Sie es allgemein
+
+_Modus_: `subagent`
+
+Ein Allzweckagent zur Recherche komplexerer Fragen und zur Ausführung mehrstufiger Aufgaben. Verfügt über vollständigen Zugriff auf das Tool (außer Todo), sodass bei Bedarf Dateiänderungen vorgenommen werden können. Verwenden Sie Matrizen, um mehrere Arbeitseinheiten parallel auszuführen.
+
+---
+
+### Verwenden Sie „Erkunden“.
+
+_Modus_: `subagent`
+
+Ein schneller, schreibgeschützter Agent zum Erkunden von Codebasen. Dateien können nicht geändert werden. Verwenden Sie dies, wenn Sie Dateien schnell anhand von Mustern finden, Code nach Schlüsselwörtern durchsuchen oder Fragen zur Codebasis beantworten müssen.
+
+---
+
+### Verwenden Sie Dichtung
+
+_Modus_: `primary`
+
+Versteckter Systemagent, der lange Kontext in einer kleineren Zusammenfassung komprimiert. Es wird bei Bedarf automatisch ausgeführt und ist im UI nicht auswählbar.
+
+---
+
+### Titel verwenden
+
+_Modus_: `primary`
+
+Versteckter Systemagent, der kurze Sitzungstitel generiert. Es läuft automatisch und ist im UI nicht auswählbar.
+
+---
+
+### Zusammenfassung verwenden
+
+_Modus_: `primary`
+
+Versteckter Systemagent, der Sitzungszusammenfassungen erstellt. Es läuft automatisch und ist im UI nicht auswählbar.
+
+---
+
+## Verwendung
+
+1. Verwenden Sie für primäre Agenten die **Tabulatortaste**, um während einer Sitzung durch sie zu blättern. Sie können auch Ihre konfigurierte `switch_agent`-Tastenkombination verwenden.
+
+2. Subagenten können aufgerufen werden:
+ - **Automatisch** durch primäre Agenten für spezielle Aufgaben basierend auf ihren Beschreibungen.
+ - Manuell durch **@ Erwähnung** eines Subagenten in Ihrer Nachricht. Zum Beispiel.
+
+ ```txt frame="none"
+ @general help me search for this function
+ ```
+
+3. **Navigation zwischen Sitzungen**: Wenn Subagenten ihre eigenen untergeordneten Sitzungen erstellen, können Sie zwischen der übergeordneten Sitzung und allen untergeordneten Sitzungen sorgfältig handeln, indem Sie Folgendes verwenden:
+ - **\+Rechts** (oder Ihre konfigurierte `session_child_cycle`-Tastenkombination), um vorwärts durch Eltern → Kind1 → Kind2 → ... → Eltern zu blättern
+ - **\+Links** (oder Ihre konfigurierte `session_child_cycle_reverse`-Tastenkombination), um rückwärts durch übergeordnetes Element ← untergeordnetes Element1 ← untergeordnetes Element2 ← ... ← übergeordnetes Element zu blättern
+
+ Dadurch können Sie nahtlos zwischen der Hauptkonversation und der spezialisierten Subagentenarbeit wechseln.
+
+---
+
+## Konfigurieren
+
+Sie können die integrierten Agenten anpassen oder über die Konfiguration eigene erstellen. Agenten können auf zwei Arten konfiguriert werden:
+
+---
+
+### JSON
+
+Konfigurieren Sie Agenten in Ihrer `opencode.json`-Konfigurationsdatei:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "agent": {
+ "build": {
+ "mode": "primary",
+ "model": "anthropic/claude-sonnet-4-20250514",
+ "prompt": "{file:./prompts/build.txt}",
+ "tools": {
+ "write": true,
+ "edit": true,
+ "bash": true
+ }
+ },
+ "plan": {
+ "mode": "primary",
+ "model": "anthropic/claude-haiku-4-20250514",
+ "tools": {
+ "write": false,
+ "edit": false,
+ "bash": false
+ }
+ },
+ "code-reviewer": {
+ "description": "Reviews code for best practices and potential issues",
+ "mode": "subagent",
+ "model": "anthropic/claude-sonnet-4-20250514",
+ "prompt": "You are a code reviewer. Focus on security, performance, and maintainability.",
+ "tools": {
+ "write": false,
+ "edit": false
+ }
+ }
+ }
+}
+```
+
+---
+
+### Markdown
+
+Sie können Agenten auch mithilfe von Markdown-Dateien definieren. Platzieren Sie sie in:
+
+- Global: `~/.config/opencode/agents/`
+- Pro Projekt: `.opencode/agents/`
+
+```markdown title="~/.config/opencode/agents/review.md"
+---
+description: Reviews code for quality and best practices
+mode: subagent
+model: anthropic/claude-sonnet-4-20250514
+temperature: 0.1
+tools:
+ write: false
+ edit: false
+ bash: false
+---
+
+You are in code review mode. Focus on:
+
+- Code quality and best practices
+- Potential bugs and edge cases
+- Performance implications
+- Security considerations
+
+Provide constructive feedback without making direct changes.
+```
+
+Der Name der Markdown-Datei wird zum Agentennamen. Beispielsweise erstellte `review.md` einen `review`-Agenten.
+
+---
+
+## Options
+
+Schauen Sie sich diese Konfigurationsmöglichkeiten im Detail an.
+
+---
+
+### Beschreibung
+
+Verwenden Sie die Option `description`, um eine kurze Beschreibung darüber bereitzustellen, was der Agent tut und wann er verwendet werden soll.
+
+```json title="opencode.json"
+{
+ "agent": {
+ "review": {
+ "description": "Reviews code for best practices and potential issues"
+ }
+ }
+}
+```
+
+Dies ist eine **erforderliche** Konfigurationsoption.
+
+---
+
+### Temperature
+
+Steuern Sie die Zufälligkeit und Kreativität der Antworten von LLM mit der `temperature`-Konfiguration.
+
+Höchste Werte machen die Antworten fokussierter und deterministischer, während höhere Werte die Kreativität und Variabilität steigern.
+
+```json title="opencode.json"
+{
+ "agent": {
+ "plan": {
+ "temperature": 0.1
+ },
+ "creative": {
+ "temperature": 0.8
+ }
+ }
+}
+```
+
+Temperaturwerte liegen typischerweise zwischen 0.0 und 1.0:
+
+- **0.0-0.2**: Sehr fokussierte und deterministische Antworten, ideal für Code-Analyse und Planung
+- **0.3-0.5**: Ausgewogene Antworten mit etwas Kreativität, gut für allgemeine Entwicklungsaufgaben
+- **0.6-1.0**: Kreativere und vielfältigere Antworten, nützlich für Brainstorming und Erkundung
+
+```json title="opencode.json"
+{
+ "agent": {
+ "analyze": {
+ "temperature": 0.1,
+ "prompt": "{file:./prompts/analysis.txt}"
+ },
+ "build": {
+ "temperature": 0.3
+ },
+ "brainstorm": {
+ "temperature": 0.7,
+ "prompt": "{file:./prompts/creative.txt}"
+ }
+ }
+}
+```
+
+Wenn keine Temperatur angegeben ist, verwendet OpenCode modellspezifische Standardwerte; typischerweise 0 für die meisten Modelle, 0.55 für Qwen-Modelle.
+
+---
+
+### Maximale Schritte
+
+Steuern Sie die maximale Anzahl an Agenteniterationen, die ein Agent durchführen kann, bevor er gezwungen wird, nur mit Text zu antworten. Dadurch können Benutzer, die die Kosten kontrollieren möchten, ein Limit für Agentenaktionen festlegen.
+
+Wenn dies nicht festgelegt ist, iteriert der Agent weiter, bis das Modell den Stopp beschließt oder der Benutzer die Sitzung unterbricht.
+
+```json title="opencode.json"
+{
+ "agent": {
+ "quick-thinker": {
+ "description": "Fast reasoning with limited iterations",
+ "prompt": "You are a quick thinker. Solve problems with minimal steps.",
+ "steps": 5
+ }
+ }
+}
+```
+
+Wenn das Limit erreicht ist, erhält der Agent eine spezielle Systemaufforderung, die ihn anweist, mit einer Zusammenfassung seiner Arbeit und empfohlenen verbleibenden Aufgaben zu antworten.
+
+:::caution
+Das alte Feld `maxSteps` ist veraltet. Verwenden Sie stattdessen `steps`.
+:::
+
+---
+
+### Disable
+
+Auf `true` setzen, um den Agenten zu deaktivieren.
+
+```json title="opencode.json"
+{
+ "agent": {
+ "review": {
+ "disable": true
+ }
+ }
+}
+```
+
+---
+
+### Prompt
+
+Geben Sie mit der `prompt`-Konfiguration eine benutzerdefinierte Systemaufforderungsdatei für diese Agenten an. Die Eingabeaufforderungsdatei sollte Anweisungen enthalten, die speziell auf den Zweck des Agenten zugeschnitten sind.
+
+```json title="opencode.json"
+{
+ "agent": {
+ "review": {
+ "prompt": "{file:./prompts/code-review.txt}"
+ }
+ }
+}
+```
+
+Dieser Pfad ist relativ zum Speicherort der Konfigurationsdatei. Dies funktioniert sowohl für die globale OpenCode-Konfiguration als auch für die projektspezifische Konfiguration.
+
+---
+
+### Modell
+
+Verwenden Sie die `model`-Konfiguration, um das Modell für diese Agenten zu überschreiben. Nützlich für die Verwendung verschiedener Modelle, die für verschiedene Aufgaben optimiert sind. Zum Beispiel ein schnelleres Modell für die Planung, ein leistungsfähigeres Modell für die Umsetzung.
+
+:::tip
+Wenn Sie kein Modell angeben, verwenden Sie den primären Agenten [model globally configured](/docs/config#models), während die Subagenten das Modell des primären Agenten verwenden, der den Subagenten aufgerufen hat.
+:::
+
+```json title="opencode.json"
+{
+ "agent": {
+ "plan": {
+ "model": "anthropic/claude-haiku-4-20250514"
+ }
+ }
+}
+```
+
+Das Modell ID in Ihrer OpenCode-Konfiguration verwendet das Format `provider/model-id`. Wenn Sie beispielsweise [OpenCode Zen](/docs/zen) verwenden, würden Sie `opencode/gpt-5.1-codex` für GPT 5.1 Codex verwenden.
+
+---
+
+### Tools
+
+Steuern Sie mit der `tools`-Konfiguration, welche Tools in diesem Agent verfügbar sind. Sie können bestimmte Tools aktivieren oder deaktivieren, indem Sie sie auf `true` oder `false` setzen.
+
+```json title="opencode.json" {3-6,9-12}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "tools": {
+ "write": true,
+ "bash": true
+ },
+ "agent": {
+ "plan": {
+ "tools": {
+ "write": false,
+ "bash": false
+ }
+ }
+ }
+}
+```
+
+:::note
+Die agentenspezifische Konfiguration überschreibt die globale Konfiguration.
+:::
+
+Sie können Platzhalter auch verwenden, um mehrere Werkzeuge gleichzeitig zu steuern. So deaktivieren Sie beispielsweise alle Tools von einem MCP-Server:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "agent": {
+ "readonly": {
+ "tools": {
+ "mymcp_*": false,
+ "write": false,
+ "edit": false
+ }
+ }
+ }
+}
+```
+
+[Learn more about tools](/docs/tools).
+
+---
+
+### Permissions
+
+Sie können Berechtigungen konfigurieren, um zu verwalten, welche Aktionen ein Agent ausführen kann. Derzeit können die Berechtigungen für die Tools `edit`, `bash` und `webfetch` wie folgt konfiguriert werden:
+
+- `"ask"` – Bitten Sie um Genehmigung, bevor Sie das Tool ausführen
+- `"allow"` – Alle Vorgänge ohne Genehmigung zulassen
+- `"deny"` – Deaktivieren Sie das Tool
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "edit": "deny"
+ }
+}
+```
+
+Sie können diese Berechtigungen pro Agent überschreiben.
+
+```json title="opencode.json" {3-5,8-10}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "edit": "deny"
+ },
+ "agent": {
+ "build": {
+ "permission": {
+ "edit": "ask"
+ }
+ }
+ }
+}
+```
+
+Sie können Berechtigungen auch in Markdown-Agenten festlegen.
+
+```markdown title="~/.config/opencode/agents/review.md"
+---
+description: Code review without edits
+mode: subagent
+permission:
+ edit: deny
+ bash:
+ "*": ask
+ "git diff": allow
+ "git log*": allow
+ "grep *": allow
+ webfetch: deny
+---
+
+Only analyze code and suggest changes.
+```
+
+Sie können Berechtigungen für bestimmte Bash-Befehle festlegen.
+
+```json title="opencode.json" {7}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "agent": {
+ "build": {
+ "permission": {
+ "bash": {
+ "git push": "ask",
+ "grep *": "allow"
+ }
+ }
+ }
+ }
+}
+```
+
+Dies kann ein Kugelmuster annehmen.
+
+```json title="opencode.json" {7}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "agent": {
+ "build": {
+ "permission": {
+ "bash": {
+ "git *": "ask"
+ }
+ }
+ }
+ }
+}
+```
+
+Und Sie können den Platzhalter `*` auch verwenden, um Berechtigungen für alle Befehle zu verwalten.
+Da die letzte übereinstimmende Regel Vorrang hat, setzen Sie zuerst den Platzhalter `*` und danach bestimmte Regeln.
+
+```json title="opencode.json" {8}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "agent": {
+ "build": {
+ "permission": {
+ "bash": {
+ "*": "ask",
+ "git status *": "allow"
+ }
+ }
+ }
+ }
+}
+```
+
+[Learn more about permissions](/docs/permissions).
+
+---
+
+### Mode
+
+Steuern Sie den Modus des Agenten mit der `mode`-Konfiguration. Mit der Option `mode` wird festgelegt, wie der Agent verwendet werden kann.
+
+```json title="opencode.json"
+{
+ "agent": {
+ "review": {
+ "mode": "subagent"
+ }
+ }
+}
+```
+
+Die Option `mode` kann auf `primary`, `subagent` oder `all` gesetzt werden. Wenn kein `mode` angegeben ist, wird standardmäßig `all` verwendet.
+
+---
+
+### Hidden
+
+Verstecken Sie einen Subagenten im Autovervollständigungsmenü `@` mit `hidden: true`. Nützlich für interne Subagenten, die nur programmgesteuert von anderen Agenten über das Task-Tool aufgerufen werden sollten.
+
+```json title="opencode.json"
+{
+ "agent": {
+ "internal-helper": {
+ "mode": "subagent",
+ "hidden": true
+ }
+ }
+}
+```
+
+Dies wirkt sich nur auf die Benutzersichtbarkeit im Autovervollständigungsmenü aus. Versteckte Agenten können weiterhin vom Modell über das Aufgabentool aufgerufen werden, sofern die Berechtigungen dies zulassen.
+
+:::note
+Gilt nur für `mode: subagent`-Agenten.
+:::
+
+---
+
+### Aufgabenberechtigungen
+
+Steuern Sie, welche Subagenten ein Agent über das Task-Tool mit `permission.task` aufrufen kann. Verwendet Glob-Muster für eine flexible Zuordnung.
+
+```json title="opencode.json"
+{
+ "agent": {
+ "orchestrator": {
+ "mode": "primary",
+ "permission": {
+ "task": {
+ "*": "deny",
+ "orchestrator-*": "allow",
+ "code-reviewer": "ask"
+ }
+ }
+ }
+ }
+}
+```
+
+Bei der Einstellung `deny` wird der Subagent vollständig aus der Beschreibung des Aufgabentools entfernt, sodass das Modell nicht versucht, ihn aufzurufen.
+
+:::tip
+Die Regeln werden der Reihe nach ausgewertet und die **letzte übereinstimmende Regel gewinnt**. Im obigen Beispiel entspricht `orchestrator-planner` sowohl `*` (verweigern) als auch `orchestrator-*` (zulassen), aber da `orchestrator-*` nach `*` kommt, ist das Ergebnis `allow`.
+:::
+
+:::tip
+Benutzer können jeden Subagenten immer direkt über das Autovervollständigungsmenü `@` aufrufen, auch wenn die Aufgabenberechtigungen des Agenten sterben würden.
+:::
+
+---
+
+### Color
+
+Passen Sie das visuelle Erscheinungsbild des Agenten im UI mit der Option `color` an. Dies wirkt sich darauf aus, wie der Agent in der Benutzeroberfläche angezeigt wird.
+
+Verwenden Sie eine gültige Hex-Farbe (e.g., `#FF5733`) oder Designfarbe: `primary`, `secondary`, `accent`, `success`, `warning`, `error`, `info`.
+
+```json title="opencode.json"
+{
+ "agent": {
+ "creative": {
+ "color": "#ff6b6b"
+ },
+ "code-reviewer": {
+ "color": "accent"
+ }
+ }
+}
+```
+
+---
+
+### Top P
+
+Steuern Sie die Antwortvielfalt mit der Option `top_p`. Alternative zur Temperatur zur Kontrolle des Zufalls.
+
+```json title="opencode.json"
+{
+ "agent": {
+ "brainstorm": {
+ "top_p": 0.9
+ }
+ }
+}
+```
+
+Die Werte reichen von 0.0 bis 1.0. Die meisten Werte sind fokussierter, die höheren Werte vielfältiger.
+
+---
+
+### Additional
+
+Alle anderen Optionen, die Sie in Ihrer Agentenkonfiguration angeben, werden als Modelloptionen **direkt** an den Anbieter weitergeleitet. Dadurch können Sie anbieterspezifische Funktionen und Parameter nutzen.
+
+Mit den Argumentationsmodellen von OpenAI können Sie beispielsweise den Argumentationsaufwand steuern:
+
+```json title="opencode.json" {6,7}
+{
+ "agent": {
+ "deep-thinker": {
+ "description": "Agent that uses high reasoning effort for complex problems",
+ "model": "openai/gpt-5",
+ "reasoningEffort": "high",
+ "textVerbosity": "low"
+ }
+ }
+}
+```
+
+Diese zusätzlichen Optionen sind modell- und anbieterspezifisch. Überprüfen Sie die Dokumentation Ihres Anbieters auf verfügbare Parameter.
+
+:::tip
+Führen Sie `opencode models` aus, um eine Liste der verfügbaren Modelle anzubieten.
+:::
+
+---
+
+## Erstellen Sie Agenten
+
+Mit dem folgenden Befehl können Sie neue Agenten erstellen:
+
+```bash
+opencode agent create
+```
+
+Dieser interaktive Befehl führt zu Folgendem:
+
+1. Fragen Sie, wo der Agent gespeichert werden soll. global oder projektspezifisch.
+2. Beschreibung dessen, was der Agent tun soll.
+3. Generieren Sie eine entsprechende Systemaufforderung und -kennung.
+4. Hier können Sie auswählen, auf welche Tools der Agent zugreifen kann.
+5. Erstellen Sie abschließend eine Markdown-Datei mit der Agentenkonfiguration.
+
+---
+
+## Anwendungsfälle
+
+Hier sind einige häufige Anwendungsfälle für verschiedene Agenten.
+
+- **Build-Agent**: Vollständige Entwicklungsarbeit mit allen aktivierten Tools
+- **Planagent**: Analyse und Planung ohne Änderungen
+- **Review-Agent**: Codeüberprüfung mit schreibgeschütztem Zugriff plus Dokumentationstools
+- **Debug-Agent**: Konzentriert sich auf die Untersuchung mit aktivierten Bash- und Lesetools
+- **Docs-Agent**: Schreiben von Dokumentationen mit Dateioperationen, aber ohne Systembefehle
+
+---
+
+## Examples
+
+Hier sind einige Beispielagenten, die für Sie nützlich sein könnten.
+
+:::tip
+Haben Sie einen Agenten, den Sie gerne teilen möchten? [Submit a PR](https://github.com/anomalyco/opencode).
+:::
+
+---
+
+### Dokumentationsagent
+
+```markdown title="~/.config/opencode/agents/docs-writer.md"
+---
+description: Writes and maintains project documentation
+mode: subagent
+tools:
+ bash: false
+---
+
+You are a technical writer. Create clear, comprehensive documentation.
+
+Focus on:
+
+- Clear explanations
+- Proper structure
+- Code examples
+- User-friendly language
+```
+
+---
+
+### Sicherheitsprüfer
+
+```markdown title="~/.config/opencode/agents/security-auditor.md"
+---
+description: Performs security audits and identifies vulnerabilities
+mode: subagent
+tools:
+ write: false
+ edit: false
+---
+
+You are a security expert. Focus on identifying potential security issues.
+
+Look for:
+
+- Input validation vulnerabilities
+- Authentication and authorization flaws
+- Data exposure risks
+- Dependency vulnerabilities
+- Configuration security issues
+```
diff --git a/packages/web/src/content/docs/de/cli.mdx b/packages/web/src/content/docs/de/cli.mdx
new file mode 100644
index 000000000..eccddc6c0
--- /dev/null
+++ b/packages/web/src/content/docs/de/cli.mdx
@@ -0,0 +1,601 @@
+---
+title: CLI
+description: OpenCode CLI Optionen und Befehle.
+---
+
+import { Tabs, TabItem } from "@astrojs/starlight/components"
+
+Der OpenCode CLI startet standardmäßig den [TUI](/docs/tui), wenn er ohne Argumente ausgeführt wird.
+
+```bash
+opencode
+```
+
+Es akzeptiert aber auch Befehle, wie auf dieser Seite dokumentiert. Dadurch können Sie programmgesteuert mit OpenCode interagieren.
+
+```bash
+opencode run "Explain how closures work in JavaScript"
+```
+
+---
+
+### tui
+
+Starten Sie die Terminalbenutzeroberfläche OpenCode.
+
+```bash
+opencode [project]
+```
+
+#### Flaggen
+
+| Flagge | Kurz | Beschreibung |
+| ------------ | ----- | ------------------------------------------ |
+| `--continue` | `-c` | Setzen Sie die letzte Sitzung fort |
+| `--session` | `-s` | Sitzung ID zum Fortfahren |
+| `--prompt` | | Zur Verwendung auffordern |
+| `--model` | `-m` | Zu verwendendes Modell in der Form provider/model |
+| `--agent` | | Zu verwendender Agent |
+| `--port` | | Port zum Abhören |
+| `--hostname` | | Hostname zum Abhören |
+
+---
+
+## Befehle
+
+Der OpenCode CLI verfügt außerdem über die folgenden Befehle.
+
+---
+
+### agent
+
+Agenten für OpenCode verwalten.
+
+```bash
+opencode agent [command]
+```
+
+---
+
+### attach
+
+Schließen Sie ein Terminal an einen bereits laufenden OpenCode-Backend-Server an, der über die Befehle `serve` oder `web` gestartet wurde.
+
+```bash
+opencode attach [url]
+```
+
+Dies ermöglicht die Verwendung von TUI mit einem Remote-Backend OpenCode. Zum Beispiel:
+
+```bash
+# Start the backend server for web/mobile access
+opencode web --port 4096 --hostname 0.0.0.0
+
+# In another terminal, attach the TUI to the running backend
+opencode attach http://10.20.30.40:4096
+```
+
+#### Flaggen
+
+| Flagge | Kurz | Beschreibung |
+| ----------- | ----- | --------------------------------- |
+| `--dir` | | Arbeitsverzeichnis zum Starten von TUI in |
+| `--session` | `-s` | Sitzung ID zum Fortfahren |
+
+---
+
+#### create
+
+Erstellen Sie einen neuen Agenten mit benutzerdefinierter Konfiguration.
+
+```bash
+opencode agent create
+```
+
+Dieser Befehl führt Sie durch die Erstellung eines neuen Agenten mit einer benutzerdefinierten Systemeingabeaufforderung und Toolkonfiguration.
+
+---
+
+#### list
+
+Hören Sie sich alle verfügbaren Agenten an.
+
+```bash
+opencode agent list
+```
+
+---
+
+### auth
+
+Befehl zum Verwalten von Anmeldeinformationen und Anmelden für Anbieter.
+
+```bash
+opencode auth [command]
+```
+
+---
+
+#### login
+
+OpenCode wird von der Anbieterliste bei [Models.dev](https://models.dev) unterstützt, sodass Sie `opencode auth login` verwenden können, um API-Schlüssel für jeden Anbieter zu konfigurieren, den Sie verwenden möchten. Dies wird in `~/.local/share/opencode/auth.json` gespeichert.
+
+```bash
+opencode auth login
+```
+
+Wenn OpenCode startet, lädt es den Anbieter aus der Anmeldeinformationsdatei. Und ob in Ihren Umgebungen Schlüssel sind oder in Ihrem Projekt eine `.env`-Datei vorhanden ist.
+
+---
+
+#### list
+
+Listet alle authentifizierten Anbieter auf, wie in der Anmeldeinformationsdatei gespeichert.
+
+```bash
+opencode auth list
+```
+
+Oder die Kurzversion.
+
+```bash
+opencode auth ls
+```
+
+---
+
+#### logout
+
+Melden Sie sich von einem Anbieter ab, ohne dass es aus der Anmeldeinformationsdatei gelöscht wird.
+
+```bash
+opencode auth logout
+```
+
+---
+
+### github
+
+Verwalten Sie den GitHub-Agenten für die Repository-Automatisierung.
+
+```bash
+opencode github [command]
+```
+
+---
+
+#### installieren
+
+Installieren Sie den GitHub-Agenten in Ihrem Repository.
+
+```bash
+opencode github install
+```
+
+Dadurch wird der erforderliche GitHub-Aktionsworkflow eingerichtet und Sie durch den Konfigurationsprozess geführt. [Learn more](/docs/github).
+
+---
+
+#### laufen
+
+Führen Sie den GitHub-Agenten aus. Dies wird normalerweise in GitHub-Aktionen verwendet.
+
+```bash
+opencode github run
+```
+
+##### Flaggen
+
+| Flagge | Beschreibung |
+| --------- | -------------------------------------- |
+| `--event` | GitHub Scheinereignis zum Ausführen des Agenten für |
+| `--token` | GitHub persönliches Zugriffstoken |
+
+---
+
+### mcp
+
+Verwalten Sie den Model Context Protocol-Server.
+
+```bash
+opencode mcp [command]
+```
+
+---
+
+#### add
+
+Fügen Sie Ihrer Konfiguration einen MCP-Server hinzu.
+
+```bash
+opencode mcp add
+```
+
+Dieser Befehl führt Sie durch das Hinzufügen eines lokalen oder Remote-Servers MCP.
+
+---
+
+#### list
+
+Hören Sie sich alle konfigurierten MCP-Server und deren Verbindungsstatus an.
+
+```bash
+opencode mcp list
+```
+
+Oder nutzen Sie die Kurzversion.
+
+```bash
+opencode mcp ls
+```
+
+---
+
+#### auth
+
+Authentifizieren Sie sich mit einem OAuth-fähigen MCP-Server.
+
+```bash
+opencode mcp auth [name]
+```
+
+Wenn Sie keinen Servernamen angeben, werden Sie autorisiert, einen der verfügbaren OAuth-fähigen Server auszuwählen.
+
+Sie können auch OAuth-fähige Server und deren Authentifizierungsstatus auflisten.
+
+```bash
+opencode mcp auth list
+```
+
+Oder nutzen Sie die Kurzversion.
+
+```bash
+opencode mcp auth ls
+```
+
+---
+
+#### logout
+
+Entfernen Sie OAuth-Anmeldeinformationen für einen MCP-Server.
+
+```bash
+opencode mcp logout [name]
+```
+
+---
+
+#### debug
+
+Beheben Sie OAuth-Verbindungsprobleme für einen MCP-Server.
+
+```bash
+opencode mcp debug
+```
+
+---
+
+### models
+
+Hören Sie sich alle verfügbaren Modelle der konfigurierten Anbieter an.
+
+```bash
+opencode models [provider]
+```
+
+Dieser Befehl zeigt alle bei Ihren konfigurierten Anbietern verfügbaren Modelle im Format `provider/model` an.
+
+Dies ist nützlich, um die genauen Modellnamen herauszufinden, die in [your config](/docs/config/) verwendet werden sollen.
+
+Sie können optional einen Anbieter ID übergeben, um Modelle nach diesem Anbieter zu filtern.
+
+```bash
+opencode models anthropic
+```
+
+#### Flaggen
+
+| Flagge | Beschreibung |
+| ----------- | ------------------------------------------------------------ |
+| `--refresh` | Aktualisieren Sie den Modellcache von models.dev |
+| `--verbose` | Verwenden Sie eine ausführlichere Modellausgabe (einschließlich Metadaten wie Kosten) |
+
+Verwenden Sie das Flag `--refresh`, um die zwischengespeicherte Modellliste zu aktualisieren. Dies ist nützlich, wenn einem Anbieter neue Modelle hinzugefügt wurden und Sie diese in OpenCode sehen möchten.
+
+```bash
+opencode models --refresh
+```
+
+---
+
+### laufen
+
+Führen Sie Opencode im nicht interaktiven Modus aus, indem Sie direkt eine Eingabeaufforderung übergeben.
+
+```bash
+opencode run [message..]
+```
+
+Dies ist nützlich für die Skripterstellung, die Automatisierung oder wenn Sie eine schnelle Antwort wünschen, ohne den vollständigen TUI zu starten. Zum Beispiel.
+
+```bash "opencode run"
+opencode run Explain the use of context in Go
+```
+
+Sie können auch eine Verbindung zu einer laufenden `opencode serve`-Instanz herstellen, um bei jedem Lauf Kaltstartzeiten für den MCP-Server zu vermeiden:
+
+```bash
+# Start a headless server in one terminal
+opencode serve
+
+# In another terminal, run commands that attach to it
+opencode run --attach http://localhost:4096 "Explain async/await in JavaScript"
+```
+
+#### Flaggen
+
+| Flagge | Kurz | Beschreibung |
+| ------------ | ----- | ------------------------------------------------------------------ |
+| `--command` | | Der auszuführende Befehl: Nachricht für args | verwenden
+| `--continue` | `-c` | Setzen Sie die letzte Sitzung fort |
+| `--session` | `-s` | Sitzung ID zum Fortfahren |
+| `--share` | | Teilen Sie die Sitzung |
+| `--model` | `-m` | Zu verwendendes Modell in der Form provider/model |
+| `--agent` | | Zu verwendender Agent |
+| `--file` | `-f` | Datei(en) zum Anhängen an die Nachricht |
+| `--format` | | Format: Standard (formatiert) oder JSON (rohe JSON-Ereignisse) |
+| `--title` | | Titel für die Sitzung (verwendet eine verkürzte Eingabeaufforderung, wenn kein Wert angegeben wird) |
+| `--attach` | | An einen laufenden Opencode-Server anschließen (e.g., http://localhost:4096) |
+| `--port` | | Port für den lokalen Server (standardmäßig zufälliger Port) |
+
+---
+
+### serve
+
+Starten Sie einen Headless-OpenCode-Server für den API-Zugriff. Sehen Sie sich [server docs](/docs/server) für die vollständige HTTP-Schnittstelle an.
+
+```bash
+opencode serve
+```
+
+Dadurch wird ein HTTP-Server gestartet, der API-Zugriff auf Opencode-Funktionalität ohne die TUI-Schnittstelle bietet. Legen Sie `OPENCODE_SERVER_PASSWORD` fest, um die HTTP-Basisauthentifizierung zu aktivieren (Benutzername ist standardmäßig `opencode`).
+
+#### Flaggen
+
+| Flagge | Beschreibung |
+| ------------ | ------------------------------------------ |
+| `--port` | Port zum Abhören |
+| `--hostname` | Hostname zum Abhören |
+| `--mdns` | mDNS-Erkennung aktivieren |
+| `--cors` | Zusätzliche Browserursprung(e), um CORS | zulassen
+
+---
+
+### Sitzung
+
+Verwalten Sie OpenCode-Sitzungen.
+
+```bash
+opencode session [command]
+```
+
+---
+
+#### list
+
+Hören Sie sich alle OpenCode-Sitzungen an.
+
+```bash
+opencode session list
+```
+
+##### Flaggen
+
+| Flagge | Kurz | Beschreibung |
+| ------------- | ----- | ------------------------------------ |
+| `--max-count` | `-n` | Auf N letzte Sitzungen beschränken |
+| `--format` | | Ausgabeformat: Tabelle oder JSON (Tabelle) |
+
+---
+
+### stats
+
+Zeigen Sie Token-Nutzungs- und Kostenstatistiken für Ihre OpenCode-Sitzungen an.
+
+```bash
+opencode stats
+```
+
+#### Flaggen
+
+| Flagge | Beschreibung |
+| ----------- | --------------------------------------------------------------------------- |
+| `--days` | Statistiken für die letzten N Tage anzeigen (alle Zeiten) |
+| `--tools` | Anzahl der angebotenen Werkzeuge (alle) |
+| `--models` | Aufschlüsselung der Modellnutzung anzeigen (standardmäßig ausgeblendet). Übergeben Sie eine Zahl, um das obere N | .
+| `--project` | Nach Projekt filtern (alle Projekte, leere Zeichenfolge: aktuelles Projekt) |
+
+---
+
+### export
+
+Sitzungsdaten als JSON exportieren.
+
+```bash
+opencode export [sessionID]
+```
+
+Wenn Sie keine Sitzung ID angeben, werden Sie berechtigt, eine der verfügbaren Sitzungen auszuwählen.
+
+---
+
+### import
+
+Importieren Sie Sitzungsdaten aus einer JSON-Datei oder einer OpenCode-Freigabe URL.
+
+```bash
+opencode import
+```
+
+Sie können aus einer lokalen Datei oder einer OpenCode-Freigabe URL importieren.
+
+```bash
+opencode import session.json
+opencode import https://opncd.ai/s/abc123
+```
+
+---
+
+### web
+
+Starten Sie einen Headless-OpenCode-Server mit einer Weboberfläche.
+
+```bash
+opencode web
+```
+
+Dadurch wird ein HTTP-Server gestartet und ein Webbrowser geöffnet, um über eine Webschnittstelle auf OpenCode zuzugreifen. Legen Sie `OPENCODE_SERVER_PASSWORD` fest, um die HTTP-Basisauthentifizierung zu aktivieren (Benutzername ist standardmäßig `opencode`).
+
+#### Flaggen
+
+| Flagge | Beschreibung |
+| ------------ | ------------------------------------------ |
+| `--port` | Port zum Abhören |
+| `--hostname` | Hostname zum Abhören |
+| `--mdns` | mDNS-Erkennung aktivieren |
+| `--cors` | Zusätzliche Browserursprung(e), um CORS | zulassen
+
+---
+
+### acp
+
+Starten Sie einen ACP-Server (Agent Client Protocol).
+
+```bash
+opencode acp
+```
+
+Dieser Befehl startet einen ACP-Server, der über stdin/stdout mit nd-JSON kommuniziert.
+
+#### Flaggen
+
+| Flagge | Beschreibung |
+| ------------ | --------------------- |
+| `--cwd` | Arbeitsverzeichnis |
+| `--port` | Port zum Abhören |
+| `--hostname` | Hostname zum Abhören |
+
+---
+
+### uninstall
+
+Deinstallieren Sie OpenCode und entfernen Sie alle zugehörigen Dateien.
+
+```bash
+opencode uninstall
+```
+
+#### Flaggen
+
+| Flagge | Kurz | Beschreibung |
+| --------------- | ----- | ------------------------------------------- |
+| `--keep-config` | `-c` | Konfigurationsdateien behalten |
+| `--keep-data` | `-d` | Sitzungsdaten und Snapshots aufbewahren |
+| `--dry-run` | | Zeigt, was entfernt werden würde, ohne | zu entfernen
+| `--force` | `-f` | Bestätigungsaufforderungen überspringen |
+
+---
+
+### upgrade
+
+Aktualisiert Opencode auf die neueste Version oder eine bestimmte Version.
+
+```bash
+opencode upgrade [target]
+```
+
+Um auf die neueste Version zu aktualisieren.
+
+```bash
+opencode upgrade
+```
+
+Um auf eine bestimmte Version zu aktualisieren.
+
+```bash
+opencode upgrade v0.1.48
+```
+
+#### Flaggen
+
+| Flagge | Kurz | Beschreibung |
+| ---------- | ----- | ----------------------------------------------------------------- |
+| `--method` | `-m` | Die verwendete Installationsmethode; Curl, NPM, PNPM, Brötchen, Brauen |
+
+---
+
+## Globale Flaggen
+
+Der Opencode CLI akzeptiert die folgenden globalen Flags.
+
+| Flagge | Kurz | Beschreibung |
+| -------------- | ----- | ------------------------------------ |
+| `--help` | `-h` | Hilfe anzeigen |
+| `--version` | `-v` | Versionsnummer drucken |
+| `--print-logs` | | Protokolle nach Standard drucken |
+| `--log-level` | | Protokollebene (DEBUG, INFO, WARN, ERROR) |
+
+---
+
+## Umgebungsvariablen
+
+OpenCode kann mithilfe von Umgebungsvariablen konfiguriert werden.
+
+| Variable | Geben Sie | eine Beschreibung |
+| ------------------------------------- | ------- | ------------------------------------------------- |
+| `OPENCODE_AUTO_SHARE` | boolescher Wert | Sitzungen automatisch teilen |
+| `OPENCODE_GIT_BASH_PATH` | Zeichenfolge | Pfad zur ausführbaren Git Bash-Datei unter Windows |
+| `OPENCODE_CONFIG` | Zeichenfolge | Pfad zur Konfigurationsdatei |
+| `OPENCODE_CONFIG_DIR` | Zeichenfolge | Pfad zum Konfigurationsverzeichnis |
+| `OPENCODE_CONFIG_CONTENT` | Zeichenfolge | Inline-JSON-Konfigurationsinhalt |
+| `OPENCODE_DISABLE_AUTOUPDATE` | boolescher Wert | Automatische Update-Prüfungen deaktivieren |
+| `OPENCODE_DISABLE_PRUNE` | boolescher Wert | Bereinigung alter Daten deaktivieren |
+| `OPENCODE_DISABLE_TERMINAL_TITLE` | boolescher Wert | Deaktivieren Sie die automatische Aktualisierung von Terminaltiteln |
+| `OPENCODE_PERMISSION` | Zeichenfolge | Inline-JSON-Berechtigungskonfiguration |
+| `OPENCODE_DISABLE_DEFAULT_PLUGINS` | boolescher Wert | Standard-Plugins deaktivieren |
+| `OPENCODE_DISABLE_LSP_DOWNLOAD` | boolescher Wert | Automatische LSP-Server-Downloads deaktivieren |
+| `OPENCODE_ENABLE_EXPERIMENTAL_MODELS` | boolescher Wert | Experimentelle Modelle aktivieren |
+| `OPENCODE_DISABLE_AUTOCOMPACT` | boolescher Wert | Automatische Kontextkomprimierung deaktivieren |
+| `OPENCODE_DISABLE_CLAUDE_CODE` | boolescher Wert | Deaktivieren Sie das Lesen von `.claude` (Eingabeaufforderung + Fähigkeiten) |
+| `OPENCODE_DISABLE_CLAUDE_CODE_PROMPT` | boolescher Wert | Deaktivieren Sie das Lesen von `~/.claude/CLAUDE.md` |
+| `OPENCODE_DISABLE_CLAUDE_CODE_SKILLS` | boolescher Wert | Deaktivieren Sie das Laden von `.claude/skills` |
+| `OPENCODE_DISABLE_MODELS_FETCH` | boolescher Wert | Deaktivieren Sie das gesammelte Modell von Remote-Quellen |
+| `OPENCODE_FAKE_VCS` | Zeichenfolge | Gefälschter VCS-Anbieter zu Testzwecken |
+| `OPENCODE_DISABLE_FILETIME_CHECK` | boolescher Wert | Dateizeitprüfung zur Optimierung deaktivieren |
+| `OPENCODE_CLIENT` | Zeichenfolge | Client-ID (standardmäßig `cli`) |
+| `OPENCODE_ENABLE_EXA` | boolescher Wert | Exa-Websuchtools aktivieren |
+| `OPENCODE_SERVER_PASSWORD` | Zeichenfolge | Aktivieren Sie die Basisauthentifizierung für `serve`/`web` |
+| `OPENCODE_SERVER_USERNAME` | Zeichenfolge | Benutzernamen für die Basisauthentifizierung überschreiben (Standard `opencode`) |
+| `OPENCODE_MODELS_URL` | Zeichenfolge | Benutzerdefinierte URL zum Erhalten der Modellkonfiguration |
+
+---
+
+### Experimental
+
+Diese Umgebungsvariablen ermöglichen experimentelle Funktionen, die sich ändern oder entfernen können.
+
+| Variable | Geben Sie | eine Beschreibung |
+| ----------------------------------------------- | ------- | --------------------------------------- |
+| `OPENCODE_EXPERIMENTAL` | boolescher Wert | Alle experimentellen Funktionen aktivieren |
+| `OPENCODE_EXPERIMENTAL_ICON_DISCOVERY` | boolescher Wert | Symbolerkennung aktivieren |
+| `OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT` | boolescher Wert | Kopieren bei Auswahl in TUI | deaktivieren
+| `OPENCODE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS` | Zahl | Standard-Timeout für Bash-Befehle in ms |
+| `OPENCODE_EXPERIMENTAL_OUTPUT_TOKEN_MAX` | Zahl | Maximale Ausgabetokens für LLM-Antworten |
+| `OPENCODE_EXPERIMENTAL_FILEWATCHER` | boolescher Wert | Dateiüberwachung für das gesamte Verzeichnis aktivieren |
+| `OPENCODE_EXPERIMENTAL_OXFMT` | boolescher Wert | Oxfmt-Formatierer aktivieren |
+| `OPENCODE_EXPERIMENTAL_LSP_TOOL` | boolescher Wert | Experimentelles LSP-Tool aktivieren |
+| `OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER` | boolescher Wert | Dateiüberwachung deaktivieren |
+| `OPENCODE_EXPERIMENTAL_EXA` | boolescher Wert | Experimentelle Exa-Funktionen aktivieren |
+| `OPENCODE_EXPERIMENTAL_LSP_TY` | boolescher Wert | Experimentelle LSP-Typprüfung aktivieren |
+| `OPENCODE_EXPERIMENTAL_MARKDOWN` | boolescher Wert | Experimentelle Markdown-Funktionen aktivieren |
+| `OPENCODE_EXPERIMENTAL_PLAN_MODE` | boolescher Wert | Planmodus aktivieren |
diff --git a/packages/web/src/content/docs/de/commands.mdx b/packages/web/src/content/docs/de/commands.mdx
new file mode 100644
index 000000000..4a9731a01
--- /dev/null
+++ b/packages/web/src/content/docs/de/commands.mdx
@@ -0,0 +1,323 @@
+---
+title: Befehle
+description: Erstellen Sie benutzerdefinierte Befehle für sich wiederholende Aufgaben.
+---
+
+Mit benutzerdefinierten Befehlen können Sie eine Eingabeaufforderung angeben, die ausgeführt werden soll, wenn dieser Befehl im TUI ausgeführt wird.
+
+```bash frame="none"
+/my-command
+```
+
+Benutzerdefinierte Befehle gibt es zusätzlich zu den integrierten Befehlen wie `/init`, `/undo`, `/redo`, `/share`, `/help`. [Learn more](/docs/tui#commands).
+
+---
+
+## Befehlsdateien erstellen
+
+Erstellen Sie Markdown-Dateien im Verzeichnis `commands/`, um benutzerdefinierte Befehle zu definieren.
+
+Erstellen Sie `.opencode/commands/test.md`:
+
+```md title=".opencode/commands/test.md"
+---
+description: Run tests with coverage
+agent: build
+model: anthropic/claude-3-5-sonnet-20241022
+---
+
+Run the full test suite with coverage report and show any failures.
+Focus on the failing tests and suggest fixes.
+```
+
+Der Frontmatter definiert Befehlseigenschaften. Der Inhalt wird zur Vorlage.
+
+Verwenden Sie den Befehl, indem Sie `/` folgen vom Befehlsnamen eingeben.
+
+```bash frame="none"
+"/test"
+```
+
+---
+
+## Konfigurieren
+
+Sie können benutzerdefinierte Befehle über die OpenCode-Konfiguration hinzufügen oder indem Sie Markdown-Dateien im Verzeichnis `commands/` erstellen.
+
+---
+
+### JSON
+
+Verwenden Sie die Option `command` in Ihrem OpenCode [config](/docs/config):
+
+```json title="opencode.jsonc" {4-12}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "command": {
+ // This becomes the name of the command
+ "test": {
+ // This is the prompt that will be sent to the LLM
+ "template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes.",
+ // This is shown as the description in the TUI
+ "description": "Run tests with coverage",
+ "agent": "build",
+ "model": "anthropic/claude-3-5-sonnet-20241022"
+ }
+ }
+}
+```
+
+Jetzt können Sie diesen Befehl im TUI ausführen:
+
+```bash frame="none"
+/test
+```
+
+---
+
+### Markdown
+
+Sie können Befehle auch mithilfe von Markdown-Dateien definieren. Platzieren Sie sie in:
+
+- Global: `~/.config/opencode/commands/`
+- Pro Projekt: `.opencode/commands/`
+
+```markdown title="~/.config/opencode/commands/test.md"
+---
+description: Run tests with coverage
+agent: build
+model: anthropic/claude-3-5-sonnet-20241022
+---
+
+Run the full test suite with coverage report and show any failures.
+Focus on the failing tests and suggest fixes.
+```
+
+Der Name der Markdown-Datei wird zum Befehlsnamen. Zum Beispiel `test.md` lässt
+Du läufst:
+
+```bash frame="none"
+/test
+```
+
+---
+
+## Prompt-Konfiguration
+
+Die Eingabeaufforderungen für die benutzerdefinierten Befehle unterstützen mehrere spezielle Platzhalter und Syntax.
+
+---
+
+### Arguments
+
+Übergeben Sie Argumente an Befehle mithilfe des Platzhalters `$ARGUMENTS`.
+
+```md title=".opencode/commands/component.md"
+---
+description: Create a new component
+---
+
+Create a new React component named $ARGUMENTS with TypeScript support.
+Include proper typing and basic structure.
+```
+
+Führen Sie den Befehl mit Argumenten aus:
+
+```bash frame="none"
+/component Button
+```
+
+Und `$ARGUMENTS` wird durch `Button` ersetzt.
+
+Sie können auch über Positionsparameter auf einzelne Argumente zugreifen:
+
+- `$1` – Erstes Argument
+- `$2` – Zweites Argument
+- `$3` – Drittes Argument
+- Und so weiter...
+
+Zum Beispiel:
+
+```md title=".opencode/commands/create-file.md"
+---
+description: Create a new file with content
+---
+
+Create a file named $1 in the directory $2
+with the following content: $3
+```
+
+Führen Sie den Befehl aus:
+
+```bash frame="none"
+/create-file config.json src "{ \"key\": \"value\" }"
+```
+
+Dies ersetzt:
+
+- `$1` mit `config.json`
+- `$2` mit `src`
+- `$3` mit `{ "key": "value" }`
+
+---
+
+### Shell-Ausgabe
+
+Verwenden Sie _!`command`_, um die Ausgabe [bash command](/docs/tui#bash-commands) in Ihre Eingabeaufforderung einzufügen.
+
+So erstellen Sie beispielsweise einen benutzerdefinierten Befehl, der die Testabdeckung analysiert:
+
+```md title=".opencode/commands/analyze-coverage.md"
+---
+description: Analyze test coverage
+---
+
+Here are the current test results:
+!`npm test`
+
+Based on these results, suggest improvements to increase coverage.
+```
+
+Oder um die letzten Änderungen zu überprüfen:
+
+```md title=".opencode/commands/review-changes.md"
+---
+description: Review recent changes
+---
+
+Recent git commits:
+!`git log --oneline -10`
+
+Review these changes and suggest any improvements.
+```
+
+Befehle werden im Stammverzeichnis Ihres Projekts ausgeführt und ihre Ausgabe wird Teil der Eingabeaufforderung.
+
+---
+
+### Dateiverweise
+
+Fügen Sie Dateien in Ihren Befehl ein, indem Sie `@` folgend vom Dateinamen verwenden.
+
+```md title=".opencode/commands/review-component.md"
+---
+description: Review component
+---
+
+Review the component in @src/components/Button.tsx.
+Check for performance issues and suggest improvements.
+```
+
+Der Dateiinhalt wird automatisch in die Eingabeaufforderung einbezogen.
+
+---
+
+## Options
+
+Schauen wir uns die Konfigurationsmöglichkeiten im Detail an.
+
+---
+
+### Template
+
+Die Option `template` die Eingabeaufforderung, die an LLM gesendet wird, wenn der Befehl ausgeführt wird.
+
+```json title="opencode.json"
+{
+ "command": {
+ "test": {
+ "template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes."
+ }
+ }
+}
+```
+
+Dies ist eine **erforderliche** Konfigurationsoption.
+
+---
+
+### Beschreibung
+
+Verwenden Sie die Option `description`, um eine kurze Beschreibung der Funktion des Befehls bereitzustellen.
+
+```json title="opencode.json"
+{
+ "command": {
+ "test": {
+ "description": "Run tests with coverage"
+ }
+ }
+}
+```
+
+Dies wird als Beschreibung im TUI angezeigt, wenn Sie den Befehl eingeben.
+
+---
+
+### Agent
+
+Verwenden Sie die `agent`-Konfiguration, um optional anzugeben, welche [agent](/docs/agents) diesen Befehl ausführen soll.
+Wenn es sich um einen [subagent](/docs/agents/#subagents) handelt, löst der Befehl standardmäßig einen Subagentenaufruf aus.
+Um dieses Verhalten zu deaktivieren, setzen Sie `subtask` auf `false`.
+
+```json title="opencode.json"
+{
+ "command": {
+ "review": {
+ "agent": "plan"
+ }
+ }
+}
+```
+
+Dies ist eine **optionale** Konfigurationsoption. Wenn nicht angegeben, wird standardmäßig Ihr aktueller Agent verwendet.
+
+---
+
+### Subtask
+
+Verwenden Sie den booleschen Wert `subtask`, um zu erzwingen, dass der Befehl einen [subagent](/docs/agents/#subagents)-Aufruf auslöst.
+Dies ist nützlich, wenn Sie möchten, dass der Befehl Ihren primären Kontext nicht verunreinigt und den Agenten dazu zwingt, als Subagent zu fungieren.
+auch wenn `mode` in der [agent](/docs/agents)-Konfiguration auf `primary` gesetzt ist.
+
+```json title="opencode.json"
+{
+ "command": {
+ "analyze": {
+ "subtask": true
+ }
+ }
+}
+```
+
+Dies ist eine **optionale** Konfigurationsoption.
+
+---
+
+### Modell
+
+Verwenden Sie die `model`-Konfiguration, um das Standardmodell für diesen Befehl zu überschreiben.
+
+```json title="opencode.json"
+{
+ "command": {
+ "analyze": {
+ "model": "anthropic/claude-3-5-sonnet-20241022"
+ }
+ }
+}
+```
+
+Dies ist eine **optionale** Konfigurationsoption.
+
+---
+
+## Eingebaut
+
+Opencode enthält mehrere integrierte Befehle wie `/init`, `/undo`, `/redo`, `/share`, `/help`; [learn more](/docs/tui#commands).
+
+:::note
+Benutzerdefinierte Befehle können integrierte Befehle überschreiben.
+:::
+
+Wenn Sie einen benutzerdefinierten Befehl mit demselben Namen definieren, überschreibt dieser den integrierten Befehl.
diff --git a/packages/web/src/content/docs/de/config.mdx b/packages/web/src/content/docs/de/config.mdx
new file mode 100644
index 000000000..e76e744b7
--- /dev/null
+++ b/packages/web/src/content/docs/de/config.mdx
@@ -0,0 +1,685 @@
+---
+title: Konfig
+description: Verwenden Sie die Konfiguration OpenCode JSON.
+---
+
+Sie können OpenCode mithilfe einer JSON-Konfigurationsdatei konfigurieren.
+
+---
+
+## Format
+
+OpenCode unterstützt die Formate **JSON** und **JSONC** (JSON mit Kommentaren).
+
+```jsonc title="opencode.jsonc"
+{
+ "$schema": "https://opencode.ai/config.json",
+ // Theme configuration
+ "theme": "opencode",
+ "model": "anthropic/claude-sonnet-4-5",
+ "autoupdate": true,
+}
+```
+
+---
+
+## Locations
+
+Sie können Ihre Konfiguration an verschiedenen Orten platzieren und sie haben eine
+andere Rangfolge.
+
+:::note
+Konfigurationsdateien werden **zusammengeführt**, nicht ersetzt.
+:::
+
+Konfigurationsdateien werden zusammengeführt und nicht ersetzt. Einstellungen aus den folgenden Konfigurationsspeicherorten werden kombiniert. Spätere Konfigurationen überschreiben frühere nur bei Schlüsselkonflikten. Es bleiben keine widersprüchlichen Einstellungen aus allen Konfigurationen erhalten.
+
+Wenn Ihre globale Konfiguration beispielsweise `theme: "opencode"` und `autoupdate: true` und Ihre Projektkonfiguration `model: "anthropic/claude-sonnet-4-5"` festlegt, umfasst die endgültige Konfiguration alle drei Einstellungen.
+
+---
+
+### Rangfolge
+
+Konfigurationsquellen werden in dieser Reihenfolge geladen (spätere Quellen überschreiben frühere):
+
+1. **Remote-Konfiguration** (von `.well-known/opencode`) – Organisationsstandards
+2. **Globale Konfiguration** (`~/.config/opencode/opencode.json`) – Benutzereinstellungen
+3. **Benutzerdefinierte Konfiguration** (`OPENCODE_CONFIG` env var) – benutzerdefinierte Überschreibungen
+4. **Projektkonfiguration** (`opencode.json` im Projekt) – projektspezifische Einstellungen
+5. **`.opencode` Verzeichnisse** – Agenten, Befehle, Plugins
+6. **Inline-Konfiguration** (`OPENCODE_CONFIG_CONTENT` env var) – Laufzeitüberschreibungen
+
+Dies bedeutet, dass Projektkonfigurationen globale Standardeinstellungen überschreiben können und globale Konfigurationen Remote-Organisationsstandards überschreiben können.
+
+:::note
+Die Verzeichnisse `.opencode` und `~/.config/opencode` verwenden **Pluralnamen** für Unterverzeichnisse: `agents/`, `commands/`, `modes/`, `plugins/`, `skills/`, `tools/` und `themes/`. Aus Gründen der Abwärtskompatibilität werden auch einzelne Namen (e.g., `agent/`) unterstützt.
+:::
+
+---
+
+### Remote
+
+Organisationen können die Standardkonfiguration über den Endpunkt `.well-known/opencode` bereitstellen. Dieser wird automatisch abgerufen, wenn Sie sich bei einem Anbieter authentifizieren, der dies unterstützt.
+
+Zuerst wird die Remote-Konfiguration geladen, die als Basisschicht dient. Alle anderen Konfigurationsquellen (global, Projekt) können diese Standardeinstellungen überschreiben.
+
+Wenn Ihre Organisation beispielsweise MCP-Server bereitstellt, sind die standardmäßig deaktiviert:
+
+```json title="Remote config from .well-known/opencode"
+{
+ "mcp": {
+ "jira": {
+ "type": "remote",
+ "url": "https://jira.example.com/mcp",
+ "enabled": false
+ }
+ }
+}
+```
+
+Sie können bestimmte Server in Ihrer lokalen Konfiguration aktivieren:
+
+```json title="opencode.json"
+{
+ "mcp": {
+ "jira": {
+ "type": "remote",
+ "url": "https://jira.example.com/mcp",
+ "enabled": true
+ }
+ }
+}
+```
+
+---
+
+### Global
+
+Platzieren Sie Ihre globale OpenCode-Konfiguration in `~/.config/opencode/opencode.json`. Verwenden Sie die globale Konfiguration für benutzerweite Einstellungen wie Themen, Anbieter oder Tastenkombinationen.
+
+Die globale Konfiguration überschreibt die Standardeinstellungen der Remote-Organisation.
+
+---
+
+### Pro Projekt
+
+Fügen Sie `opencode.json` in Ihrem Projektstamm hinzu. Die Projektkonfiguration hat unter den Standardkonfigurationsdateien die höchste Priorität – sie überschreibt sowohl globale als auch Remote-Konfigurationen.
+
+:::tip
+Platzieren Sie die projektspezifische Konfiguration im Stammverzeichnis Ihres Projekts.
+:::
+
+Wenn OpenCode gestartet wird, sucht es im aktuellen Verzeichnis nach einer Konfigurationsdatei oder durchsucht das nächstgelegene Git-Verzeichnis.
+
+Dies kann auch sicher in Git eingecheckt werden und dasselbe Schema wie das globale verwenden.
+
+---
+
+### Benutzerdefinierter Pfad
+
+Geben Sie mithilfe der Umgebungsvariablen `OPENCODE_CONFIG` einen benutzerdefinierten Konfigurationsdateipfad an.
+
+```bash
+export OPENCODE_CONFIG=/path/to/my/custom-config.json
+opencode run "Hello world"
+```
+
+Die benutzerdefinierte Konfiguration wird in der Rangfolge zwischen globalen und Projektkonfigurationen geladen.
+
+---
+
+### Benutzerdefiniertes Verzeichnis
+
+Geben Sie mit `OPENCODE_CONFIG_DIR` ein benutzerdefiniertes Konfigurationsverzeichnis an.
+Umgebungsvariable. Dieses Verzeichnis wird nach Agenten, Befehlen,
+Modi und Plugins genau wie das Standardverzeichnis `.opencode` und sollten
+folgen der gleichen Struktur.
+
+```bash
+export OPENCODE_CONFIG_DIR=/path/to/my/config-directory
+opencode run "Hello world"
+```
+
+Das benutzerdefinierte Verzeichnis wird nach den Verzeichnissen global config und `.opencode` geladen, sodass es deren Einstellungen **überschreiben** kann.
+
+---
+
+## Schema
+
+Die Konfigurationsdatei verfügt über ein Schema, das in [**`opencode.ai/config.json`**](https://opencode.ai/config.json) definiert ist.
+
+Ihr Editor sollte in der Lage sein, basierend auf dem Schema zu validieren und automatisch zu vervollständigen.
+
+---
+
+### TUI
+
+Sie können TUI-spezifische Einstellungen über die Option `tui` konfigurieren.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "tui": {
+ "scroll_speed": 3,
+ "scroll_acceleration": {
+ "enabled": true
+ },
+ "diff_style": "auto"
+ }
+}
+```
+
+Verfügbare Optionen:
+
+- `scroll_acceleration.enabled` – Scrollbeschleunigung im macOS-Stil aktivieren. **Hat Vorrang vor `scroll_speed`.**
+- `scroll_speed` – Benutzerdefinierter Scrollgeschwindigkeitsmultiplikator (Standard: `3`, Minimum: `1`). Wird ignoriert, wenn `scroll_acceleration.enabled` gleich `true` ist.
+- `diff_style` – Steuern Sie das Diff-Rendering. `"auto"` passt sich der Terminalbreite an, `"stacked"` zeigt immer eine einzelne Spalte an.
+
+[Learn more about using the TUI here](/docs/tui).
+
+---
+
+### Server
+
+Sie können Servereinstellungen für die Befehle `opencode serve` und `opencode web` über die Option `server` konfigurieren.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "server": {
+ "port": 4096,
+ "hostname": "0.0.0.0",
+ "mdns": true,
+ "mdnsDomain": "myproject.local",
+ "cors": ["http://localhost:5173"]
+ }
+}
+```
+
+Verfügbare Optionen:
+
+- `port` – Port zum Abhören.
+- `hostname` – Hostname zum Abhören. Wenn `mdns` aktiviert ist und kein Hostname festgelegt ist, wird standardmäßig `0.0.0.0` verwendet.
+- `mdns` – mDNS-Diensterkennung aktivieren. Dadurch können andere Geräte im Netzwerk Ihres OpenCode-Servers erkannt werden.
+- `mdnsDomain` – Benutzerdefinierter Domänenname für den mDNS-Dienst. Standardmäßig ist `opencode.local`. Nützlich für die Ausführung mehrerer Instanzen im selben Netzwerk.
+- `cors` – Zusätzliche Ursprünge, um CORS zu ermöglichen, wenn der HTTP-Server von einem browserbasierten Client aus verwendet wird. Die Werte müssen vollständige Ursprünge haben (Schema + Host + optionaler Port), z. B. `https://app.example.com`.
+
+[Learn more about the server here](/docs/server).
+
+---
+
+### Tools
+
+Sie können die Tools, die ein LLM verwenden kann, über die Option `tools` verwalten.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "tools": {
+ "write": false,
+ "bash": false
+ }
+}
+```
+
+[Learn more about tools here](/docs/tools).
+
+---
+
+### Models
+
+Sie können die Anbieter und Modelle, die Sie in Ihrer OpenCode-Konfiguration verwenden möchten, über die Optionen `provider`, `model` und `small_model` konfigurieren.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {},
+ "model": "anthropic/claude-sonnet-4-5",
+ "small_model": "anthropic/claude-haiku-4-5"
+}
+```
+
+Die Option `small_model` konfiguriert ein separates Modell für einfache Aufgaben wie die Titelgenerierung. Standardmäßig versucht OpenCode, ein günstigeres Modell zu verwenden, sofern eines bei Ihrem Anbieter verfügbar ist, andernfalls greift es auf Ihr Hauptmodell zurück.
+
+Zu den Anbieteroptionen können `timeout` und `setCacheKey` gehören:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "anthropic": {
+ "options": {
+ "timeout": 600000,
+ "setCacheKey": true
+ }
+ }
+ }
+}
+```
+
+- `timeout` – Anforderungszeitlimit in Millisekunden (Standard: 300000). Zum Deaktivieren auf `false` setzen.
+- `setCacheKey` – Stellen Sie sicher, dass immer ein Cache-Schlüssel für den angegebenen Anbieter festgelegt ist.
+
+Sie können auch [local models](/docs/models#local) konfigurieren. [Learn more](/docs/models).
+
+---
+
+#### Anbieterspezifische Optionen
+
+Einige Anbieter unterstützen zusätzliche Konfigurationsoptionen über die allgemeinen Einstellungen `timeout` und `apiKey` hinaus.
+
+##### Amazonas-Grundgestein
+
+Amazon Bedrock unterstützt AWS-spezifische Konfigurationen:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "amazon-bedrock": {
+ "options": {
+ "region": "us-east-1",
+ "profile": "my-aws-profile",
+ "endpoint": "https://bedrock-runtime.us-east-1.vpce-xxxxx.amazonaws.com"
+ }
+ }
+ }
+}
+```
+
+- `region` – AWS-Region für Bedrock (standardmäßig `AWS_REGION` env var oder `us-east-1`)
+- `profile` – AWS benanntes Profil von `~/.aws/credentials` (standardmäßig `AWS_PROFILE` Umgebungsvariable)
+- `endpoint` – Benutzerdefinierter Endpunkt URL für VPC-Endpunkte. Dies ist ein Alias für die generische Option `baseURL` unter Verwendung der AWS-spezifischen Terminologie. Wenn beide angegeben sind, hat `endpoint` Vorrang.
+
+:::note
+Inhabertoken (`AWS_BEARER_TOKEN_BEDROCK` oder `/connect`) haben Vorrang vor der profilbasierten Authentifizierung. Weitere Informationen finden Sie unter [authentication precedence](/docs/providers#authentication-precedence).
+:::
+
+[Learn more about Amazon Bedrock configuration](/docs/providers#amazon-bedrock).
+
+---
+
+### Themes
+
+Sie können das Thema, das Sie in Ihrer OpenCode-Konfiguration verwenden möchten, über die Option `theme` konfigurieren.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "theme": ""
+}
+```
+
+[Learn more here](/docs/themes).
+
+---
+
+### Agents
+
+Über die Option `agent` können Sie spezielle Agenten für bestimmte Aufgaben konfigurieren.
+
+```jsonc title="opencode.jsonc"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "agent": {
+ "code-reviewer": {
+ "description": "Reviews code for best practices and potential issues",
+ "model": "anthropic/claude-sonnet-4-5",
+ "prompt": "You are a code reviewer. Focus on security, performance, and maintainability.",
+ "tools": {
+ // Disable file modification tools for review-only agent
+ "write": false,
+ "edit": false,
+ },
+ },
+ },
+}
+```
+
+Sie können Agenten auch mithilfe von Markdown-Dateien in `~/.config/opencode/agents/` oder `.opencode/agents/` definieren. [Learn more here](/docs/agents).
+
+---
+
+### Standardagent
+
+Sie können den Standardagenten mit der Option `default_agent` festlegen. Dadurch wird bestimmt, welcher Agent verwendet wird, wenn keiner explizit angegeben wird.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "default_agent": "plan"
+}
+```
+
+Der Standardagent muss ein Primäragent (kein Subagent) sein. Dies kann ein integrierter Agent wie `"build"` oder `"plan"` oder ein von Ihnen definierter [custom agent](/docs/agents) sein. Wenn der angegebene Agent nicht existiert oder ein Subagent ist, greift OpenCode mit einer Warnung auf `"build"` zurück.
+
+Diese Einstellung gilt für alle Schnittstellen: TUI, CLI (`opencode run`), Desktop-App und GitHub Aktion.
+
+---
+
+### Sharing
+
+Sie können die Funktion [share](/docs/share) über die Option `share` konfigurieren.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "share": "manual"
+}
+```
+
+Dazu braucht es:
+
+- `"manual"` – Manuelles Teilen über Befehle zulassen (Standard)
+- `"auto"` – Neue Konversationen automatisch teilen
+- `"disabled"` – Teile vollständig deaktivieren
+
+Standardmäßig ist die Freigabe auf den manuellen Modus eingestellt, in dem Sie Konversationen explizit mit dem Befehl `/share` teilen müssen.
+
+---
+
+### Befehle
+
+Sie können benutzerdefinierte Befehle für sich wiederholende Aufgaben über die Option `command` konfigurieren.
+
+```jsonc title="opencode.jsonc"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "command": {
+ "test": {
+ "template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes.",
+ "description": "Run tests with coverage",
+ "agent": "build",
+ "model": "anthropic/claude-haiku-4-5",
+ },
+ "component": {
+ "template": "Create a new React component named $ARGUMENTS with TypeScript support.\nInclude proper typing and basic structure.",
+ "description": "Create a new component",
+ },
+ },
+}
+```
+
+Sie können Befehle auch mithilfe von Markdown-Dateien in `~/.config/opencode/commands/` oder `.opencode/commands/` definieren. [Learn more here](/docs/commands).
+
+---
+
+### Keybinds
+
+Sie können Ihre Tastenkombinationen über die Option `keybinds` anpassen.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "keybinds": {}
+}
+```
+
+[Learn more here](/docs/keybinds).
+
+---
+
+### Autoupdate
+
+OpenCode lädt beim Start automatisch alle neuen Updates herunter. Sie können dies mit der Option `autoupdate` deaktivieren.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "autoupdate": false
+}
+```
+
+Wenn Sie keine Updates wünschen, aber dringend möchten, wenn eine neue Version verfügbar ist, setzen Sie `autoupdate` auf `"notify"`.
+Beachten Sie, dass dies nur funktioniert, wenn es nicht mit einem Paketmanager wie Homebrew installiert wurde.
+
+---
+
+### Formatters
+
+Sie können Codeformatierer über die Option `formatter` konfigurieren.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "formatter": {
+ "prettier": {
+ "disabled": true
+ },
+ "custom-prettier": {
+ "command": ["npx", "prettier", "--write", "$FILE"],
+ "environment": {
+ "NODE_ENV": "development"
+ },
+ "extensions": [".js", ".ts", ".jsx", ".tsx"]
+ }
+ }
+}
+```
+
+[Learn more about formatters here](/docs/formatters).
+
+---
+
+### Permissions
+
+Opencode erlaubt standardmäßig alle Vorgänge, ohne dass eine ausdrückliche Genehmigung erforderlich ist. Sie können dies mit der Option `permission` ändern.
+
+Um beispielsweise sicherzustellen, dass die Tools `edit` und `bash` eine Benutzergenehmigung erfordern:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "edit": "ask",
+ "bash": "ask"
+ }
+}
+```
+
+[Learn more about permissions here](/docs/permissions).
+
+---
+
+### Compaction
+
+Sie können das Verhalten der Kontextkomprimierung über die Option `compaction` steuern.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "compaction": {
+ "auto": true,
+ "prune": true
+ }
+}
+```
+
+- `auto` – Die Sitzung wird automatisch komprimieren, wenn der Kontext voll ist (Standard: `true`).
+- `prune` – Alte Tool-Ausgaben entfernen, um Token zu sparen (Standard: `true`).
+
+---
+
+### Watcher
+
+Sie können Datei-Watcher-Ignoriermuster über die Option `watcher` konfigurieren.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "watcher": {
+ "ignore": ["node_modules/**", "dist/**", ".git/**"]
+ }
+}
+```
+
+Muster folgen der Glob-Syntax. Verwenden Sie diese Option, um verrauschte Verzeichnisse von der Dateiüberwachung auszuschließen.
+
+---
+
+### MCP Server
+
+Sie können den MCP-Server, den Sie verwenden möchten, über die Option `mcp` konfigurieren.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {}
+}
+```
+
+[Learn more here](/docs/mcp-servers).
+
+---
+
+### Plugins
+
+[Plugins](/docs/plugins) erweitert OpenCode mit benutzerdefinierten Tools, Hooks und Integrationen.
+
+Platzieren Sie Ihre Plugin-Dateien in `.opencode/plugins/` oder `~/.config/opencode/plugins/`. Sie können Plugins auch über die Option `plugin` von npm laden.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "plugin": ["opencode-helicone-session", "@my-org/custom-plugin"]
+}
+```
+
+[Learn more here](/docs/plugins).
+
+---
+
+### Instructions
+
+Sie können die Anweisungen für das von Ihnen verwendete Modell über die Option `instructions` konfigurieren.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
+}
+```
+
+Dies erfordert eine Reihe von Pfaden und Glob-Mustern zu Anweisungsdateien. [Erfahren Sie mehr
+über Regeln hier](/docs/rules).
+
+---
+
+### Behinderte Anbieter
+
+Sie können Anbieter, die automatisch geladen werden, über die Option `disabled_providers` deaktivieren. Dies ist nützlich, wenn Sie verhindern möchten, dass bestimmte Anbieter geladen werden, selbst wenn deren Anmeldeinformationen verfügbar sind.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "disabled_providers": ["openai", "gemini"]
+}
+```
+
+:::note
+Der `disabled_providers` hat Vorrang vor `enabled_providers`.
+:::
+
+Die Option `disabled_providers` akzeptiert ein Array des Anbieters IDs. Wenn ein Anbieter deaktiviert ist:
+
+- Es wird nicht geladen, selbst wenn Umgebungsvariablen festgelegt sind.
+- Es wird nicht geladen, selbst wenn API-Schlüssel über den Befehl `/connect` konfiguriert werden.
+- Die Modelle des Anbieters erscheinen nicht in der Modellauswahlliste.
+
+---
+
+### Aktivierte Anbieter
+
+Sie können über die Option `enabled_providers` eine Zulassungsliste für Anbieter angeben. Wenn diese Option festgelegt ist, werden nur die angegebenen Anbieter aktiviert und alle anderen werden ignoriert.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "enabled_providers": ["anthropic", "openai"]
+}
+```
+
+Dies ist nützlich, wenn Sie OpenCode darauf beschränken möchten, nur bestimmte Anbieter zu verwenden, anstatt sie einzeln zu deaktivieren.
+
+:::note
+Der `disabled_providers` hat Vorrang vor `enabled_providers`.
+:::
+
+Wenn ein Anbieter sowohl in `enabled_providers` als auch in `disabled_providers` vorkommt, hat `disabled_providers` aus Gründen der Abwärtskompatibilität Vorrang.
+
+---
+
+### Experimental
+
+Der Schlüssel `experimental` enthält Optionen, die sich in der aktiven Entwicklung befinden.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "experimental": {}
+}
+```
+
+:::caution
+Experimentelle Optionen sind nicht stabil. Sie können ohne vorherige Ankündigung geändert oder entfernt werden.
+:::
+
+---
+
+## Variables
+
+Sie können die Variablenersetzung in Ihren Konfigurationsdateien verwenden, um auf Umgebungsvariablen und Dateiinhalte zu verweisen.
+
+---
+
+### Umgebungsvars
+
+Verwenden Sie `{env:VARIABLE_NAME}`, um Umgebungsvariablen zu ersetzen:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "model": "{env:OPENCODE_MODEL}",
+ "provider": {
+ "anthropic": {
+ "models": {},
+ "options": {
+ "apiKey": "{env:ANTHROPIC_API_KEY}"
+ }
+ }
+ }
+}
+```
+
+Wenn die Umgebungsvariable nicht gesetzt ist, wird sie durch eine leere Zeichenfolge ersetzt.
+
+---
+
+### Files
+
+Verwenden Sie `{file:path/to/file}`, um den Inhalt einer Datei zu ersetzen:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "instructions": ["./custom-instructions.md"],
+ "provider": {
+ "openai": {
+ "options": {
+ "apiKey": "{file:~/.secrets/openai-key}"
+ }
+ }
+ }
+}
+```
+
+Dateipfade können sein:
+
+- Relativ zum Konfigurationsdateiverzeichnis
+- Oder absolute Pfade beginnend mit `/` oder `~`
+
+Diese sind nützlich für:
+
+- Bewahren Sie vertrauliche Daten wie API-Schlüssel in separaten Dateien auf.
+- Einschließlich große Anweisungsdateien, ohne Ihre Konfiguration zu überladen.
+- Gemeinsame Nutzung gemeinsamer Konfigurationsausschnitte über mehrere Konfigurationsdateien hinweg.
diff --git a/packages/web/src/content/docs/de/custom-tools.mdx b/packages/web/src/content/docs/de/custom-tools.mdx
new file mode 100644
index 000000000..3b89ac1d8
--- /dev/null
+++ b/packages/web/src/content/docs/de/custom-tools.mdx
@@ -0,0 +1,170 @@
+---
+title: Benutzerdefinierte Werkzeuge
+description: Erstellen Sie Tools, die der LLM in Opencode aufrufen kann.
+---
+
+Benutzerdefinierte Tools sind von Ihnen erstellte Funktionen, die der LLM während Gesprächen aufrufen kann. Sie arbeiten neben [built-in tools](/docs/tools) von Opencode wie `read`, `write` und `bash`.
+
+---
+
+## Ein Werkzeug erstellen
+
+Werkzeuge werden als **TypeScript**- oder **JavaScript**-Dateien definiert. Die Werkzeugdefinition kann jedoch Skripte aufrufen, die in **jeder Sprache** geschrieben sind – TypeScript oder JavaScript wird nur für die Werkzeugdefinition selbst verwendet.
+
+---
+
+### Location
+
+Sie können wie folgt definiert werden:
+
+- Lokal, indem Sie sie im Verzeichnis `.opencode/tools/` Ihres Projekts platzieren.
+- Oder global, indem Sie sie in `~/.config/opencode/tools/` platzieren.
+
+---
+
+### Structure
+
+Der einfachste Weg, Tools zu erstellen, ist die Verwendung des `tool()`-Helfers, der Typsicherheit und Validierung bietet.
+
+```ts title=".opencode/tools/database.ts" {1}
+import { tool } from "@opencode-ai/plugin"
+
+export default tool({
+ description: "Query the project database",
+ args: {
+ query: tool.schema.string().describe("SQL query to execute"),
+ },
+ async execute(args) {
+ // Your database logic here
+ return `Executed query: ${args.query}`
+ },
+})
+```
+
+Der **Dateiname** wird zum **Toolnamen**. Das Obige erstellt ein `database`-Tool.
+
+---
+
+#### Mehrere Werkzeuge pro Datei
+
+Sie können auch mehrere Tools aus einer einzigen Datei exportieren. Jeder Export wird zu **einem separaten Tool** mit dem Namen **`_`**:
+
+```ts title=".opencode/tools/math.ts"
+import { tool } from "@opencode-ai/plugin"
+
+export const add = tool({
+ description: "Add two numbers",
+ args: {
+ a: tool.schema.number().describe("First number"),
+ b: tool.schema.number().describe("Second number"),
+ },
+ async execute(args) {
+ return args.a + args.b
+ },
+})
+
+export const multiply = tool({
+ description: "Multiply two numbers",
+ args: {
+ a: tool.schema.number().describe("First number"),
+ b: tool.schema.number().describe("Second number"),
+ },
+ async execute(args) {
+ return args.a * args.b
+ },
+})
+```
+
+Dadurch werden zwei Tools erstellt: `math_add` und `math_multiply`.
+
+---
+
+### Arguments
+
+Sie können `tool.schema` verwenden, was nur [Zod](https://zod.dev) ist, um Argumenttypen zu definieren.
+
+```ts "tool.schema"
+args: {
+ query: tool.schema.string().describe("SQL query to execute")
+}
+```
+
+Sie können [Zod](https://zod.dev) auch direkt importieren und ein ähnliches Objekt zurückgeben:
+
+```ts {6}
+import { z } from "zod"
+
+export default {
+ description: "Tool description",
+ args: {
+ param: z.string().describe("Parameter description"),
+ },
+ async execute(args, context) {
+ // Tool implementation
+ return "result"
+ },
+}
+```
+
+---
+
+### Context
+
+Tools erhalten Kontext zur aktuellen Sitzung:
+
+```ts title=".opencode/tools/project.ts" {8}
+import { tool } from "@opencode-ai/plugin"
+
+export default tool({
+ description: "Get project information",
+ args: {},
+ async execute(args, context) {
+ // Access context information
+ const { agent, sessionID, messageID, directory, worktree } = context
+ return `Agent: ${agent}, Session: ${sessionID}, Message: ${messageID}, Directory: ${directory}, Worktree: ${worktree}`
+ },
+})
+```
+
+Verwenden Sie `context.directory` für das Sitzungsarbeitsverzeichnis.
+Verwenden Sie `context.worktree` für das Stammverzeichnis des Git-Arbeitsbaums.
+
+---
+
+## Examples
+
+### Schreiben Sie ein Tool in Python
+
+Sie können Ihre Tools in jeder gewünschten Sprache schreiben. Hier ist ein Beispiel, das mit Python zwei Zahlen addiert.
+
+Erstellen Sie zunächst das Tool als Python-Skript:
+
+```python title=".opencode/tools/add.py"
+import sys
+
+a = int(sys.argv[1])
+b = int(sys.argv[2])
+print(a + b)
+```
+
+Erstellen Sie dann die Werkzeugdefinition, die es aufruft:
+
+```ts title=".opencode/tools/python-add.ts" {10}
+import { tool } from "@opencode-ai/plugin"
+import path from "path"
+
+export default tool({
+ description: "Add two numbers using Python",
+ args: {
+ a: tool.schema.number().describe("First number"),
+ b: tool.schema.number().describe("Second number"),
+ },
+ async execute(args, context) {
+ const script = path.join(context.worktree, ".opencode/tools/add.py")
+ const result = await Bun.$`python3 ${script} ${args.a} ${args.b}`.text()
+ return result.trim()
+ },
+})
+```
+
+Hier verwenden wir das Dienstprogramm [`Bun.$`](https://bun.com/docs/runtime/shell), um das Python-Skript auszuführen.
diff --git a/packages/web/src/content/docs/de/ecosystem.mdx b/packages/web/src/content/docs/de/ecosystem.mdx
new file mode 100644
index 000000000..8f0070459
--- /dev/null
+++ b/packages/web/src/content/docs/de/ecosystem.mdx
@@ -0,0 +1,76 @@
+---
+title: Ökosystem
+description: Mit OpenCode erstellte Projekte und Integrationen.
+---
+
+Eine Sammlung von Community-Projekten, die auf OpenCode basieren.
+
+:::note
+Möchten Sie Ihr OpenCode-bezogenes Projekt zu dieser Liste hinzufügen? Senden Sie einen PR.
+:::
+
+Sie können sich auch [awesome-opencode](https://github.com/awesome-opencode/awesome-opencode) und [opencode.cafe](https://opencode.cafe) ansehen, eine Community, die das Ökosystem und die Community zusammenfasst.
+
+---
+
+## Plugins
+
+| Name | Beschreibung |
+| --------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
+| [opencode-daytona](https://github.com/jamesmurdza/daytona/blob/main/guides/typescript/opencode/README.md) | Führen Sie OpenCode-Sitzungen automatisch in isolierten Daytona-Sandboxes mit Git-Synchronisierung und Live-Vorschauen aus |
+| [opencode-helicone-session](https://github.com/H2Shami/opencode-helicone-session) | Helicone-Sitzungsheader für die Anforderungsgruppierung automatisch einfügen |
+| [opencode-type-inject](https://github.com/nick-vi/opencode-type-inject) | TypeScript/Svelte-Typen mit Suchtools automatisch in Dateilesevorgänge einfügen |
+| [opencode-openai-codex-auth](https://github.com/numman-ali/opencode-openai-codex-auth) | Verwenden Sie Ihr ChatGPT Plus/Pro-Abonnement anstelle von API Credits |
+| [opencode-gemini-auth](https://github.com/jenslys/opencode-gemini-auth) | Verwenden Sie Ihren bestehenden Gemini-Plan anstelle der API-Abrechnung |
+| [opencode-antigravity-auth](https://github.com/NoeFabris/opencode-antigravity-auth) | Nutzen Sie die kostenlosen Modelle von Antigravity anstelle der API-Abrechnung |
+| [opencode-devcontainers](https://github.com/athal7/opencode-devcontainers) | Multi-Branch-Devcontainer-Isolierung mit flachen Klonen und automatisch zugewiesenen Ports |
+| [opencode-google-antigravity-auth](https://github.com/shekohex/opencode-google-antigravity-auth) | Google Antigravity OAuth-Plugin mit Unterstützung für die Google-Suche und robustere API-Verarbeitung |
+| [opencode-dynamic-context-pruning](https://github.com/Tarquinen/opencode-dynamic-context-pruning) | Optimieren Sie die Token-Nutzung, indem Sie veraltete Tool-Ausgaben bereinigen |
+| [opencode-websearch-cited](https://github.com/ghoulr/opencode-websearch-cited.git) | Fügen Sie native Websuchunterstützung für unterstützte Anbieter mit Google Grounded Style hinzu |
+| [opencode-pty](https://github.com/shekohex/opencode-pty.git) | Ermöglicht AI-Agenten, Hintergrundprozesse in einem PTY auszuführen und ihnen interaktive Eingaben zu senden. |
+| [opencode-shell-strategy](https://github.com/JRedeker/opencode-shell-strategy) | Anweisungen für nicht interaktive Shell-Befehle – verhindert Abstürze bei TTY-abhängigen Vorgängen |
+| [opencode-wakatime](https://github.com/angristan/opencode-wakatime) | Verfolgen Sie die Nutzung von OpenCode mit Wakatime |
+| [opencode-md-table-formatter](https://github.com/franlol/opencode-md-table-formatter/tree/main) | Von LLMs | erstellte Abschriftentabellen bereinigen
+| [opencode-morph-fast-apply](https://github.com/JRedeker/opencode-morph-fast-apply) | 10x schnellere Codebearbeitung mit Morph Fast Apply API und Lazy-Edit-Markern |
+| [oh-my-opencode](https://github.com/code-yeongyu/oh-my-opencode) | Hintergrundagenten, vorgefertigte LSP/AST/MCP-Tools, kuratierte Agenten, Claude Code-kompatibel |
+| [opencode-notificator](https://github.com/panta82/opencode-notificator) | Desktop-Benachrichtigungen und akustische Warnungen für OpenCode-Sitzungen |
+| [opencode-notifier](https://github.com/mohak34/opencode-notifier) | Desktop-Benachrichtigungen und akustische Warnungen für Berechtigungs-, Abschluss- und Fehlerereignisse |
+| [opencode-zellij-namer](https://github.com/24601/opencode-zellij-namer) | AI-gestützte automatische Benennung von Zellij-Sitzungen basierend auf dem OpenCode-Kontext |
+| [opencode-skillful](https://github.com/zenobi-us/opencode-skillful) | Ermöglichen Sie OpenCode-Agenten das verzögerte Laden von Eingabeaufforderungen bei Bedarf mit Skill-Erkennung und -Injektion |
+| [opencode-supermemory](https://github.com/supermemoryai/opencode-supermemory) | Persistenter Speicher über Sitzungen hinweg mit Supermemory |
+| [@plannotator/opencode](https://github.com/backnotprop/plannotator/tree/main/apps/opencode-plugin) | Interaktive Planüberprüfung mit visueller Anmerkung und private/offline-Freigabe |
+| [@openspoon/subtask2](https://github.com/spoons-and-mirrors/subtask2) | Erweitern Sie Opencode /commands zu einem leistungsstarken Orchestrierungssystem mit granularer Flusskontrolle |
+| [opencode-scheduler](https://github.com/different-ai/opencode-scheduler) | Planen Sie wiederkehrende Jobs mit launchd (Mac) oder systemd (Linux) mit Cron-Syntax |
+| [micode](https://github.com/vtemian/micode) | Strukturiertes Brainstorming → Planen → Workflow mit Sitzungskontinuität Implementierung |
+| [octto](https://github.com/vtemian/octto) | Interaktiver Browser UI für AI Brainstorming mit Formularen mit mehreren Fragen |
+| [opencode-background-agents](https://github.com/kdcokenny/opencode-background-agents) | Hintergrundagenten im Claude Code-Stil mit asynchroner Delegation und Kontextpersistenz |
+| [opencode-notify](https://github.com/kdcokenny/opencode-notify) | Native OS-Benachrichtigungen für OpenCode – wissen, wann Aufgaben erledigt sind |
+| [opencode-workspace](https://github.com/kdcokenny/opencode-workspace) | Gebündelter Multi-Agent-Orchestrierungs-Harness – 16 Komponenten, eine Installation |
+| [opencode-worktree](https://github.com/kdcokenny/opencode-worktree) | Reibungslose Git-Arbeitsbäume für OpenCode |
+
+---
+
+## Projects
+
+| Name | Beschreibung |
+| ------------------------------------------------------------------------------------------ | ---------------------------------------------------------------- |
+| [kimaki](https://github.com/remorses/kimaki) | Discord-Bot zur Steuerung von OpenCode-Sitzungen, basierend auf SDK |
+| [opencode.nvim](https://github.com/NickvanDyke/opencode.nvim) | Neovim-Plugin für editorfähige Eingabeaufforderungen, basierend auf API |
+| [portal](https://github.com/hosenur/portal) | Mobile-First-Web UI für OpenCode über Tailscale/VPN |
+| [opencode plugin template](https://github.com/zenobi-us/opencode-plugin-template/) | Vorlage zum Erstellen von OpenCode-Plugins |
+| [opencode.nvim](https://github.com/sudo-tee/opencode.nvim) | Neovim-Frontend für Opencode – ein terminalbasierter AI-Coding-Agent |
+| [ai-sdk-provider-opencode-sdk](https://github.com/ben-vargas/ai-sdk-provider-opencode-sdk) | Vercel AI SDK Anbieter für die Verwendung von OpenCode über @opencode-ai/sdk |
+| [OpenChamber](https://github.com/btriapitsyn/openchamber) | Web-/Desktop-App und VS Code-Erweiterung für OpenCode |
+| [OpenCode-Obsidian](https://github.com/mtymek/opencode-obsidian) | Obsidian-Plugin, das OpenCode in Obsidians UI | einbettet
+| [OpenWork](https://github.com/different-ai/openwork) | Eine Open-Source-Alternative zu Claude Cowork, unterstützt von OpenCode |
+| [ocx](https://github.com/kdcokenny/ocx) | OpenCode Erweiterungsmanager mit portablen, isolierten Profilen. |
+| [CodeNomad](https://github.com/NeuralNomadsAI/CodeNomad) | Desktop-, Web-, Mobil- und Remote-Client-App für OpenCode |
+
+---
+
+## Agents
+
+| Name | Beschreibung |
+| ----------------------------------------------------------------- | ------------------------------------------------------------ |
+| [Agentic](https://github.com/Cluster444/agentic) | Modulare AI-Agenten und -Befehle für strukturierte Entwicklung |
+| [opencode-agents](https://github.com/darrenhinde/opencode-agents) | Konfigurationen, Eingabeaufforderungen, Agenten und Plugins für verbesserte Arbeitsabläufe |
diff --git a/packages/web/src/content/docs/de/enterprise.mdx b/packages/web/src/content/docs/de/enterprise.mdx
new file mode 100644
index 000000000..adb0f05f5
--- /dev/null
+++ b/packages/web/src/content/docs/de/enterprise.mdx
@@ -0,0 +1,170 @@
+---
+title: Unternehmen
+description: Sichere Verwendung von OpenCode in Ihrem Unternehmen.
+---
+
+import config from "../../../../config.mjs"
+export const email = `mailto:${config.email}`
+
+OpenCode Enterprise ist für Organisationen gedacht, die sicherstellen möchten, dass ihr Code und ihre Daten niemals ihre Infrastruktur verlassen. Dies kann durch die Verwendung einer zentralen Konfiguration erreicht werden, die in Ihr SSO- und internes AI-Gateway integriert ist.
+
+:::note
+OpenCode speichert keine Ihrer Code- oder Kontextdaten.
+:::
+
+So starten Sie mit OpenCode Enterprise:
+
+1. Führen Sie einen internen Test mit Ihrem Team durch.
+2. **Kontaktieren Sie uns**, um Preise und Implementierungsoptionen zu besprechen.
+
+---
+
+## Trial
+
+OpenCode ist Open Source und speichert keine Ihrer Code- oder Kontextdaten, sodass Ihr Entwickler einfach [get started](/docs/) und eine Testversion durchführen kann.
+
+---
+
+### Datenverarbeitung
+
+**OpenCode speichert Ihren Code oder Ihre Kontextdaten nicht.** Die gesamte Verarbeitung erfolgt lokal oder durch direkte API-Aufrufe an Ihren AI-Anbieter.
+
+Das heißt, solange Sie einen Anbieter Ihres Vertrauens oder einen internen nutzen
+AI-Gateway können Sie OpenCode sicher verwenden.
+
+Die einzige Einschränkung hier ist die optionale Funktion `/share`.
+
+---
+
+#### Gespräche teilen
+
+Wenn ein Benutzer die Funktion `/share` aktiviert, werden die Konversation und die damit verbundenen Daten an den Dienst gesendet, den wir zum Hosten dieser Freigabeseiten unter opencode.ai verwenden.
+
+Die Daten werden derzeit über das Edge-Netzwerk unseres CDN bereitgestellt und am Edge in der Nähe Ihres Benutzers zwischengespeichert.
+
+Wir empfehlen Ihnen, dies für Ihre Testversion zu deaktivieren.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "share": "disabled"
+}
+```
+
+[Learn more about sharing](/docs/share).
+
+---
+
+### Code-Besitz
+
+**Der gesamte von OpenCode erstellte Code gehört Ihnen.** Es bestehen keine Lizenzbeschränkungen oder Eigentumsansprüche.
+
+---
+
+## Pricing
+
+Für OpenCode Enterprise verwenden wir ein Pro-Sitz-Modell. Wenn Sie über ein eigenes LLM-Gateway verfügen, berechnen wir keine Gebühren für die verwendeten Token. Für weitere Informationen zu Preisen und Implementierungsoptionen **kontaktieren Sie uns**.
+
+---
+
+## Deployment
+
+Sobald Sie Ihre Testversion abgeschlossen haben und bereit sind, OpenCode unter zu verwenden
+Für Ihre Organisation können Sie **uns kontaktieren**, um dies zu besprechen
+Preisgestaltung und Umsetzungsmöglichkeiten.
+
+---
+
+### Zentrale Konfiguration
+
+Wir können OpenCode so einrichten, dass eine einzige zentrale Konfiguration für Ihre gesamte Organisation verwendet wird.
+
+Diese zentralisierte Konfiguration kann in Ihren SSO-Anbieter integriert werden und stellt sicher, dass alle Benutzer nur auf Ihr internes AI-Gateway zugreifen.
+
+---
+
+### SSO-Integration
+
+Über die zentrale Konfiguration kann OpenCode zur Authentifizierung in den SSO-Anbieter Ihrer Organisation integriert werden.
+
+Dadurch kann OpenCode Anmeldeinformationen für Ihr internes AI-Gateway über Ihr eigenes Identitätsverwaltungssystem abrufen.
+
+---
+
+### Internes AI-Gateway
+
+Mit der zentralen Konfiguration kann OpenCode auch so konfiguriert werden, dass nur Ihr internes AI-Gateway verwendet wird.
+
+Sie können auch alle anderen AI-Anbieter deaktivieren und so sicherstellen, dass alle Anfragen über die genehmigte Infrastruktur Ihrer Organisation laufen.
+
+---
+
+### Self-hosting
+
+Wir empfehlen jedoch, die Freigabeseiten zu deaktivieren, um sicherzustellen, dass Ihre Daten niemals verloren gehen
+In Ihrer Organisation können wir Ihnen auch dabei helfen, sie selbst in Ihrer Infrastruktur zu hosten.
+
+Dies steht derzeit auf unserer Roadmap. Wenn Sie Interesse haben, **lassen Sie es uns wissen**.
+
+---
+
+## FAQ
+
+
+What is OpenCode Enterprise?
+
+OpenCode Enterprise ist für Organisationen gedacht, die sicherstellen möchten, dass ihr Code und ihre Daten niemals ihre Infrastruktur verlassen. Dies kann durch die Verwendung einer zentralen Konfiguration erreicht werden, die in Ihr SSO- und internes AI-Gateway integriert ist.
+
+
+
+
+How do I get started with OpenCode Enterprise?
+
+Beginnen Sie einfach mit einem internen Test mit Ihrem Team. OpenCode speichert standardmäßig weder Ihren Code noch Ihre Kontextdaten, was den Einstieg erleichtert.
+
+Dann **kontaktieren Sie uns**, um Preise und Implementierungsoptionen zu besprechen.
+
+
+
+
+How does enterprise pricing work?
+
+Wir bieten Enterprise-Preise pro Sitzplatz an. Wenn Sie über ein eigenes LLM-Gateway verfügen, berechnen wir keine Gebühren für die verwendeten Token. Für weitere Informationen **kontaktieren Sie uns** für ein individuelles Angebot, das auf die Bedürfnisse Ihrer Organisation zugeschnitten ist.
+
+
+
+
+Is my data secure with OpenCode Enterprise?
+
+Ja. OpenCode speichert Ihren Code oder Ihre Kontextdaten nicht. Die gesamte Verarbeitung erfolgt lokal oder durch direkte API-Anrufe an Ihren AI-Anbieter. Dank zentraler Konfiguration und SSO-Integration bleiben Ihre Daten innerhalb der Infrastruktur Ihres Unternehmens sicher.
+
+
+
+
+Can we use our own private NPM registry?
+
+OpenCode unterstützt private NPM-Registrierungen durch Buns native `.npmrc`-Dateiunterstützung. Wenn Ihre Organisation eine private Registrierung wie JFrog Artifactory, Nexus oder ähnliches verwendet, stellen Sie sicher, dass der Entwickler authentifiziert ist, bevor Sie OpenCode ausführen.
+
+So richten Sie die Authentifizierung mit Ihrer privaten Registrierung ein:
+
+```bash
+npm login --registry=https://your-company.jfrog.io/api/npm/npm-virtual/
+```
+
+Dadurch wird `~/.npmrc` mit Authentifizierungsdetails erstellt. OpenCode wird automatisch
+Hebe das auf.
+
+:::caution
+Sie müssen bei der privaten Registrierung angemeldet sein, bevor Sie OpenCode ausführen.
+:::
+
+Alternativ können Sie eine `.npmrc`-Datei manuell konfigurieren:
+
+```bash title="~/.npmrc"
+registry=https://your-company.jfrog.io/api/npm/npm-virtual/
+//your-company.jfrog.io/api/npm/npm-virtual/:_authToken=${NPM_AUTH_TOKEN}
+```
+
+Entwickler müssen vor der Ausführung von OpenCode bei der privaten Registrierung angemeldet sein, um sicherzustellen, dass Pakete aus Ihrer Unternehmensregistrierung installiert werden können.
+
+
diff --git a/packages/web/src/content/docs/de/formatters.mdx b/packages/web/src/content/docs/de/formatters.mdx
new file mode 100644
index 000000000..f5301ea97
--- /dev/null
+++ b/packages/web/src/content/docs/de/formatters.mdx
@@ -0,0 +1,130 @@
+---
+title: Formatierer
+description: OpenCode verwendet sprachspezifische Formatierer.
+---
+
+OpenCode formatiert Dateien automatisch, nachdem sie mit sprachspezifischen Formatierern geschrieben oder bearbeitet wurden. Dadurch wird sichergestellt, dass der generierte Code dem Codestil Ihres Projekts entspricht.
+
+---
+
+## Eingebaut
+
+OpenCode verfügt über mehrere integrierte Formatierer für gängige Sprachen und Frameworks. Nachfolgend finden Sie eine Liste der Formatierer, unterstützten Dateierweiterungen und benötigten Befehle oder Konfigurationsoptionen.
+
+| Formatierer | Erweiterungen | Anforderungen |
+| -------------------- | -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
+| gofmt | .go | `gofmt`-Befehl verfügbar |
+| mischen | .ex, .exs, .eex, .heex, .leex, .neex, .sface | `mix`-Befehl verfügbar |
+| hübscher | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml und [more](https://prettier.io/docs/en/index.html) | `prettier`-Abhängigkeit in `package.json` |
+| Biom | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml und [more](https://biomejs.dev/) | `biome.json(c)` Konfigurationsdatei |
+| Zickzack | .zig, .zon | `zig`-Befehl verfügbar |
+| clang-format | .c, .cpp, .h, .hpp, .ino und [more](https://clang.llvm.org/docs/ClangFormat.html) | `.clang-format` Konfigurationsdatei |
+| ktlint | .kt, .kts | `ktlint`-Befehl verfügbar |
+| Halskrause | .py, .pyi | `ruff`-Befehl verfügbar mit config |
+| rustfmt | .rs | `rustfmt`-Befehl verfügbar |
+| frachtfmt | .rs | `cargo fmt`-Befehl verfügbar |
+| UV | .py, .pyi | `uv`-Befehl verfügbar |
+| rubocop | .rb, .rake, .gemspec, .ru | `rubocop`-Befehl verfügbar |
+| standardrb | .rb, .rake, .gemspec, .ru | `standardrb`-Befehl verfügbar |
+| htmlbeautifier | .erb, .html.erb | `htmlbeautifier`-Befehl verfügbar |
+| Luft | .R | `air`-Befehl verfügbar |
+| Dart | .dart | `dart`-Befehl verfügbar |
+| ocamlformat | .ml, .mli | `ocamlformat` Befehl verfügbar und `.ocamlformat` Konfigurationsdatei |
+| Terraform | .tf, .tfvars | `terraform`-Befehl verfügbar |
+| Glanz | .glanz | `gleam`-Befehl verfügbar |
+| nixfmt | .nix | `nixfmt`-Befehl verfügbar |
+| shfmt | .sh, .bash | `shfmt`-Befehl verfügbar |
+| Pint | .php | `laravel/pint`-Abhängigkeit in `composer.json` |
+| oxfmt (Experimentell) | .js, .jsx, .ts, .tsx | `oxfmt`-Abhängigkeit in `package.json` und einer [experimental env variable flag](/docs/cli/#experimental) |
+| Ormolu | .hs | `ormolu`-Befehl verfügbar |
+
+Wenn Ihr Projekt auch `prettier` in Ihrem `package.json` hat, wird OpenCode automatisch verwendet.
+
+---
+
+## Wie es funktioniert
+
+Wenn OpenCode eine Datei schreibt oder bearbeitet, geschieht Folgendes:
+
+1. Überprüft die Dateierweiterung anhand aller aktivierten Formatierer.
+2. Führt den entsprechenden Formatierungsbefehl für die Datei aus.
+3. Wendet die Formatierungsänderungen automatisch an.
+
+Dieser Prozess findet im Hintergrund statt und stellt sicher, dass Ihr Codestile ohne manuelle Schritte beibehalten werden.
+
+---
+
+## Konfigurieren
+
+Sie können Formatierer über den Abschnitt `formatter` in Ihrer OpenCode-Konfiguration anpassen.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "formatter": {}
+}
+```
+
+Jede Formatierungskonfiguration unterstützt Folgendes:
+
+| Eigentum | Geben Sie | eine Beschreibung |
+| ------------- | -------- | ------------------------------------------------------- |
+| `disabled` | boolescher Wert | Setzen Sie dies auf `true`, um den Formatierer | zu deaktivieren
+| `command` | string[] | Der zum Formatieren auszuführende Befehl |
+| `environment` | Objekt | Umgebungsvariablen, die beim Ausführen des Formatierers | festgelegt werden sollen
+| `extensions` | string[] | Dateierweiterungen, die dieser Formatierer verarbeiten soll |
+
+Schauen wir uns einige Beispiele an.
+
+---
+
+### Formatierer deaktivieren
+
+Um **alle** Formatierer global zu deaktivieren, setzen Sie `formatter` auf `false`:
+
+```json title="opencode.json" {3}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "formatter": false
+}
+```
+
+Um einen **bestimmten** Formatierer zu deaktivieren, setzen Sie `disabled` auf `true`:
+
+```json title="opencode.json" {5}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "formatter": {
+ "prettier": {
+ "disabled": true
+ }
+ }
+}
+```
+
+---
+
+### Benutzerdefinierter Formatierer
+
+Sie können den integrierten Formatierer überschreiben oder neu hinzufügen, indem Sie den Befehl, Umgebungsvariablen und Dateierweiterungen angeben:
+
+```json title="opencode.json" {4-14}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "formatter": {
+ "prettier": {
+ "command": ["npx", "prettier", "--write", "$FILE"],
+ "environment": {
+ "NODE_ENV": "development"
+ },
+ "extensions": [".js", ".ts", ".jsx", ".tsx"]
+ },
+ "custom-markdown-formatter": {
+ "command": ["deno", "fmt", "$FILE"],
+ "extensions": [".md"]
+ }
+ }
+}
+```
+
+Der Platzhalter **`$FILE`** im Befehl wird durch den Pfad zur zu formatierenden Datei ersetzt.
diff --git a/packages/web/src/content/docs/de/github.mdx b/packages/web/src/content/docs/de/github.mdx
new file mode 100644
index 000000000..fe20cbe21
--- /dev/null
+++ b/packages/web/src/content/docs/de/github.mdx
@@ -0,0 +1,321 @@
+---
+title: GitHub
+description: Verwenden Sie OpenCode in GitHub-Problemen und Pull-Requests.
+---
+
+OpenCode lässt sich in Ihren GitHub-Workflow integrieren. Erwähnen Sie `/opencode` oder `/oc` in Ihrem Kommentar, und OpenCode führt Aufgaben in Ihrem GitHub Actions-Runner aus.
+
+---
+
+## Features
+
+- **Triage-Probleme**: Bitten Sie OpenCode, ein Problem zu untersuchen und es Ihnen zu erklären.
+- **Reparieren und implementieren**: Bitten Sie OpenCode, ein Problem zu beheben oder eine Funktion zu implementieren. Und es funktioniert in einem neuen Zweig und sendet ein PR mit allen Änderungen.
+- **Sicher**: OpenCode läuft in den Runnern Ihres GitHub.
+
+---
+
+## Installation
+
+Führen Sie den folgenden Befehl in einem Projekt aus, das sich in einem GitHub-Repository befindet:
+
+```bash
+opencode github install
+```
+
+Dies führt Sie durch die Installation der GitHub-App, das Erstellen des Workflows und das Einrichten von Geheimnissen.
+
+---
+
+### Manuelle Einrichtung
+
+Oder Sie können es manuell einrichten.
+
+1. **Installieren Sie die GitHub-App**
+
+ Gehen Sie zu [**github.com/apps/opencode-agent**](https://github.com/apps/opencode-agent). Stellen Sie sicher, dass es im Ziel-Repository installiert ist.
+
+2. **Den Workflow hinzufügen**
+
+ Fügen Sie die folgende Workflowdatei zu `.github/workflows/opencode.yml` in Ihrem Repository hinzu. Stellen Sie sicher, dass Sie in `env` die entsprechenden Schlüssel `model` und API festlegen.
+
+ ```yml title=".github/workflows/opencode.yml" {24,26}
+ name: opencode
+
+ on:
+ issue_comment:
+ types: [created]
+ pull_request_review_comment:
+ types: [created]
+
+ jobs:
+ opencode:
+ if: |
+ contains(github.event.comment.body, '/oc') ||
+ contains(github.event.comment.body, '/opencode')
+ runs-on: ubuntu-latest
+ permissions:
+ id-token: write
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v6
+ with:
+ fetch-depth: 1
+ persist-credentials: false
+
+ - name: Run OpenCode
+ uses: anomalyco/opencode/github@latest
+ env:
+ ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
+ with:
+ model: anthropic/claude-sonnet-4-20250514
+ # share: true
+ # github_token: xxxx
+ ```
+
+3. **Speichern Sie die API-Schlüssel in Geheimnissen**
+
+ Erweitern Sie in den **Einstellungen** Ihrer Organisation oder Ihres Projekts links **Geheimnisse und Variablen** und wählen Sie **Aktionen** aus. Und fügen Sie die erforderlichen API-Schlüssel hinzu.
+
+---
+
+## Configuration
+
+- `model`: Das mit OpenCode zu verwendende Modell. Nimmt das Format `provider/model` an. Dies ist **erforderlich**.
+- `agent`: Der zu verwendende Agent. Muss ein Hauptagent sein. Fällt aus der Konfiguration auf `default_agent` oder `"build"` zurück, wenn es nicht gefunden wird.
+- `share`: Ob die OpenCode-Sitzung geteilt werden soll. Der Standardwert ist **true** für öffentliche Repositorys.
+- `prompt`: Optionale benutzerdefinierte Eingabeaufforderung zum Überschreiben des Standardverhaltens. Verwenden Sie dies, um anzupassen, wie OpenCode Anfragen verarbeitet.
+- `token`: Optionales GitHub-Zugriffstoken zum Ausführen von Vorgängen wie dem Erstellen von Kommentaren, dem Festschreiben von Änderungen und dem Öffnen von Pull-Anfragen. Standardmäßig verwendet OpenCode das Installationszugriffstoken der OpenCode GitHub-App, sodass Commits, Kommentare und Pull-Anfragen so aussehen, als würden sie von der App kommen.
+
+ Alternativ können Sie [built-in `GITHUB_TOKEN`](https://docs.github.com/en/actions/tutorials/authenticate-with-github_token) des GitHub Action Runners verwenden, ohne die OpenCode GitHub App zu installieren. Stellen Sie einfach sicher, dass Sie in Ihrem Workflow die erforderlichen Berechtigungen erteilen:
+
+ ```yaml
+ permissions:
+ id-token: write
+ contents: write
+ pull-requests: write
+ issues: write
+ ```
+
+ Sie können bei Bedarf auch einen [personal access tokens](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)(PAT) verwenden.
+
+---
+
+## Unterstützte Veranstaltungen
+
+OpenCode kann durch die folgenden GitHub-Ereignisse ausgelöst werden:
+
+| Ereignistyp | Ausgelöst durch | Einzelheiten |
+| ----------------------------- | -------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
+| `issue_comment` | Kommentieren Sie ein Problem oder PR | Erwähnen Sie `/opencode` oder `/oc` in Ihrem Kommentar. OpenCode liest den Kontext und kann Verzweigungen erstellen, PRs öffnen oder antworten. |
+| `pull_request_review_comment` | Kommentieren Sie bestimmte Codezeilen in einem PR | Erwähnen Sie `/opencode` oder `/oc` beim Überprüfen des Codes. OpenCode empfängt Dateipfad, Zeilennummern und Diff-Kontext. |
+| `issues` | Problem geöffnet oder bearbeitet | Lösen Sie OpenCode automatisch aus, wenn Probleme erstellt oder geändert werden. Erfordert `prompt`-Eingabe. |
+| `pull_request` | PR geöffnet oder aktualisiert | Lösen Sie OpenCode automatisch aus, wenn PRs geöffnet, synchronisiert oder erneut geöffnet werden. Nützlich für automatisierte Bewertungen. |
+| `schedule` | Cron-basierter Zeitplan | Führen Sie OpenCode nach einem Zeitplan aus. Erfordert `prompt`-Eingabe. Die Ausgabe geht an Protokolle und PRs (kein Kommentar zu diesem Problem). |
+| `workflow_dispatch` | Manueller Trigger von GitHub UI | Lösen Sie OpenCode bei Bedarf über die Registerkarte „Aktionen“ aus. Erfordert `prompt`-Eingabe. Die Ausgabe erfolgt an Protokolle und PRs. |
+
+### Beispiel für einen Zeitplan
+
+Führen Sie OpenCode nach einem Zeitplan aus, um automatisierte Aufgaben auszuführen:
+
+```yaml title=".github/workflows/opencode-scheduled.yml"
+name: Scheduled OpenCode Task
+
+on:
+ schedule:
+ - cron: "0 9 * * 1" # Every Monday at 9am UTC
+
+jobs:
+ opencode:
+ runs-on: ubuntu-latest
+ permissions:
+ id-token: write
+ contents: write
+ pull-requests: write
+ issues: write
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v6
+ with:
+ persist-credentials: false
+
+ - name: Run OpenCode
+ uses: anomalyco/opencode/github@latest
+ env:
+ ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
+ with:
+ model: anthropic/claude-sonnet-4-20250514
+ prompt: |
+ Review the codebase for any TODO comments and create a summary.
+ If you find issues worth addressing, open an issue to track them.
+```
+
+Für geplante Ereignisse ist die Eingabe `prompt` **erforderlich**, da es keinen Kommentar gibt, aus dem Anweisungen extrahiert werden können. Geplante Workflows werden ohne Benutzerkontext zur Berechtigungsprüfung ausgeführt. Daher muss der Workflow `contents: write` und `pull-requests: write` gewähren, wenn Sie erwarten, dass OpenCode Zweige oder PRs erstellt.
+
+---
+
+### Pull-Request-Beispiel
+
+Überprüfen Sie PRs automatisch, wenn sie geöffnet oder aktualisiert werden:
+
+```yaml title=".github/workflows/opencode-review.yml"
+name: opencode-review
+
+on:
+ pull_request:
+ types: [opened, synchronize, reopened, ready_for_review]
+
+jobs:
+ review:
+ runs-on: ubuntu-latest
+ permissions:
+ id-token: write
+ contents: read
+ pull-requests: read
+ issues: read
+ steps:
+ - uses: actions/checkout@v6
+ with:
+ persist-credentials: false
+ - uses: anomalyco/opencode/github@latest
+ env:
+ ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ model: anthropic/claude-sonnet-4-20250514
+ use_github_token: true
+ prompt: |
+ Review this pull request:
+ - Check for code quality issues
+ - Look for potential bugs
+ - Suggest improvements
+```
+
+Wenn für `pull_request`-Ereignisse kein `prompt` bereitgestellt wird, überprüft OpenCode standardmäßig die Pull-Anfrage.
+
+---
+
+### Beispiel für eine Triage von Problemen
+
+Neue Probleme automatisch selektieren. In diesem Beispiel wird nach Konten gefiltert, die älter als 30 Tage sind, um Spam zu reduzieren:
+
+```yaml title=".github/workflows/opencode-triage.yml"
+name: Issue Triage
+
+on:
+ issues:
+ types: [opened]
+
+jobs:
+ triage:
+ runs-on: ubuntu-latest
+ permissions:
+ id-token: write
+ contents: write
+ pull-requests: write
+ issues: write
+ steps:
+ - name: Check account age
+ id: check
+ uses: actions/github-script@v7
+ with:
+ script: |
+ const user = await github.rest.users.getByUsername({
+ username: context.payload.issue.user.login
+ });
+ const created = new Date(user.data.created_at);
+ const days = (Date.now() - created) / (1000 * 60 * 60 * 24);
+ return days >= 30;
+ result-encoding: string
+
+ - uses: actions/checkout@v6
+ if: steps.check.outputs.result == 'true'
+ with:
+ persist-credentials: false
+
+ - uses: anomalyco/opencode/github@latest
+ if: steps.check.outputs.result == 'true'
+ env:
+ ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
+ with:
+ model: anthropic/claude-sonnet-4-20250514
+ prompt: |
+ Review this issue. If there's a clear fix or relevant docs:
+ - Provide documentation links
+ - Add error handling guidance for code examples
+ Otherwise, do not comment.
+```
+
+Für `issues`-Ereignisse ist die Eingabe `prompt` **erforderlich**, da es keinen Kommentar gibt, aus dem Anweisungen extrahiert werden können.
+
+---
+
+## Benutzerdefinierte Eingabeaufforderungen
+
+Überschreiben Sie die Standardaufforderung, um das Verhalten von OpenCode für Ihren Workflow anzupassen.
+
+```yaml title=".github/workflows/opencode.yml"
+- uses: anomalyco/opencode/github@latest
+ with:
+ model: anthropic/claude-sonnet-4-5
+ prompt: |
+ Review this pull request:
+ - Check for code quality issues
+ - Look for potential bugs
+ - Suggest improvements
+```
+
+Dies ist nützlich, um bestimmte Prüfkriterien, Kodierungsstandards oder Schwerpunktbereiche durchzusetzen, die für Ihr Projekt relevant sind.
+
+---
+
+## Examples
+
+Hier sind einige Beispiele, wie Sie OpenCode in GitHub verwenden können.
+
+- **Erklären Sie ein Problem**
+
+ Fügen Sie diesen Kommentar in einer GitHub-Ausgabe hinzu.
+
+ ```
+ /opencode explain this issue
+ ```
+
+ OpenCode liest den gesamten Thread, einschließlich aller Kommentare, und antwortet mit einer klaren Erklärung.
+
+- **Ein Problem beheben**
+
+ Sagen Sie in einer GitHub-Ausgabe:
+
+ ```
+ /opencode fix this
+ ```
+
+ Und OpenCode erstellt einen neuen Zweig, implementiert die Änderungen und öffnet ein PR mit den Änderungen.
+
+- **PRs überprüfen und Änderungen vornehmen**
+
+ Hinterlassen Sie den folgenden Kommentar auf einem GitHub PR.
+
+ ```
+ Delete the attachment from S3 when the note is removed /oc
+ ```
+
+ OpenCode implementiert die angeforderte Änderung und schreibt sie an denselben PR fest.
+
+- **Überprüfen Sie bestimmte Codezeilen**
+
+ Hinterlassen Sie einen Kommentar direkt zu den Codezeilen auf der Registerkarte „Dateien“ von PR. OpenCode erkennt automatisch die Datei, Zeilennummern und den Diff-Kontext, um präzise Antworten bereitzustellen.
+
+ ```
+ [Comment on specific lines in Files tab]
+ /oc add error handling here
+ ```
+
+ Beim Kommentieren bestimmter Zeilen erhält OpenCode:
+ - Die genaue Datei, die überprüft wird
+ - Die spezifischen Codezeilen
+ - Der umgebende Diff-Kontext
+ - Informationen zur Zeilennummer
+
+ Dies ermöglicht gezieltere Anfragen, ohne dass Dateipfade oder Zeilennummern manuell angegeben werden müssen.
diff --git a/packages/web/src/content/docs/de/gitlab.mdx b/packages/web/src/content/docs/de/gitlab.mdx
new file mode 100644
index 000000000..9bebf46fb
--- /dev/null
+++ b/packages/web/src/content/docs/de/gitlab.mdx
@@ -0,0 +1,195 @@
+---
+title: GitLab
+description: Verwenden Sie OpenCode in GitLab-Problemen und Zusammenführungsanfragen.
+---
+
+OpenCode lässt sich über Ihre GitLab CI/CD-Pipeline oder mit GitLab Duo in Ihren GitLab-Workflow integrieren.
+
+In beiden Fällen läuft OpenCode auf Ihren GitLab-Läufern.
+
+---
+
+## GitLab CI
+
+OpenCode funktioniert in einer regulären GitLab-Pipeline. Sie können es als [CI component](https://docs.gitlab.com/ee/ci/components/) in eine Pipeline einbauen.
+
+Hier verwenden wir eine von der Community erstellte CI/CD-Komponente für OpenCode – [nagyv/gitlab-opencode](https://gitlab.com/nagyv/gitlab-opencode).
+
+---
+
+### Features
+
+- **Benutzerdefinierte Konfiguration pro Job verwenden**: Konfigurieren Sie OpenCode mit einem benutzerdefinierten Konfigurationsverzeichnis, zum Beispiel `./config/#custom-directory`, um die Funktionalität pro OpenCode-Aufruf zu aktivieren oder zu deaktivieren.
+- **Minimale Einrichtung**: Die CI-Komponente richtet OpenCode im Hintergrund ein. Sie müssen lediglich die OpenCode-Konfiguration und die erste Eingabeaufforderung erstellen.
+- **Flexibel**: Die CI-Komponente unterstützt mehrere Eingaben zum Anpassen ihres Verhaltens
+
+---
+
+### Setup
+
+1. Speichern Sie Ihre OpenCode-Authentifizierung JSON als Umgebungsvariablen vom Dateityp CI unter **Einstellungen** > **CI/CD** > **Variablen**. Stellen Sie sicher, dass Sie sie als „Maskiert und ausgeblendet“ markieren.
+2. Fügen Sie Folgendes zu Ihrer `.gitlab-ci.yml`-Datei hinzu.
+
+ ```yaml title=".gitlab-ci.yml"
+ include:
+ - component: $CI_SERVER_FQDN/nagyv/gitlab-opencode/opencode@2
+ inputs:
+ config_dir: ${CI_PROJECT_DIR}/opencode-config
+ auth_json: $OPENCODE_AUTH_JSON # The variable name for your OpenCode authentication JSON
+ command: optional-custom-command
+ message: "Your prompt here"
+ ```
+
+Weitere Eingaben und Anwendungsfälle finden Sie unter [check out the docs](https://gitlab.com/explore/catalog/nagyv/gitlab-opencode) für diese Komponente.
+
+---
+
+## GitLab Duo
+
+OpenCode lässt sich in Ihren GitLab-Workflow integrieren.
+Erwähnen Sie `@opencode` in einem Kommentar und OpenCode führt Aufgaben innerhalb Ihrer GitLab CI-Pipeline aus.
+
+---
+
+### Features
+
+- **Triage-Probleme**: Bitten Sie OpenCode, ein Problem zu untersuchen und es Ihnen zu erklären.
+- **Reparieren und implementieren**: Bitten Sie OpenCode, ein Problem zu beheben oder eine Funktion zu implementieren.
+ Es wird ein neuer Zweig erstellt und eine Zusammenführungsanforderung mit den Änderungen ausgelöst.
+- **Sicher**: OpenCode läuft auf Ihren GitLab-Läufern.
+
+---
+
+### Setup
+
+OpenCode wird in Ihrer GitLab CI/CD-Pipeline ausgeführt. Folgendes müssen Sie zum Einrichten benötigen:
+
+:::tip
+Aktuelle Anweisungen finden Sie im [**GitLab docs**](https://docs.gitlab.com/user/duo_agent_platform/agent_assistant/).
+:::
+
+1. Konfigurieren Sie Ihre GitLab-Umgebung
+2. CI/CD einrichten
+3. Holen Sie sich einen AI-Modellanbieterschlüssel API
+4. Erstellen Sie ein Dienstkonto
+5. Konfigurieren Sie CI/CD-Variablen
+6. Erstellen Sie eine Flow-Konfigurationsdatei, hier ist ein Beispiel:
+
+
+
+ Flow configuration
+
+ ```yaml
+ image: node:22-slim
+ commands:
+ - echo "Installing opencode"
+ - npm install --global opencode-ai
+ - echo "Installing glab"
+ - export GITLAB_TOKEN=$GITLAB_TOKEN_OPENCODE
+ - apt-get update --quiet && apt-get install --yes curl wget gpg git && rm --recursive --force /var/lib/apt/lists/*
+ - curl --silent --show-error --location "https://raw.githubusercontent.com/upciti/wakemeops/main/assets/install_repository" | bash
+ - apt-get install --yes glab
+ - echo "Configuring glab"
+ - echo $GITLAB_HOST
+ - echo "Creating OpenCode auth configuration"
+ - mkdir --parents ~/.local/share/opencode
+ - |
+ cat > ~/.local/share/opencode/auth.json << EOF
+ {
+ "anthropic": {
+ "type": "api",
+ "key": "$ANTHROPIC_API_KEY"
+ }
+ }
+ EOF
+ - echo "Configuring git"
+ - git config --global user.email "opencode@gitlab.com"
+ - git config --global user.name "OpenCode"
+ - echo "Testing glab"
+ - glab issue list
+ - echo "Running OpenCode"
+ - |
+ opencode run "
+ You are an AI assistant helping with GitLab operations.
+
+ Context: $AI_FLOW_CONTEXT
+ Task: $AI_FLOW_INPUT
+ Event: $AI_FLOW_EVENT
+
+ Please execute the requested task using the available GitLab tools.
+ Be thorough in your analysis and provide clear explanations.
+
+
+ Please use the glab CLI to access data from GitLab. The glab CLI has already been authenticated. You can run the corresponding commands.
+
+ If you are asked to summarize an MR or issue or asked to provide more information then please post back a note to the MR/Issue so that the user can see it.
+ You don't need to commit or push up changes, those will be done automatically based on the file changes you make.
+
+ "
+ - git checkout --branch $CI_WORKLOAD_REF origin/$CI_WORKLOAD_REF
+ - echo "Checking for git changes and pushing if any exist"
+ - |
+ if ! git diff --quiet || ! git diff --cached --quiet || [ --not --zero "$(git ls-files --others --exclude-standard)" ]; then
+ echo "Git changes detected, adding and pushing..."
+ git add .
+ if git diff --cached --quiet; then
+ echo "No staged changes to commit"
+ else
+ echo "Committing changes to branch: $CI_WORKLOAD_REF"
+ git commit --message "Codex changes"
+ echo "Pushing changes up to $CI_WORKLOAD_REF"
+ git push https://gitlab-ci-token:$GITLAB_TOKEN@$GITLAB_HOST/gl-demo-ultimate-dev-ai-epic-17570/test-java-project.git $CI_WORKLOAD_REF
+ echo "Changes successfully pushed"
+ fi
+ else
+ echo "No git changes detected, skipping push"
+ fi
+ variables:
+ - ANTHROPIC_API_KEY
+ - GITLAB_TOKEN_OPENCODE
+ - GITLAB_HOST
+ ```
+
+
+
+Ausführliche Anweisungen finden Sie unter [GitLab CLI agents docs](https://docs.gitlab.com/user/duo_agent_platform/agent_assistant/).
+
+---
+
+### Examples
+
+Hier sind einige Beispiele, wie Sie OpenCode in GitLab verwenden können.
+
+:::tip
+Sie können die Verwendung einer anderen Triggerphrase als `@opencode` konfigurieren.
+:::
+
+- **Erklären Sie ein Problem**
+
+ Fügen Sie diesen Kommentar in einer GitLab-Ausgabe hinzu.
+
+ ```
+ @opencode explain this issue
+ ```
+
+ OpenCode liest das Problem und antwortet mit einer klaren Erklärung.
+
+- **Ein Problem beheben**
+
+ Sagen Sie in einer GitLab-Ausgabe:
+
+ ```
+ @opencode fix this
+ ```
+
+ OpenCode erstellt einen neuen Zweig, implementiert die Änderungen und öffnet eine Zusammenführungsanforderung mit den Änderungen.
+
+- **Zusammenführungsanfragen prüfen**
+
+ Hinterlassen Sie den folgenden Kommentar zu einer GitLab-Merge-Anfrage.
+
+ ```
+ @opencode review this merge request
+ ```
+
+ OpenCode prüft die Zusammenführungsanfrage und gibt Feedback.
diff --git a/packages/web/src/content/docs/de/ide.mdx b/packages/web/src/content/docs/de/ide.mdx
new file mode 100644
index 000000000..802894e3c
--- /dev/null
+++ b/packages/web/src/content/docs/de/ide.mdx
@@ -0,0 +1,48 @@
+---
+title: IDE
+description: Die OpenCode-Erweiterung für VS Code, Cursor und andere IDEs
+---
+
+OpenCode lässt sich in VS Code, Cursor oder jeden IDE integrieren, der ein Terminal unterstützt. Führen Sie einfach `opencode` im Terminal aus, um zu beginnen.
+
+---
+
+## Verwendung
+
+- **Schnellstart**: Verwenden Sie `Cmd+Esc` (Mac) oder `Ctrl+Esc` (Windows/Linux), um OpenCode in einer geteilten Terminalansicht zu öffnen, oder fokussieren Sie eine dieser Terminalsitzung, falls bereits eine ausgeführt wird.
+- **Neue Sitzung**: Verwenden Sie `Cmd+Shift+Esc` (Mac) oder `Ctrl+Shift+Esc` (Windows/Linux), um eine neue OpenCode-Terminalsitzung zu starten, auch wenn eine bereits geöffnet ist. Sie können auch auf die OpenCode-Schaltfläche im UI klicken.
+- **Kontextbewusstsein**: Teilen Sie Ihre aktuelle Auswahl oder Registerkarte automatisch mit OpenCode.
+- **Verknüpfungen zu Dateiverweisen**: Verwenden Sie `Cmd+Option+K` (Mac) oder `Alt+Ctrl+K` (Linux/Windows), um Dateiverweisen einzufügen. Beispiel: `@File#L37-42`.
+
+---
+
+## Installation
+
+So installieren Sie OpenCode auf VS Code und beliebten Forks wie Cursor, Windsurf, VSCodium:
+
+1. Öffnen Sie den VS-Code
+2. Öffnen Sie das integrierte Terminal
+3. Führen Sie `opencode` aus – die Erweiterung wird automatisch installiert
+
+Wenn Sie andererseits Ihr eigenes IDE verwenden möchten, wenn Sie `/editor` oder `/export` von TUI ausführen, müssen Sie `export EDITOR="code --wait"` festlegen. [Learn more](/docs/tui/#editor-setup).
+
+---
+
+### Manuelle Installation
+
+Suchen Sie im Extension Marketplace nach **OpenCode** und klicken Sie auf **Installieren**.
+
+---
+
+### Troubleshooting
+
+Wenn die Erweiterung nicht automatisch installiert werden kann:
+
+- Stellen Sie sicher, dass Sie `opencode` im integrierten Terminal ausführen.
+- Bestätigen Sie, dass CLI für Ihr IDE installiert ist:
+ - Für VS Code: `code` Befehl
+ - Für Cursor: Befehl `cursor`
+ - Für Windsurfen: Befehl `windsurf`
+ - Für VSCodium: Befehl `codium`
+ - Wenn nicht, führen Sie `Cmd+Shift+P` (Mac) oder `Ctrl+Shift+P` (Windows/Linux) aus und suchen Sie nach „Shell Command: Install 'code' command in PATH“ (oder dem Äquivalent für Ihr IDE).
+- Stellen Sie sicher, dass der VS-Code über die Berechtigung zum Installieren von Erweiterungen verfügt
diff --git a/packages/web/src/content/docs/de/index.mdx b/packages/web/src/content/docs/de/index.mdx
new file mode 100644
index 000000000..92f67e7af
--- /dev/null
+++ b/packages/web/src/content/docs/de/index.mdx
@@ -0,0 +1,359 @@
+---
+title: Einführung
+description: Beginnen Sie mit OpenCode.
+---
+
+import { Tabs, TabItem } from "@astrojs/starlight/components"
+import config from "../../../../config.mjs"
+export const console = config.console
+
+[**OpenCode**](/) ist ein Open-Source-Coding-Agent für AI. Es ist als terminalbasierte Schnittstelle, Desktop-App oder IDE-Erweiterung verfügbar.
+
+
+
+Fangen wir an.
+
+---
+
+#### Voraussetzungen
+
+Um OpenCode in Ihrem Terminal verwenden zu können, benötigen Sie:
+
+1. Ein moderner Terminal-Emulator, zum Beispiel:
+ - [WezTerm](https://wezterm.org), cross-platform
+ - [Alacritty](https://alacritty.org), plattformübergreifend
+ - [Ghostty](https://ghostty.org), Linux und macOS
+ - [Kitty](https://sw.kovidgoyal.net/kitty/), Linux und macOS
+
+2. API-Schlüssel für die LLM-Anbieter, die Sie verwenden möchten.
+
+---
+
+## Installieren
+
+Der einfachste Weg, OpenCode zu installieren, ist über das Installationsskript.
+
+```bash
+curl -fsSL https://opencode.ai/install | bash
+```
+
+Sie können es auch mit den folgenden Befehlen installieren:
+
+- **Mit Node.js**
+
+
+
+
+ ```bash
+ npm install -g opencode-ai
+ ```
+
+
+
+
+ ```bash
+ bun install -g opencode-ai
+ ```
+
+
+
+
+ ```bash
+ pnpm install -g opencode-ai
+ ```
+
+
+
+
+ ```bash
+ yarn global add opencode-ai
+ ```
+
+
+
+
+
+- **Homebrew unter macOS und Linux verwenden**
+
+ ```bash
+ brew install anomalyco/tap/opencode
+ ```
+
+ > Wir empfehlen die Verwendung des OpenCode-Tapes für die aktuellsten Versionen. Die offizielle `brew install opencode`-Formel wird vom Homebrew-Team gepflegt und seltener aktualisiert.
+
+- **Verwendung von Paru unter Arch Linux**
+
+ ```bash
+ paru -S opencode-bin
+ ```
+
+#### Windows
+
+:::tip[Empfohlen: Verwenden Sie WSL]
+Für das beste Erlebnis unter Windows empfehlen wir die Verwendung von [Windows Subsystem for Linux (WSL)](/docs/windows-wsl). Es bietet eine bessere Leistung und vollständige Kompatibilität mit den Funktionen von OpenCode.
+:::
+
+- **Verwendung von Schokolade**
+
+ ```bash
+ choco install opencode
+ ```
+
+- **Scoop verwenden**
+
+ ```bash
+ scoop install opencode
+ ```
+
+- **Mit NPM**
+
+ ```bash
+ npm install -g opencode-ai
+ ```
+
+- **Mit Mise**
+
+ ```bash
+ mise use -g github:anomalyco/opencode
+ ```
+
+- **Verwendung von Docker**
+
+ ```bash
+ docker run -it --rm ghcr.io/anomalyco/opencode
+ ```
+
+Die Unterstützung für die Installation von OpenCode unter Windows mit Bun ist derzeit in Arbeit.
+
+Sie können die Binärdatei auch aus [Releases](https://github.com/anomalyco/opencode/releases) abrufen.
+
+---
+
+## Konfigurieren
+
+Mit OpenCode können Sie jeden LLM-Anbieter verwenden, indem Sie dessen API-Schlüssel konfigurieren.
+
+Wenn Sie mit der Verwendung von LLM-Anbietern noch nicht vertraut sind, empfehlen wir die Verwendung von [OpenCode Zen](/docs/zen).
+Es handelt sich um eine kuratierte Liste von Modellen, die von OpenCode getestet und verifiziert wurden
+team.
+
+1. Führen Sie den Befehl `/connect` in TUI aus, wählen Sie Opencode aus und gehen Sie zu [opencode.ai/auth](https://opencode.ai/auth).
+
+ ```txt
+ /connect
+ ```
+
+2. Melden Sie sich an, geben Sie Ihre Rechnungsdaten ein und kopieren Sie Ihren API-Schlüssel.
+
+3. Fügen Sie Ihren API-Schlüssel ein.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+Alternativ können Sie auch einen der anderen Anbieter auswählen. [Mehr erfahren](/docs/providers#directory).
+
+---
+
+## Initialize
+
+Nachdem Sie nun einen Anbieter konfiguriert haben, können Sie zu einem Projekt navigieren
+an dem du arbeiten möchtest.
+
+```bash
+cd /path/to/project
+```
+
+Und führen Sie OpenCode aus.
+
+```bash
+opencode
+```
+
+Als nächstes initialisieren Sie OpenCode für das Projekt, indem Sie den folgenden Befehl ausführen.
+
+```bash frame="none"
+/init
+```
+
+Dadurch wird OpenCode dazu veranlasst, Ihr Projekt zu analysieren und eine `AGENTS.md`-Datei zu erstellen
+das Projektstammverzeichnis.
+
+:::tip
+Sie sollten die `AGENTS.md`-Datei Ihres Projekts an Git übergeben.
+:::
+
+Dies hilft OpenCode, die Projektstruktur und die Codierungsmuster zu verstehen
+used.
+
+---
+
+## Verwendung
+
+Sie können nun OpenCode verwenden, um an Ihrem Projekt zu arbeiten. Fragen Sie ruhig danach
+anything!
+
+Wenn Sie mit der Verwendung eines AI-Codierungsagenten noch nicht vertraut sind, finden Sie hier einige Beispiele, die hilfreich sein könnten
+help.
+
+---
+
+### Stellen Sie Fragen
+
+Sie können OpenCode bitten, Ihnen die Codebasis zu erklären.
+
+:::tip
+Verwenden Sie die Taste `@`, um eine Fuzzy-Suche nach Dateien im Projekt durchzuführen.
+:::
+
+```txt frame="none" "@packages/functions/src/api/index.ts"
+How is authentication handled in @packages/functions/src/api/index.ts
+```
+
+Dies ist hilfreich, wenn es einen Teil der Codebasis gibt, an dem Sie nicht gearbeitet haben.
+
+---
+
+### Funktionen hinzufügen
+
+Sie können OpenCode bitten, Ihrem Projekt neue Funktionen hinzuzufügen. Wir empfehlen jedoch, es zunächst um die Erstellung eines Plans zu bitten.
+
+1. **Erstellen Sie einen Plan**
+
+ OpenCode verfügt über einen _Planmodus_, der seine Fähigkeit, Änderungen vorzunehmen, deaktiviert
+ Schlagen Sie stattdessen vor, wie die Funktion implementiert wird.
+
+ Wechseln Sie mit der **Tabulatortaste** dorthin. In der unteren rechten Ecke sehen Sie einen Indikator dafür.
+
+ ```bash frame="none" title="Switch to Plan mode"
+
+ ```
+
+ Beschreiben wir nun, was es tun soll.
+
+ ```txt frame="none"
+ When a user deletes a note, we'd like to flag it as deleted in the database.
+ Then create a screen that shows all the recently deleted notes.
+ From this screen, the user can undelete a note or permanently delete it.
+ ```
+
+ Sie möchten OpenCode genügend Details geben, um zu verstehen, was Sie wollen. Es hilft
+ mit ihm zu sprechen, als ob Sie mit einem Junior-Entwickler in Ihrem Team sprechen würden.
+
+ :::tip
+ Geben Sie OpenCode reichlich Kontext und Beispiele, damit es versteht, was Sie möchten
+ want.
+ :::
+
+2. **Den Plan wiederholen**
+
+ Sobald Sie einen Plan erhalten, können Sie ihm Feedback geben oder weitere Details hinzufügen.
+
+ ```txt frame="none"
+ We'd like to design this new screen using a design I've used before.
+ [Image #1] Take a look at this image and use it as a reference.
+ ```
+
+ :::tip
+ Ziehen Sie Bilder per Drag-and-Drop in das Terminal, um sie zur Eingabeaufforderung hinzuzufügen.
+ :::
+
+ OpenCode kann alle von Ihnen bereitgestellten Bilder scannen und zur Eingabeaufforderung hinzufügen. Du kannst
+ Ziehen Sie dazu ein Bild per Drag & Drop in das Terminal.
+
+3. **Funktion erstellen**
+
+ Wenn Sie mit dem Plan zufrieden sind, wechseln Sie zurück in den _Build-Modus_
+ indem Sie erneut die **Tabulatortaste** drücken.
+
+ ```bash frame="none"
+
+ ```
+
+ Und es bitten, die Änderungen vorzunehmen.
+
+ ```bash frame="none"
+ Sounds good! Go ahead and make the changes.
+ ```
+
+---
+
+### Nehmen Sie Änderungen vor
+
+Für einfachere Änderungen können Sie OpenCode bitten, es direkt zu erstellen
+ohne den Plan vorher überprüfen zu müssen.
+
+```txt frame="none" "@packages/functions/src/settings.ts" "@packages/functions/src/notes.ts"
+We need to add authentication to the /settings route. Take a look at how this is
+handled in the /notes route in @packages/functions/src/notes.ts and implement
+the same logic in @packages/functions/src/settings.ts
+```
+
+Sie möchten sicherstellen, dass Sie viele Details bereitstellen, damit OpenCode das Richtige tut
+changes.
+
+---
+
+### Änderungen rückgängig machen
+
+Nehmen wir an, Sie bitten OpenCode, einige Änderungen vorzunehmen.
+
+```txt frame="none" "@packages/functions/src/api/index.ts"
+Can you refactor the function in @packages/functions/src/api/index.ts?
+```
+
+Aber Sie erkennen, dass es nicht das ist, was Sie wollten. Sie können die Änderungen **rückgängig machen**
+mit dem Befehl `/undo`.
+
+```bash frame="none"
+/undo
+```
+
+OpenCode macht nun die von Ihnen vorgenommenen Änderungen rückgängig und zeigt Ihre ursprüngliche Nachricht an
+again.
+
+```txt frame="none" "@packages/functions/src/api/index.ts"
+Can you refactor the function in @packages/functions/src/api/index.ts?
+```
+
+Von hier aus können Sie die Eingabeaufforderung anpassen und OpenCode bitten, es erneut zu versuchen.
+
+:::tip
+Sie können `/undo` mehrmals ausführen, um mehrere Änderungen rückgängig zu machen.
+:::
+
+Oder Sie **können** die Änderungen mit dem Befehl `/redo` wiederholen.
+
+```bash frame="none"
+/redo
+```
+
+---
+
+## Aktie
+
+Die Gespräche, die Sie mit OpenCode führen, können [mit Ihrem geteilt werden
+Team](/docs/share).
+
+```bash frame="none"
+/share
+```
+
+Dadurch wird ein Link zur aktuellen Konversation erstellt und in Ihre Zwischenablage kopiert.
+
+:::note
+Gespräche werden standardmäßig nicht geteilt.
+:::
+
+Hier ist ein [Beispielgespräch](https://opencode.ai/s/4XP1fce5) mit OpenCode.
+
+---
+
+## Customize
+
+Und das ist es! Sie sind jetzt ein Profi im Umgang mit OpenCode.
+
+Um es zu Ihrem eigenen zu machen, empfehlen wir [picking a theme](/docs/themes), [customizing the keybinds](/docs/keybinds), [configuring code formatters](/docs/formatters), [creating custom commands](/docs/commands) oder experimentieren Sie mit [OpenCode config](/docs/config).
diff --git a/packages/web/src/content/docs/de/keybinds.mdx b/packages/web/src/content/docs/de/keybinds.mdx
new file mode 100644
index 000000000..24afb1ec8
--- /dev/null
+++ b/packages/web/src/content/docs/de/keybinds.mdx
@@ -0,0 +1,192 @@
+---
+title: Tastenkombinationen
+description: Passen Sie Ihre Tastenkombinationen an.
+---
+
+OpenCode verfügt über eine Liste von Tastenkombinationen, die Sie über die OpenCode-Konfiguration anpassen können.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "keybinds": {
+ "leader": "ctrl+x",
+ "app_exit": "ctrl+c,ctrl+d,q",
+ "editor_open": "e",
+ "theme_list": "t",
+ "sidebar_toggle": "b",
+ "scrollbar_toggle": "none",
+ "username_toggle": "none",
+ "status_view": "s",
+ "tool_details": "none",
+ "session_export": "x",
+ "session_new": "n",
+ "session_list": "l",
+ "session_timeline": "g",
+ "session_fork": "none",
+ "session_rename": "none",
+ "session_share": "none",
+ "session_unshare": "none",
+ "session_interrupt": "escape",
+ "session_compact": "c",
+ "session_child_cycle": "right",
+ "session_child_cycle_reverse": "left",
+ "session_parent": "up",
+ "messages_page_up": "pageup,ctrl+alt+b",
+ "messages_page_down": "pagedown,ctrl+alt+f",
+ "messages_line_up": "ctrl+alt+y",
+ "messages_line_down": "ctrl+alt+e",
+ "messages_half_page_up": "ctrl+alt+u",
+ "messages_half_page_down": "ctrl+alt+d",
+ "messages_first": "ctrl+g,home",
+ "messages_last": "ctrl+alt+g,end",
+ "messages_next": "none",
+ "messages_previous": "none",
+ "messages_copy": "y",
+ "messages_undo": "u",
+ "messages_redo": "r",
+ "messages_last_user": "none",
+ "messages_toggle_conceal": "h",
+ "model_list": "m",
+ "model_cycle_recent": "f2",
+ "model_cycle_recent_reverse": "shift+f2",
+ "model_cycle_favorite": "none",
+ "model_cycle_favorite_reverse": "none",
+ "variant_cycle": "ctrl+t",
+ "command_list": "ctrl+p",
+ "agent_list": "a",
+ "agent_cycle": "tab",
+ "agent_cycle_reverse": "shift+tab",
+ "input_clear": "ctrl+c",
+ "input_paste": "ctrl+v",
+ "input_submit": "return",
+ "input_newline": "shift+return,ctrl+return,alt+return,ctrl+j",
+ "input_move_left": "left,ctrl+b",
+ "input_move_right": "right,ctrl+f",
+ "input_move_up": "up",
+ "input_move_down": "down",
+ "input_select_left": "shift+left",
+ "input_select_right": "shift+right",
+ "input_select_up": "shift+up",
+ "input_select_down": "shift+down",
+ "input_line_home": "ctrl+a",
+ "input_line_end": "ctrl+e",
+ "input_select_line_home": "ctrl+shift+a",
+ "input_select_line_end": "ctrl+shift+e",
+ "input_visual_line_home": "alt+a",
+ "input_visual_line_end": "alt+e",
+ "input_select_visual_line_home": "alt+shift+a",
+ "input_select_visual_line_end": "alt+shift+e",
+ "input_buffer_home": "home",
+ "input_buffer_end": "end",
+ "input_select_buffer_home": "shift+home",
+ "input_select_buffer_end": "shift+end",
+ "input_delete_line": "ctrl+shift+d",
+ "input_delete_to_line_end": "ctrl+k",
+ "input_delete_to_line_start": "ctrl+u",
+ "input_backspace": "backspace,shift+backspace",
+ "input_delete": "ctrl+d,delete,shift+delete",
+ "input_undo": "ctrl+-,super+z",
+ "input_redo": "ctrl+.,super+shift+z",
+ "input_word_forward": "alt+f,alt+right,ctrl+right",
+ "input_word_backward": "alt+b,alt+left,ctrl+left",
+ "input_select_word_forward": "alt+shift+f,alt+shift+right",
+ "input_select_word_backward": "alt+shift+b,alt+shift+left",
+ "input_delete_word_forward": "alt+d,alt+delete,ctrl+delete",
+ "input_delete_word_backward": "ctrl+w,ctrl+backspace,alt+backspace",
+ "history_previous": "up",
+ "history_next": "down",
+ "terminal_suspend": "ctrl+z",
+ "terminal_title_toggle": "none",
+ "tips_toggle": "h",
+ "display_thinking": "none"
+ }
+}
+```
+
+---
+
+## Führungsschlüssel
+
+OpenCode verwendet für die meisten Tastenkombinationen einen `leader`-Schlüssel. Dies vermeidet Konflikte in Ihrem Terminal.
+
+Standardmäßig ist `ctrl+x` die Führungstaste und bei den meisten Aktionen müssen Sie zuerst die Führungstaste und dann die Tastenkombination drücken. Um beispielsweise eine neue Sitzung zu starten, drücken Sie zuerst `ctrl+x` und dann `n`.
+
+Sie müssen für Ihre Tastenkombinationen keine Führungstaste verwenden, wir empfehlen jedoch, dies zu tun.
+
+---
+
+## Tastenkombination deaktivieren
+
+Sie können eine Tastenkombination deaktivieren, indem Sie den Schlüssel mit dem Wert „none“ zu Ihrer Konfiguration hinzufügen.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "keybinds": {
+ "session_compact": "none"
+ }
+}
+```
+
+---
+
+## Verknüpfungen zur Desktop-Eingabeaufforderung
+
+Die Eingabeaufforderungseingabe der OpenCode-Desktop-App unterstützt gängige Readline/Emacs-style-Verknüpfungen zum Bearbeiten von Text. Diese sind integriert und derzeit nicht über `opencode.json` konfigurierbar.
+
+| Verknüpfung | Aktion |
+| -------- | ---------------------------------------- |
+| `ctrl+a` | Zum Anfang der aktuellen Zeile gehen |
+| `ctrl+e` | Zum Ende der aktuellen Zeile gehen |
+| `ctrl+b` | Cursor um ein Zeichen zurückbewegen |
+| `ctrl+f` | Cursor um ein Zeichen vorwärts bewegen |
+| `alt+b` | Cursor um ein Wort zurückbewegen |
+| `alt+f` | Bewegen Sie den Cursor ein Wort vorwärts |
+| `ctrl+d` | Zeichen unter Cursor | löschen
+| `ctrl+k` | Bis zum Zeilenende töten |
+| `ctrl+u` | Bis zum Zeilenanfang töten |
+| `ctrl+w` | Vorheriges Wort töten |
+| `alt+d` | Nächstes Wort töten |
+| `ctrl+t` | Zeichen transponieren |
+| `ctrl+g` | Popovers abbrechen / Ausführung der Antwort abbrechen |
+
+---
+
+## Umschalt+Eingabetaste
+
+Einige Terminals senden standardmäßig keine Zusatztasten mit der Eingabetaste. Möglicherweise müssen Sie Ihr Terminal so konfigurieren, dass es `Shift+Enter` als Escape-Sequenz sendet.
+
+### Windows-Terminal
+
+Öffnen Sie Ihr `settings.json` unter:
+
+```
+%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
+```
+
+Fügen Sie dies dem `actions`-Array auf Stammebene hinzu:
+
+```json
+"actions": [
+ {
+ "command": {
+ "action": "sendInput",
+ "input": "\u001b[13;2u"
+ },
+ "id": "User.sendInput.ShiftEnterCustom"
+ }
+]
+```
+
+Fügen Sie dies dem `keybindings`-Array auf Stammebene hinzu:
+
+```json
+"keybindings": [
+ {
+ "keys": "shift+enter",
+ "id": "User.sendInput.ShiftEnterCustom"
+ }
+]
+```
+
+Speichern Sie die Datei und starten Sie das Windows-Terminal neu oder öffnen Sie einen neuen Tab.
diff --git a/packages/web/src/content/docs/de/lsp.mdx b/packages/web/src/content/docs/de/lsp.mdx
new file mode 100644
index 000000000..f7448d1af
--- /dev/null
+++ b/packages/web/src/content/docs/de/lsp.mdx
@@ -0,0 +1,188 @@
+---
+title: LSP Server
+description: OpenCode lässt sich in Ihren LSP-Server integrieren.
+---
+
+OpenCode lässt sich in Ihr Language Server Protocol (LSP) integrieren, um die Interaktion von LLM mit Ihrer Codebasis zu unterstützen. Es verwendet Diagnosefunktionen, um dem LLM Feedback zu geben.
+
+---
+
+## Eingebaut
+
+OpenCode verfügt über mehrere integrierte LSP-Server für gängige Sprachen:
+
+| LSP Server | Erweiterungen | Anforderungen |
+| ------------------ | ------------------------------------------------------------------- | ------------------------------------------------------------ |
+| Astro | .astro | Automatische Installation für Astro-Projekte |
+| bash | .sh, .bash, .zsh, .ksh | Installiert den Bash-Language-Server | automatisch
+| klirrend | .c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++ | Automatische Installation für C/C++-Projekte |
+| csharp | .cs | `.NET SDK` installed |
+| clojure-lsp | .clj, .cljs, .cljc, .edn | `clojure-lsp`-Befehl verfügbar |
+| Dart | .dart | `dart`-Befehl verfügbar |
+| deno | .ts, .tsx, .js, .jsx, .mjs | `deno`-Befehl verfügbar (automatische Erkennung von deno.json/deno.jsonc) |
+| Elixier-ls | .ex, .exs | `elixir`-Befehl verfügbar |
+| eslint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue | `eslint` dependency in project |
+| fsharp | .fs, .fsi, .fsx, .fsscript | `.NET SDK` installed |
+| Glanz | .glanz | `gleam`-Befehl verfügbar |
+| gopls | .go | `go`-Befehl verfügbar |
+| hls | .hs, .lhs | `haskell-language-server-wrapper`-Befehl verfügbar |
+| jdtls | .java | `Java SDK (version 21+)` installiert |
+| kotlin-ls | .kt, .kts | Automatische Installation für Kotlin-Projekte |
+| lua-ls | .lua | Automatische Installation für Lua-Projekte |
+| nixd | .nix | `nixd`-Befehl verfügbar |
+| ocaml-lsp | .ml, .mli | `ocamllsp`-Befehl verfügbar |
+| oxlint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelte | `oxlint` dependency in project |
+| PHP Intelepense | .php | Automatische Installation für PHP-Projekte |
+| Prisma | .prisma | `prisma`-Befehl verfügbar |
+| pyright | .py, .pyi | `pyright` dependency installed |
+| ruby-lsp (rubocop) | .rb, .rake, .gemspec, .ru | Befehle `ruby` und `gem` verfügbar |
+| Rost | .rs | `rust-analyzer`-Befehl verfügbar |
+| sourcekit-lsp | .swift, .objc, .objcpp | `swift` installed (`xcode` on macOS) |
+| schlank | .svelte | Automatische Installation für Svelte-Projekte |
+| Terraform | .tf, .tfvars | Automatische Installation von GitHub-Releases |
+| winziger Nebel | .typ, .typc | Automatische Installation von GitHub-Releases |
+| typescript | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts | `typescript` dependency in project |
+| vue | .vue | Automatische Installation für Vue-Projekte |
+| yaml-ls | .yaml, .yml | Installiert den Red Hat Yaml-Language-Server | automatisch
+| zls | .zig, .zon | `zig`-Befehl verfügbar |
+
+LSP-Server werden automatisch aktiviert, wenn eine der oben genannten Dateierweiterungen erkannt wird und die Anforderungen erfüllt sind.
+
+:::note
+Sie können LSP-Server-Downloads automatisch deaktivieren, indem Sie die Umgebungsvariable `OPENCODE_DISABLE_LSP_DOWNLOAD` auf `true` setzen.
+:::
+
+---
+
+## Wie es funktioniert
+
+Wenn Opencode eine Datei öffnet, geschieht Folgendes:
+
+1. Überprüft die Dateierweiterung anhand aller aktivierten LSP-Server.
+2. Startet den entsprechenden LSP-Server, falls er noch nicht ausgeführt wird.
+
+---
+
+## Konfigurieren
+
+Sie können LSP-Server über den Abschnitt `lsp` in Ihrer Opencode-Konfiguration anpassen.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "lsp": {}
+}
+```
+
+Jeder LSP-Server unterstützt Folgendes:
+
+| Eigentum | Geben Sie | ein Beschreibung |
+| ---------------- | -------- | ------------------------------------------------- |
+| `disabled` | boolescher Wert | Setzen Sie dies auf `true`, um den LSP-Server zu deaktivieren
+| `command` | string[] | Der Befehl zum Starten des LSP-Servers |
+| `extensions` | string[] | Dateierweiterungen, die dieser LSP-Server verarbeiten soll |
+| `env` | Objekt | Umgebungsvariablen, die beim Starten des Servers festgelegt werden |
+| `initialization` | Objekt | Initialisierungsoptionen zum Senden an den LSP-Server |
+
+Schauen wir uns einige Beispiele an.
+
+---
+
+### Umgebungsvariablen
+
+Verwenden Sie die Eigenschaft `env`, um Umgebungsvariablen festzulegen, wenn Sie den Server LSP starten:
+
+```json title="opencode.json" {5-7}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "lsp": {
+ "rust": {
+ "env": {
+ "RUST_LOG": "debug"
+ }
+ }
+ }
+}
+```
+
+---
+
+### Initialisierungsoptionen
+
+Verwenden Sie die Eigenschaft `initialization`, um Initialisierungsoptionen an den Server LSP zu übergeben. Dies sind serverspezifische Einstellungen, die während der LSP `initialize`-Anfrage gesendet werden:
+
+```json title="opencode.json" {5-9}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "lsp": {
+ "typescript": {
+ "initialization": {
+ "preferences": {
+ "importModuleSpecifierPreference": "relative"
+ }
+ }
+ }
+ }
+}
+```
+
+:::note
+Die Initialisierungsoptionen variieren je nach LSP-Server. Überprüfen Sie die Dokumentation Ihres LSP-Servers auf verfügbare Optionen.
+:::
+
+---
+
+### Deaktivieren von LSP-Servern
+
+Um **alle** LSP-Server global zu deaktivieren, setzen Sie `lsp` auf `false`:
+
+```json title="opencode.json" {3}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "lsp": false
+}
+```
+
+Um einen **bestimmten** LSP-Server zu deaktivieren, setzen Sie `disabled` auf `true`:
+
+```json title="opencode.json" {5}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "lsp": {
+ "typescript": {
+ "disabled": true
+ }
+ }
+}
+```
+
+---
+
+### Benutzerdefinierter LSP-Server
+
+Sie können einen benutzerdefinierten LSP-Server hinzufügen, indem Sie den Befehl und die Dateierweiterungen angeben:
+
+```json title="opencode.json" {4-7}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "lsp": {
+ "custom-lsp": {
+ "command": ["custom-lsp-server", "--stdio"],
+ "extensions": [".custom"]
+ }
+ }
+}
+```
+
+---
+
+## Weitere Informationen
+
+### PHP Intelepense
+
+PHP Intelepense bietet Premium-Funktionen über einen Lizenzschlüssel. Sie können einen Lizenzschlüssel bereitstellen, indem Sie (nur) den Schlüssel in eine Textdatei einfügen unter:
+
+- Auf macOS/Linux: `$HOME/intelephense/licence.txt`
+- Unter Windows: `%USERPROFILE%/intelephense/licence.txt`
+
+Die Datei sollte nur den Lizenzschlüssel ohne zusätzlichen Inhalt enthalten.
diff --git a/packages/web/src/content/docs/de/mcp-servers.mdx b/packages/web/src/content/docs/de/mcp-servers.mdx
new file mode 100644
index 000000000..f287365b0
--- /dev/null
+++ b/packages/web/src/content/docs/de/mcp-servers.mdx
@@ -0,0 +1,511 @@
+---
+title: MCP Server
+description: Fügen Sie lokale und Remote-MCP-Tools hinzu.
+---
+
+Sie können externe Tools zu OpenCode hinzufügen, indem Sie das _Model Context Protocol_ oder MCP verwenden. OpenCode unterstützt sowohl lokale als auch Remote-Server.
+
+Nach dem Hinzufügen stehen MCP-Tools automatisch neben den integrierten Tools für LLM zur Verfügung.
+
+---
+
+#### Caveats
+
+Wenn Sie einen MCP-Server verwenden, wird dieser zum Kontext hinzugefügt. Wenn Sie viele Werkzeuge haben, können Sie das schnell zusammenfassen. Wir empfehlen daher, vorsichtig zu sein, welchen MCP-Server Sie verwenden.
+
+:::tip
+MCP-Server ergänzen Ihren Kontext, daher sollten Sie vorsichtig sein, welchen Server Sie aktivieren.
+:::
+
+Bestimmte MCP-Server, wie der GitHub-Server MCP, neigen dazu, viele Token hinzuzufügen und können leicht das Kontextlimit überschreiten.
+
+---
+
+## Enable
+
+Sie können den MCP-Server in Ihrem [OpenCode Config](https://opencode.ai/docs/config/) unter `mcp` definieren. Fügen Sie jedem MCP einen eindeutigen Namen hinzu. Sie können bei der Eingabe von LLM namentlich auf diesen MCP verweisen.
+
+```jsonc title="opencode.jsonc" {6}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "name-of-mcp-server": {
+ // ...
+ "enabled": true,
+ },
+ "name-of-other-mcp-server": {
+ // ...
+ },
+ },
+}
+```
+
+Sie können einen Server auch deaktivieren, indem Sie `enabled` auf `false` setzen. Dies ist nützlich, wenn Sie einen Server vorübergehend deaktivieren möchten, ohne ihn aus Ihrer Konfiguration zu entfernen.
+
+---
+
+### Überschreiben von Remote-Standardwerten
+
+Organisationen können über ihren `.well-known/opencode`-Endpunkt Standard-MCP-Server bereitstellen. Diese Server sind möglicherweise standardmäßig deaktiviert, sodass Benutzer sich für den Server entscheiden können, die sie benötigen.
+
+Um einen bestimmten Server aus der Remote-Konfiguration Ihrer Organisation zu aktivieren, fügen Sie ihn mit `enabled: true` zu Ihrer lokalen Konfiguration hinzu:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "jira": {
+ "type": "remote",
+ "url": "https://jira.example.com/mcp",
+ "enabled": true
+ }
+ }
+}
+```
+
+Ihre lokalen Konfigurationswerte überschreiben die Remote-Standardwerte. Weitere Einzelheiten finden Sie unter [config precedence](/docs/config#precedence-order).
+
+---
+
+## Local
+
+Fügen Sie lokale MCP-Server mit `type` bis `"local"` innerhalb des MCP-Objekts hinzu.
+
+```jsonc title="opencode.jsonc" {15}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "my-local-mcp-server": {
+ "type": "local",
+ // Or ["bun", "x", "my-mcp-command"]
+ "command": ["npx", "-y", "my-mcp-command"],
+ "enabled": true,
+ "environment": {
+ "MY_ENV_VAR": "my_env_var_value",
+ },
+ },
+ },
+}
+```
+
+Mit dem Befehl wird der lokale MCP-Server gestartet. Sie können auch eine Liste von Umgebungsvariablen übergeben.
+
+So können Sie beispielsweise den Testserver [`@modelcontextprotocol/server-everything`](https://www.npmjs.com/package/@modelcontextprotocol/server-everything) MCP hinzufügen.
+
+```jsonc title="opencode.jsonc"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "mcp_everything": {
+ "type": "local",
+ "command": ["npx", "-y", "@modelcontextprotocol/server-everything"],
+ },
+ },
+}
+```
+
+Und um es zu verwenden, kann ich `use the mcp_everything tool` zu meinen Eingabeaufforderungen hinzufügen.
+
+```txt "mcp_everything"
+use the mcp_everything tool to add the number 3 and 4
+```
+
+---
+
+#### Options
+
+Hier finden Sie alle Optionen zum Konfigurieren eines lokalen MCP-Servers.
+
+| Option | Geben Sie | ein Erforderlich | Beschreibung |
+| ------------- | ------- | -------- | ----------------------------------------------------------------------------------- |
+| `type` | Zeichenfolge | Y | Typ der MCP-Serververbindung, muss `"local"` sein. |
+| `command` | Array | Y | Befehl und Argumente zum Ausführen des MCP-Servers. |
+| `environment` | Objekt | | Umgebungsvariablen, die beim Ausführen des Servers festgelegt werden sollen. |
+| `enabled` | Boolescher Wert | | Aktivieren oder deaktivieren Sie den MCP-Server beim Start. |
+| `timeout` | Nummer | | Timeout in ms für das Abrufen von Tools vom MCP-Server. Standardmäßig ist 5000 (5 Sekunden). |
+
+---
+
+## Remote
+
+Fügen Sie den Remote-MCP-Server hinzu, indem Sie `type` auf `"remote"` setzen.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "my-remote-mcp": {
+ "type": "remote",
+ "url": "https://my-mcp-server.com",
+ "enabled": true,
+ "headers": {
+ "Authorization": "Bearer MY_API_KEY"
+ }
+ }
+ }
+}
+```
+
+Der `url` ist der URL des Remote-Servers MCP und mit der Option `headers` können Sie eine Liste von Headern übergeben.
+
+---
+
+#### Options
+
+| Option | Geben Sie | ein Erforderlich | Beschreibung |
+| --------- | ------- | -------- | ----------------------------------------------------------------------------------- |
+| `type` | Zeichenfolge | Y | Typ der MCP-Serververbindung, muss `"remote"` sein. |
+| `url` | Zeichenfolge | Y | URL des Remote-Servers MCP. |
+| `enabled` | Boolescher Wert | | Aktivieren oder deaktivieren Sie den MCP-Server beim Start. |
+| `headers` | Objekt | | Header, die mit der Anfrage gesendet werden sollen. |
+| `oauth` | Objekt | | OAuth-Authentifizierungskonfiguration. Siehe Abschnitt [OAuth](#oauth) unten. |
+| `timeout` | Nummer | | Timeout in ms für das Abrufen von Tools vom MCP-Server. Standardmäßig ist 5000 (5 Sekunden). |
+
+---
+
+## OAuth
+
+OpenCode übernimmt automatisch die OAuth-Authentifizierung für Remote-MCP-Server. Wenn ein Server eine Authentifizierung erfordert, wird OpenCode Folgendes tun:
+
+1. Erkennen Sie die 401-Antwort und initiieren Sie den OAuth-Fluss
+2. Verwenden Sie **Dynamische Client-Registrierung (RFC 7591)**, sofern vom Server unterstützt
+3. Bewahren Sie Token sicher für zukünftige Anfragen auf
+
+---
+
+### Automatic
+
+Für die meisten OAuth-fähigen MCP-Server ist keine spezielle Konfiguration erforderlich. Konfigurieren Sie einfach den Remote-Server:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "my-oauth-server": {
+ "type": "remote",
+ "url": "https://mcp.example.com/mcp"
+ }
+ }
+}
+```
+
+Wenn der Server eine Authentifizierung erfordert, werden Sie von OpenCode beim ersten Versuch, ihn zu verwenden, zur Authentifizierung autorisiert. Wenn nicht, können Sie [manually trigger the flow](#authenticating) mit `opencode mcp auth ` verwenden.
+
+---
+
+### Pre-registered
+
+Wenn Sie über Client-Anmeldeinformationen vom Serveranbieter MCP verfügen, können Sie diese konfigurieren:
+
+```json title="opencode.json" {7-11}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "my-oauth-server": {
+ "type": "remote",
+ "url": "https://mcp.example.com/mcp",
+ "oauth": {
+ "clientId": "{env:MY_MCP_CLIENT_ID}",
+ "clientSecret": "{env:MY_MCP_CLIENT_SECRET}",
+ "scope": "tools:read tools:execute"
+ }
+ }
+ }
+}
+```
+
+---
+
+### Authenticating
+
+Sie können die Authentifizierung manuell auslösen oder Anmeldeinformationen verwalten.
+
+Authentifizieren Sie sich bei einem bestimmten MCP-Server:
+
+```bash
+opencode mcp auth my-oauth-server
+```
+
+Hören Sie alle MCP-Server und ihren Authentifizierungsstatus auf:
+
+```bash
+opencode mcp list
+```
+
+Gespeicherte Zugangsdaten entfernen:
+
+```bash
+opencode mcp logout my-oauth-server
+```
+
+Der Befehl `mcp auth` öffnet Ihren Browser zur Autorisierung. Nach der Autorisierung speichert OpenCode die Token sicher in `~/.local/share/opencode/mcp-auth.json`.
+
+---
+
+#### OAuth deaktivieren
+
+Wenn Sie automatisches OAuth für einen Server deaktivieren möchten (e.g., für Server, die stattdessen API-Schlüssel verwenden), setzen Sie `oauth` auf `false`:
+
+```json title="opencode.json" {7}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "my-api-key-server": {
+ "type": "remote",
+ "url": "https://mcp.example.com/mcp",
+ "oauth": false,
+ "headers": {
+ "Authorization": "Bearer {env:MY_API_KEY}"
+ }
+ }
+ }
+}
+```
+
+---
+
+#### OAuth-Optionen
+
+| Option | Geben Sie | ein Beschreibung |
+| -------------- | --------------- | -------------------------------------------------------------------------------- |
+| `oauth` | Objekt \| falsch | OAuth-Konfigurationsobjekt oder `false`, um die automatische OAuth-Erkennung zu deaktivieren. |
+| `clientId` | Zeichenfolge | OAuth-Client ID. Wenn nicht angegeben, wird eine dynamische Client-Registrierung versucht. |
+| `clientSecret` | Zeichenfolge | OAuth-Client-Geheimnis, falls vom Autorisierungsserver erforderlich. |
+| `scope` | Zeichenfolge | OAuth-Bereiche, die während der Autorisierung angefordert werden sollen. |
+
+#### Debugging
+
+Wenn die Authentifizierung eines Remote-Servers MCP fehlschlägt, können Sie Probleme diagnostizieren mit:
+
+```bash
+# View auth status for all OAuth-capable servers
+opencode mcp auth list
+
+# Debug connection and OAuth flow for a specific server
+opencode mcp debug my-oauth-server
+```
+
+Der Befehl `mcp debug` zeigt den aktuellen Authentifizierungsstatus an, testet die HTTP-Konnektivität und versucht den OAuth-Erkennungsfluss.
+
+---
+
+## Manage
+
+Ihre MCPs sind neben integrierten Tools auch als Tools in OpenCode verfügbar. Sie können sie also wie jedes andere Tool über die OpenCode-Konfiguration verwalten.
+
+---
+
+### Global
+
+Das bedeutet, dass Sie sie global aktivieren oder deaktivieren können.
+
+```json title="opencode.json" {14}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "my-mcp-foo": {
+ "type": "local",
+ "command": ["bun", "x", "my-mcp-command-foo"]
+ },
+ "my-mcp-bar": {
+ "type": "local",
+ "command": ["bun", "x", "my-mcp-command-bar"]
+ }
+ },
+ "tools": {
+ "my-mcp-foo": false
+ }
+}
+```
+
+Wir können auch ein Glob-Muster verwenden, um alle passenden MCPs zu deaktivieren.
+
+```json title="opencode.json" {14}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "my-mcp-foo": {
+ "type": "local",
+ "command": ["bun", "x", "my-mcp-command-foo"]
+ },
+ "my-mcp-bar": {
+ "type": "local",
+ "command": ["bun", "x", "my-mcp-command-bar"]
+ }
+ },
+ "tools": {
+ "my-mcp*": false
+ }
+}
+```
+
+Hier verwenden wir das Glob-Muster `my-mcp*`, um alle MCPs zu deaktivieren.
+
+---
+
+### Pro Agent
+
+Wenn Sie über eine große Anzahl von MCP-Servern verfügen, möchten Sie diese möglicherweise nur pro Agent aktivieren und global deaktivieren. Gehen Sie dazu wie folgt vor:
+
+1. Deaktivieren Sie es global als Tool.
+2. Aktivieren Sie in Ihrem [agent config](/docs/agents#tools) den MCP-Server als Tool.
+
+```json title="opencode.json" {11, 14-18}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "my-mcp": {
+ "type": "local",
+ "command": ["bun", "x", "my-mcp-command"],
+ "enabled": true
+ }
+ },
+ "tools": {
+ "my-mcp*": false
+ },
+ "agent": {
+ "my-agent": {
+ "tools": {
+ "my-mcp*": true
+ }
+ }
+ }
+}
+```
+
+---
+
+#### Glob-Muster
+
+Das Glob-Muster verwendet einfache Regex-Globbing-Muster:
+
+- `*` entspricht null oder mehr Zeichen (e.g., `"my-mcp*"` entspricht `my-mcp_search`, `my-mcp_list` usw.)
+- `?` matches exactly one character
+- Alle anderen Zeichen stimmen wörtlich überein
+
+:::note
+MCP-Servertools werden mit dem Servernamen als Präfix registriert. Um alle Tools für einen Server zu deaktivieren, verwenden Sie einfach Folgendes:
+
+```
+"mymcpservername_*": false
+```
+
+:::
+
+---
+
+## Examples
+
+Nachfolgend finden Sie Beispiele einiger gängiger MCP-Server. Sie können ein PR einreichen, wenn Sie einen anderen Server dokumentieren möchten.
+
+---
+
+### Sentry
+
+Fügen Sie [Sentry MCP server](https://mcp.sentry.dev) hinzu, um mit Ihren Sentry-Projekten und -Problemen zu interagieren.
+
+```json title="opencode.json" {4-8}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "sentry": {
+ "type": "remote",
+ "url": "https://mcp.sentry.dev/mcp",
+ "oauth": {}
+ }
+ }
+}
+```
+
+Authentifizieren Sie sich nach dem Hinzufügen der Konfiguration mit Sentry:
+
+```bash
+opencode mcp auth sentry
+```
+
+Dadurch wird ein Browserfenster geöffnet, um den OAuth-Ablauf abzuschließen und OpenCode mit Ihrem Sentry-Konto zu verbinden.
+
+Nach der Authentifizierung können Sie Sentry-Tools in Ihren Eingabeaufforderungen verwenden, um Probleme, Projekte und Fehlerdaten abzufragen.
+
+```txt "use sentry"
+Show me the latest unresolved issues in my project. use sentry
+```
+
+---
+
+### Context7
+
+Fügen Sie [Context7 MCP server](https://github.com/upstash/context7) hinzu, um Dokumente zu durchsuchen.
+
+```json title="opencode.json" {4-7}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "context7": {
+ "type": "remote",
+ "url": "https://mcp.context7.com/mcp"
+ }
+ }
+}
+```
+
+Wenn Sie sich für ein kostenloses Konto angemeldet haben, können Sie Ihren API-Schlüssel verwenden und höhere Ratenlimits erhalten.
+
+```json title="opencode.json" {7-9}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "context7": {
+ "type": "remote",
+ "url": "https://mcp.context7.com/mcp",
+ "headers": {
+ "CONTEXT7_API_KEY": "{env:CONTEXT7_API_KEY}"
+ }
+ }
+ }
+}
+```
+
+Hier gehen wir davon aus, dass Sie die Umgebungsvariable `CONTEXT7_API_KEY` festgelegt haben.
+
+Fügen Sie `use context7` zu Ihren Eingabeaufforderungen hinzu, um den Context7 MCP-Server zu verwenden.
+
+```txt "use context7"
+Configure a Cloudflare Worker script to cache JSON API responses for five minutes. use context7
+```
+
+Alternativ können Sie so etwas zu Ihrem [AGENTS.md](/docs/rules/) hinzufügen.
+
+```md title="AGENTS.md"
+When you need to search docs, use `context7` tools.
+```
+
+---
+
+### Grep von Vercel
+
+Fügen Sie den Server [Grep by Vercel](https://grep.app) MCP hinzu, um Codefragmente auf GitHub zu durchsuchen.
+
+```json title="opencode.json" {4-7}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "gh_grep": {
+ "type": "remote",
+ "url": "https://mcp.grep.app"
+ }
+ }
+}
+```
+
+Da wir unseren MCP-Server `gh_grep` genannt haben, können Sie `use the gh_grep tool` zu Ihren Eingabeaufforderungen hinzufügen, um den Agenten dazu zu bringen, ihn zu verwenden.
+
+```txt "use the gh_grep tool"
+What's the right way to set a custom domain in an SST Astro component? use the gh_grep tool
+```
+
+Alternativ können Sie so etwas zu Ihrem [AGENTS.md](/docs/rules/) hinzufügen.
+
+```md title="AGENTS.md"
+If you are unsure how to do something, use `gh_grep` to search code examples from GitHub.
+```
diff --git a/packages/web/src/content/docs/de/models.mdx b/packages/web/src/content/docs/de/models.mdx
new file mode 100644
index 000000000..c605f451a
--- /dev/null
+++ b/packages/web/src/content/docs/de/models.mdx
@@ -0,0 +1,223 @@
+---
+title: Modelle
+description: Konfigurieren eines LLM-Anbieters und -Modells.
+---
+
+OpenCode verwendet [AI SDK](https://ai-sdk.dev/) und [Models.dev](https://models.dev) zur Unterstützung von **75+ LLM-Anbietern** und unterstützt die Ausführung lokaler Modelle.
+
+---
+
+## Providers
+
+Die meisten gängigen Anbieter sind standardmäßig vorinstalliert. Wenn Sie die Anmeldeinformationen für einen Anbieter über den Befehl `/connect` hinzugefügt haben, sind diese verfügbar, wenn Sie OpenCode starten.
+
+Erfahren Sie mehr über [providers](/docs/providers).
+
+---
+
+## Wählen Sie ein Modell aus
+
+Sobald Sie Ihren Anbieter konfiguriert haben, können Sie das gewünschte Modell auswählen, indem Sie Folgendes eingeben:
+
+```bash frame="none"
+/models
+```
+
+---
+
+## Empfohlene Modelle
+
+Es gibt viele Modelle da draußen und jede Woche kommen neue Modelle heraus.
+
+:::tip
+Erwägen Sie die Verwendung eines der von uns empfohlenen Modelle.
+:::
+
+Allerdings gibt es nur wenige von ihnen, die sowohl gut darin sind, Code zu generieren als auch Tools aufzurufen.
+
+Hier sind mehrere Modelle, die gut mit OpenCode funktionieren, in keiner bestimmten Reihenfolge. (Dies ist weder eine vollständige noch eine unbedingt aktuelle Liste):
+
+- GPT 5.2
+- GPT 5.1 Kodex
+- Claude Opus 4.5
+- Claude Sonett 4.5
+- Minimax M2.1
+- Gemini 3 Pro
+
+---
+
+## Legen Sie einen Standard fest
+
+Um eines davon als Standardmodell festzulegen, können Sie den Schlüssel `model` in Ihrem festlegen
+OpenCode config.
+
+```json title="opencode.json" {3}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "model": "lmstudio/google/gemma-3n-e4b"
+}
+```
+
+Hier ist der vollständige ID `provider_id/model_id`. Wenn Sie beispielsweise [OpenCode Zen](/docs/zen) verwenden, würden Sie `opencode/gpt-5.1-codex` für GPT 5.1 Codex verwenden.
+
+Wenn Sie einen [custom provider](/docs/providers#custom) konfiguriert haben, ist `provider_id` der Schlüssel aus dem `provider`-Teil Ihrer Konfiguration und `model_id` der Schlüssel aus `provider.models`.
+
+---
+
+## Modelle konfigurieren
+
+Sie können die Optionen eines Modells global über die Konfiguration konfigurieren.
+
+```jsonc title="opencode.jsonc" {7-12,19-24}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "openai": {
+ "models": {
+ "gpt-5": {
+ "options": {
+ "reasoningEffort": "high",
+ "textVerbosity": "low",
+ "reasoningSummary": "auto",
+ "include": ["reasoning.encrypted_content"],
+ },
+ },
+ },
+ },
+ "anthropic": {
+ "models": {
+ "claude-sonnet-4-5-20250929": {
+ "options": {
+ "thinking": {
+ "type": "enabled",
+ "budgetTokens": 16000,
+ },
+ },
+ },
+ },
+ },
+ },
+}
+```
+
+Hier konfigurieren wir globale Einstellungen für zwei integrierte Modelle: `gpt-5` bei Zugriff über den `openai`-Anbieter und `claude-sonnet-4-20250514` bei Zugriff über den `anthropic`-Anbieter.
+Die integrierten Anbieter- und Modellnamen finden Sie unter [Models.dev](https://models.dev).
+
+Sie können diese Optionen auch für alle von Ihnen verwendeten Agenten konfigurieren. Die Agentenkonfiguration beschreibt hier alle globalen Optionen. [Learn more](/docs/agents/#additional).
+
+Sie können auch benutzerdefinierte Varianten definieren, die integrierte Varianten erweitern. Mit Varianten können Sie unterschiedliche Einstellungen für dasselbe Modell konfigurieren, ohne doppelte Einträge zu erstellen:
+
+```jsonc title="opencode.jsonc" {6-21}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "opencode": {
+ "models": {
+ "gpt-5": {
+ "variants": {
+ "high": {
+ "reasoningEffort": "high",
+ "textVerbosity": "low",
+ "reasoningSummary": "auto",
+ },
+ "low": {
+ "reasoningEffort": "low",
+ "textVerbosity": "low",
+ "reasoningSummary": "auto",
+ },
+ },
+ },
+ },
+ },
+ },
+}
+```
+
+---
+
+## Variants
+
+Viele Modelle unterstützen mehrere Varianten mit unterschiedlichen Konfigurationen. OpenCode wird mit integrierten Standardvarianten für beliebte Anbieter ausgeliefert.
+
+### Einbauvarianten
+
+OpenCode wird für viele Anbieter mit Standardvarianten ausgeliefert:
+
+**Anthropisch**:
+
+- `high` – Budget für hohes Denken (Standard)
+- `max` – Maximales Denkbudget
+
+**OpenAI**:
+
+Variiert je nach Modell, aber ungefähr:
+
+- `none` – Keine Begründung
+- `minimal` – Minimaler Argumentationsaufwand
+- `low` – Geringer Denkaufwand
+- `medium` – Mittlerer Denkaufwand
+- `high` – Hoher Denkaufwand
+- `xhigh` – Extra hoher Argumentationsaufwand
+
+**Google**:
+
+- `low` – Beliebtestes effort/token-Budget
+- `high` – Höheres effort/token-Budget
+
+:::tip
+Diese Liste ist nicht vollständig. Viele andere Anbieter verfügen ebenfalls über integrierte Standardeinstellungen.
+:::
+
+### Benutzerdefinierte Varianten
+
+Sie können vorhandene Varianten überschreiben oder eigene hinzufügen:
+
+```jsonc title="opencode.jsonc" {7-18}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "openai": {
+ "models": {
+ "gpt-5": {
+ "variants": {
+ "thinking": {
+ "reasoningEffort": "high",
+ "textVerbosity": "low",
+ },
+ "fast": {
+ "disabled": true,
+ },
+ },
+ },
+ },
+ },
+ },
+}
+```
+
+### Zyklusvarianten
+
+Verwenden Sie die Tastenkombination `variant_cycle`, um schnell zwischen Varianten zu wechseln. [Learn more](/docs/keybinds).
+
+---
+
+## Laden von Modellen
+
+Wenn OpenCode startet, sucht es nach Modellen in der folgenden Prioritätsreihenfolge:
+
+1. Das Befehlszeilenflag `--model` oder `-m`. Das Format ist das gleiche wie in der Konfigurationsdatei: `provider_id/model_id`.
+
+2. Die Modellliste in der OpenCode-Konfiguration.
+
+ ```json title="opencode.json"
+ {
+ "$schema": "https://opencode.ai/config.json",
+ "model": "anthropic/claude-sonnet-4-20250514"
+ }
+ ```
+
+ Das Format hier ist `provider/model`.
+
+3. Das zuletzt verwendete Modell.
+
+4. Das erste Modell, das eine interne Priorität verwendet.
diff --git a/packages/web/src/content/docs/de/modes.mdx b/packages/web/src/content/docs/de/modes.mdx
new file mode 100644
index 000000000..d03d56730
--- /dev/null
+++ b/packages/web/src/content/docs/de/modes.mdx
@@ -0,0 +1,331 @@
+---
+title: Modi
+description: Verschiedene Modi für unterschiedliche Anwendungsfälle.
+---
+
+:::caution
+Modi werden jetzt über die Option `agent` in der Opencode-Konfiguration konfiguriert. Der
+Die Option `mode` ist jetzt veraltet. [Learn more](/docs/agents).
+:::
+
+Mit den Modi in Opencode können Sie das Verhalten, die Tools und die Eingabeaufforderungen für verschiedene Anwendungsfälle anpassen.
+
+Es verfügt über zwei integrierte Modi: **Build** und **Plan**. Sie können anpassen
+diese oder konfigurieren Sie Ihre eigenen über die Opencode-Konfiguration.
+
+Sie können während einer Sitzung zwischen den Modi wechseln oder diese in Ihrer Konfigurationsdatei konfigurieren.
+
+---
+
+## Built-in
+
+Opencode verfügt über zwei integrierte Modi.
+
+---
+
+### Build
+
+Build ist der **Standardmodus**, bei dem alle Tools aktiviert sind. Dies ist der Standardmodus für Entwicklungsarbeiten, bei dem Sie vollen Zugriff auf Dateioperationen und Systembefehle benötigen.
+
+---
+
+### Plan
+
+Ein eingeschränkter Modus für Planung und Analyse. Im Planmodus sind die folgenden Tools standardmäßig deaktiviert:
+
+- `write` – Es können keine neuen Dateien erstellt werden
+- `edit` – Vorhandene Dateien können nicht geändert werden, mit Ausnahme der Dateien unter `.opencode/plans/*.md`, um den Plan selbst detailliert darzustellen
+- `patch` – Patches können nicht angewendet werden
+- `bash` – Shell-Befehle können nicht ausgeführt werden
+
+Dieser Modus ist nützlich, wenn Sie möchten, dass AI Code analysiert, Änderungen vorschlägt oder Pläne erstellt, ohne tatsächliche Änderungen an Ihrer Codebasis vorzunehmen.
+
+---
+
+## Switching
+
+Sie können während einer Sitzung mit der _Tab_-Taste zwischen den Modi wechseln. Oder Ihre konfigurierte `switch_mode`-Tastenkombination.
+
+Siehe auch: [Formatters](/docs/formatters) für Informationen zur Codeformatierungskonfiguration.
+
+---
+
+## Configure
+
+Sie können die integrierten Modi anpassen oder über die Konfiguration eigene erstellen. Modi können auf zwei Arten konfiguriert werden:
+
+### JSON Konfiguration
+
+Konfigurieren Sie Modi in Ihrer `opencode.json`-Konfigurationsdatei:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mode": {
+ "build": {
+ "model": "anthropic/claude-sonnet-4-20250514",
+ "prompt": "{file:./prompts/build.txt}",
+ "tools": {
+ "write": true,
+ "edit": true,
+ "bash": true
+ }
+ },
+ "plan": {
+ "model": "anthropic/claude-haiku-4-20250514",
+ "tools": {
+ "write": false,
+ "edit": false,
+ "bash": false
+ }
+ }
+ }
+}
+```
+
+### Markdown-Konfiguration
+
+Sie können Modi auch mithilfe von Markdown-Dateien definieren. Platzieren Sie sie in:
+
+- Global: `~/.config/opencode/modes/`
+- Projekt: `.opencode/modes/`
+
+```markdown title="~/.config/opencode/modes/review.md"
+---
+model: anthropic/claude-sonnet-4-20250514
+temperature: 0.1
+tools:
+ write: false
+ edit: false
+ bash: false
+---
+
+You are in code review mode. Focus on:
+
+- Code quality and best practices
+- Potential bugs and edge cases
+- Performance implications
+- Security considerations
+
+Provide constructive feedback without making direct changes.
+```
+
+Der Name der Markdown-Datei wird zum Modusnamen (e.g., `review.md` erstellt einen `review`-Modus).
+
+Schauen wir uns diese Konfigurationsmöglichkeiten im Detail an.
+
+---
+
+### Model
+
+Verwenden Sie die `model`-Konfiguration, um das Standardmodell für diesen Modus zu überschreiben. Nützlich für die Verwendung verschiedener Modelle, die für verschiedene Aufgaben optimiert sind. Zum Beispiel ein schnelleres Modell für die Planung, ein leistungsfähigeres Modell für die Umsetzung.
+
+```json title="opencode.json"
+{
+ "mode": {
+ "plan": {
+ "model": "anthropic/claude-haiku-4-20250514"
+ }
+ }
+}
+```
+
+---
+
+### Temperature
+
+Steuern Sie die Zufälligkeit und Kreativität der Antworten von AI mit der `temperature`-Konfiguration. Niedrigere Werte machen die Antworten fokussierter und deterministischer, während höhere Werte die Kreativität und Variabilität steigern.
+
+```json title="opencode.json"
+{
+ "mode": {
+ "plan": {
+ "temperature": 0.1
+ },
+ "creative": {
+ "temperature": 0.8
+ }
+ }
+}
+```
+
+Temperaturwerte liegen typischerweise zwischen 0.0 und 1.0:
+
+- **0.0-0.2**: Sehr fokussierte und deterministische Antworten, ideal für Code-Analyse und Planung
+- **0.3-0.5**: Ausgewogene Antworten mit etwas Kreativität, gut für allgemeine Entwicklungsaufgaben
+- **0.6-1.0**: Kreativere und vielfältigere Antworten, nützlich für Brainstorming und Erkundung
+
+```json title="opencode.json"
+{
+ "mode": {
+ "analyze": {
+ "temperature": 0.1,
+ "prompt": "{file:./prompts/analysis.txt}"
+ },
+ "build": {
+ "temperature": 0.3
+ },
+ "brainstorm": {
+ "temperature": 0.7,
+ "prompt": "{file:./prompts/creative.txt}"
+ }
+ }
+}
+```
+
+Wenn keine Temperatur angegeben ist, verwendet Opencode modellspezifische Standardwerte (normalerweise 0 für die meisten Modelle, 0.55 für Qwen-Modelle).
+
+---
+
+### Prompt
+
+Geben Sie mit der `prompt`-Konfiguration eine benutzerdefinierte Systemaufforderungsdatei für diesen Modus an. Die Eingabeaufforderungsdatei sollte spezifische Anweisungen für den Zweck des Modus enthalten.
+
+```json title="opencode.json"
+{
+ "mode": {
+ "review": {
+ "prompt": "{file:./prompts/code-review.txt}"
+ }
+ }
+}
+```
+
+Dieser Pfad ist relativ zum Speicherort der Konfigurationsdatei. Das funktioniert also
+sowohl die globale Opencode-Konfiguration als auch die projektspezifische Konfiguration.
+
+---
+
+### Tools
+
+Steuern Sie mit der `tools`-Konfiguration, welche Tools in diesem Modus verfügbar sind. Sie können bestimmte Tools aktivieren oder deaktivieren, indem Sie sie auf `true` oder `false` setzen.
+
+```json
+{
+ "mode": {
+ "readonly": {
+ "tools": {
+ "write": false,
+ "edit": false,
+ "bash": false,
+ "read": true,
+ "grep": true,
+ "glob": true
+ }
+ }
+ }
+}
+```
+
+Wenn keine Tools angegeben sind, sind alle Tools standardmäßig aktiviert.
+
+---
+
+#### Verfügbare Werkzeuge
+
+Hier sind alle Tools aufgeführt, die über den Konfigurationsmodus gesteuert werden können.
+
+| Werkzeug | Beschreibung |
+| ----------- | ----------------------- |
+| `bash` | Shell-Befehle ausführen |
+| `edit` | Vorhandene Dateien ändern |
+| `write` | Neue Dateien erstellen |
+| `read` | Dateiinhalt lesen |
+| `grep` | Dateiinhalte durchsuchen |
+| `glob` | Dateien nach Muster suchen |
+| `list` | Verzeichnisinhalte auflisten |
+| `patch` | Patches auf Dateien anwenden |
+| `todowrite` | Aufgabenlisten verwalten |
+| `todoread` | Aufgabenlisten lesen |
+| `webfetch` | Webinhalte abrufen |
+
+---
+
+## Benutzerdefinierte Modi
+
+Sie können Ihre eigenen benutzerdefinierten Modi erstellen, indem Sie diese zur Konfiguration hinzufügen. Hier sind Beispiele für beide Ansätze:
+
+### Verwenden der JSON-Konfiguration
+
+```json title="opencode.json" {4-14}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "mode": {
+ "docs": {
+ "prompt": "{file:./prompts/documentation.txt}",
+ "tools": {
+ "write": true,
+ "edit": true,
+ "bash": false,
+ "read": true,
+ "grep": true,
+ "glob": true
+ }
+ }
+ }
+}
+```
+
+### Verwendung von Markdown-Dateien
+
+Erstellen Sie Modusdateien in `.opencode/modes/` für projektspezifische Modi oder `~/.config/opencode/modes/` für globale Modi:
+
+```markdown title=".opencode/modes/debug.md"
+---
+temperature: 0.1
+tools:
+ bash: true
+ read: true
+ grep: true
+ write: false
+ edit: false
+---
+
+You are in debug mode. Your primary goal is to help investigate and diagnose issues.
+
+Focus on:
+
+- Understanding the problem through careful analysis
+- Using bash commands to inspect system state
+- Reading relevant files and logs
+- Searching for patterns and anomalies
+- Providing clear explanations of findings
+
+Do not make any changes to files. Only investigate and report.
+```
+
+```markdown title="~/.config/opencode/modes/refactor.md"
+---
+model: anthropic/claude-sonnet-4-20250514
+temperature: 0.2
+tools:
+ edit: true
+ read: true
+ grep: true
+ glob: true
+---
+
+You are in refactoring mode. Focus on improving code quality without changing functionality.
+
+Priorities:
+
+- Improve code readability and maintainability
+- Apply consistent naming conventions
+- Reduce code duplication
+- Optimize performance where appropriate
+- Ensure all tests continue to pass
+```
+
+---
+
+### Anwendungsfälle
+
+Hier sind einige häufige Anwendungsfälle für verschiedene Modi.
+
+- **Build-Modus**: Vollständige Entwicklungsarbeit mit allen aktivierten Tools
+- **Planmodus**: Analyse und Planung ohne Änderungen
+- **Überprüfungsmodus**: Codeüberprüfung mit schreibgeschütztem Zugriff plus Dokumentationstools
+- **Debug-Modus**: Konzentriert sich auf die Untersuchung mit aktivierten Bash- und Lesetools
+- **Docs-Modus**: Dokumentationsschreiben mit Dateioperationen, aber ohne Systembefehle
+
+Möglicherweise stellen Sie auch fest, dass unterschiedliche Modelle für unterschiedliche Anwendungsfälle geeignet sind.
diff --git a/packages/web/src/content/docs/de/network.mdx b/packages/web/src/content/docs/de/network.mdx
new file mode 100644
index 000000000..5bbd92fbe
--- /dev/null
+++ b/packages/web/src/content/docs/de/network.mdx
@@ -0,0 +1,57 @@
+---
+title: Netzwerk
+description: Konfigurieren Sie Proxys und benutzerdefinierte Zertifikate.
+---
+
+OpenCode unterstützt Standard-Proxy-Umgebungsvariablen und benutzerdefinierte Zertifikate für Unternehmensnetzwerkumgebungen.
+
+---
+
+## Proxy
+
+OpenCode respects standard proxy environment variables.
+
+```bash
+# HTTPS proxy (recommended)
+export HTTPS_PROXY=https://proxy.example.com:8080
+
+# HTTP proxy (if HTTPS not available)
+export HTTP_PROXY=http://proxy.example.com:8080
+
+# Bypass proxy for local server (required)
+export NO_PROXY=localhost,127.0.0.1
+```
+
+:::caution
+Der TUI kommuniziert mit einem lokalen HTTP-Server. Sie müssen den Proxy für diese Verbindung umgehen, um Routing-Schleifen zu verhindern.
+:::
+
+Sie können den Port und den Hostnamen des Servers mit [CLI flags](/docs/cli#run) konfigurieren.
+
+---
+
+### Authenticate
+
+Wenn Ihr Proxy eine Basisauthentifizierung erfordert, geben Sie Anmeldeinformationen in URL ein.
+
+```bash
+export HTTPS_PROXY=http://username:password@proxy.example.com:8080
+```
+
+:::caution
+Vermeiden Sie hartkodierte Passwörter. Verwenden Sie Umgebungsvariablen oder einen sicheren Speicher für Anmeldeinformationen.
+:::
+
+Für Proxys, die eine erweiterte Authentifizierung wie NTLM oder Kerberos erfordern, sollten Sie die Verwendung eines LLM-Gateways in Betracht ziehen, das Ihre Authentifizierungsmethode unterstützt.
+
+---
+
+## Benutzerdefinierte Zertifikate
+
+Wenn Ihr Unternehmen benutzerdefinierte Zertifizierungsstellen für HTTPS-Verbindungen verwendet, konfigurieren Sie OpenCode so, dass es ihnen vertraut.
+
+```bash
+export NODE_EXTRA_CA_CERTS=/path/to/ca-cert.pem
+```
+
+Dies funktioniert sowohl für Proxy-Verbindungen als auch für den direkten API-Zugriff.
diff --git a/packages/web/src/content/docs/de/permissions.mdx b/packages/web/src/content/docs/de/permissions.mdx
new file mode 100644
index 000000000..9cac6a616
--- /dev/null
+++ b/packages/web/src/content/docs/de/permissions.mdx
@@ -0,0 +1,237 @@
+---
+title: Berechtigungen
+description: Steuern Sie, für welche Aktionen eine Genehmigung erforderlich ist.
+---
+
+OpenCode verwendet die `permission`-Konfiguration, um zu entscheiden, ob eine bestimmte Aktion automatisch ausgeführt werden soll, Sie dazu auffordern oder blockiert werden soll.
+
+Ab `v1.1.1` ist die alte boolesche Konfiguration `tools` veraltet und wurde in `permission` zusammengeführt. Die alte `tools`-Konfiguration wird aus Gründen der Abwärtskompatibilität weiterhin unterstützt.
+
+---
+
+## Actions
+
+Jede Berechtigungsregel wird zu einem der folgenden aufgelöst:
+
+- `"allow"` – ohne Genehmigung ausführen
+- `"ask"` — prompt for approval
+- `"deny"` – Aktion blockieren
+
+---
+
+## Configuration
+
+Sie können Berechtigungen global festlegen (mit `*`) und bestimmte Tools überschreiben.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "*": "ask",
+ "bash": "allow",
+ "edit": "deny"
+ }
+}
+```
+
+Sie können auch alle Berechtigungen auf einmal festlegen:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": "allow"
+}
+```
+
+---
+
+## Granulare Regeln (Objektsyntax)
+
+Bei den meisten Berechtigungen können Sie ein Objekt verwenden, um basierend auf der Werkzeugeingabe verschiedene Aktionen anzuwenden.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "bash": {
+ "*": "ask",
+ "git *": "allow",
+ "npm *": "allow",
+ "rm *": "deny",
+ "grep *": "allow"
+ },
+ "edit": {
+ "*": "deny",
+ "packages/web/src/content/docs/*.mdx": "allow"
+ }
+ }
+}
+```
+
+Regeln werden nach Musterübereinstimmung ausgewertet, wobei die **letzte übereinstimmende Regel gewinnt**. Ein gängiges Muster besteht darin, zuerst die Catch-All-Regel `"*"` und danach spezifischere Regeln zu platzieren.
+
+### Wildcards
+
+Berechtigungsmuster verwenden einen einfachen Platzhalterabgleich:
+
+- `*` matches zero or more of any character
+- `?` matches exactly one character
+- Alle anderen Zeichen stimmen wörtlich überein
+
+### Erweiterung des Home-Verzeichnisses
+
+Sie können `~` oder `$HOME` am Anfang eines Musters verwenden, um auf Ihr Home-Verzeichnis zu verweisen. Dies ist besonders nützlich für [`external_directory`](#external-directories)-Regeln.
+
+- `~/projects/*` -> `/Users/username/projects/*`
+- `$HOME/projects/*` -> `/Users/username/projects/*`
+- `~` -> `/Users/username`
+
+### Externe Verzeichnisse
+
+Verwenden Sie `external_directory`, um Toolaufrufe zuzulassen, die Pfade außerhalb des Arbeitsverzeichnisses berühren, in dem OpenCode gestartet wurde. Dies gilt für jedes Werkzeug, das einen Pfad als Eingabe verwendet (z. B. `read`, `edit`, `list`, `glob`, `grep` und viele `bash`-Befehle).
+
+Die Home-Erweiterung (wie `~/...`) wirkt sich nur darauf aus, wie ein Muster geschrieben wird. Dadurch wird ein externer Pfad nicht zum Teil des aktuellen Arbeitsbereichs, daher müssen Pfade außerhalb des Arbeitsverzeichnisses weiterhin über `external_directory` zulässig sein.
+
+Dies ermöglicht beispielsweise den Zugriff auf alles unter `~/projects/personal/`:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "external_directory": {
+ "~/projects/personal/**": "allow"
+ }
+ }
+}
+```
+
+Jedes hier zulässige Verzeichnis erbt dieselben Standardeinstellungen wie der aktuelle Arbeitsbereich. Seit [`read` defaults to `allow`](#defaults) sind Lesevorgänge auch für Einträge unter `external_directory` zulässig, sofern sie nicht überschrieben werden. Fügen Sie explizite Regeln hinzu, wenn ein Tool in diesen Pfaden eingeschränkt werden soll, z. B. das Blockieren von Bearbeitungen, während Lesevorgänge beibehalten werden:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "external_directory": {
+ "~/projects/personal/**": "allow"
+ },
+ "edit": {
+ "~/projects/personal/**": "deny"
+ }
+ }
+}
+```
+
+Konzentrieren Sie sich in der Liste auf vertrauenswürdige Pfade und fügen Sie bei Bedarf zusätzliche Zulassungs- oder Ablehnungsregeln für andere Tools hinzu (z. B. `bash`).
+
+---
+
+## Verfügbare Berechtigungen
+
+OpenCode permissions are keyed by tool name, plus a couple of safety guards:
+
+- `read` – eine Datei lesen (entspricht dem Dateipfad)
+- `edit` – alle Dateiänderungen (umfasst `edit`, `write`, `patch`, `multiedit`)
+- `glob` – Datei-Globbing (entspricht dem Glob-Muster)
+- `grep` – Inhaltssuche (entspricht dem Regex-Muster)
+- `list` – Auflistung der Dateien in einem Verzeichnis (entspricht dem Verzeichnispfad)
+- `bash` – Ausführen von Shell-Befehlen (entspricht analysierten Befehlen wie `git status --porcelain`)
+- `task` – Subagenten starten (entspricht dem Subagententyp)
+- `skill` – Laden einer Fertigkeit (entspricht dem Fertigkeitsnamen)
+- `lsp` — running LSP queries (currently non-granular)
+- `todoread`, `todowrite` – reading/updating die Aufgabenliste
+- `webfetch` – Abrufen eines URL (entspricht dem URL)
+- `websearch`, `codesearch` – web/code Suche (entspricht der Abfrage)
+- `external_directory` – wird ausgelöst, wenn ein Tool Pfade außerhalb des Projektarbeitsverzeichnisses berührt
+- `doom_loop` – wird ausgelöst, wenn derselbe Werkzeugaufruf dreimal mit identischer Eingabe wiederholt wird
+
+---
+
+## Defaults
+
+Wenn Sie nichts angeben, beginnt OpenCode mit zulässigen Standardeinstellungen:
+
+- Die meisten Berechtigungen sind standardmäßig auf `"allow"` eingestellt.
+- `doom_loop` und `external_directory` sind standardmäßig `"ask"`.
+- `read` is `"allow"`, but `.env` files are denied by default:
+
+```json title="opencode.json"
+{
+ "permission": {
+ "read": {
+ "*": "allow",
+ "*.env": "deny",
+ "*.env.*": "deny",
+ "*.env.example": "allow"
+ }
+ }
+}
+```
+
+---
+
+## Was „Fragen“ bewirkt
+
+Wenn OpenCode zur Genehmigung auffordert, bietet UI drei Ergebnisse:
+
+- `once` — approve just this request
+- `always` – zukünftige Anfragen genehmigen, die den vorgeschlagenen Mustern entsprechen (für den Rest der aktuellen OpenCode-Sitzung)
+- `reject` – die Anfrage ablehnen
+
+Der Satz von Mustern, die `always` genehmigen würde, wird vom Tool bereitgestellt (Beispiel: Bash-Genehmigungen setzen normalerweise ein sicheres Befehlspräfix wie `git status*` auf die Whitelist).
+
+---
+
+## Agents
+
+Sie können Berechtigungen pro Agent überschreiben. Agentenberechtigungen werden mit der globalen Konfiguration zusammengeführt und Agentenregeln haben Vorrang. [Learn more](/docs/agents#permissions) über Agentenberechtigungen.
+
+:::note
+Ausführlichere Mustervergleichsbeispiele finden Sie oben im Abschnitt [Granular Rules (Object Syntax)](#granular-rules-object-syntax).
+:::
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "permission": {
+ "bash": {
+ "*": "ask",
+ "git *": "allow",
+ "git commit *": "deny",
+ "git push *": "deny",
+ "grep *": "allow"
+ }
+ },
+ "agent": {
+ "build": {
+ "permission": {
+ "bash": {
+ "*": "ask",
+ "git *": "allow",
+ "git commit *": "ask",
+ "git push *": "deny",
+ "grep *": "allow"
+ }
+ }
+ }
+ }
+}
+```
+
+Sie können Agentenberechtigungen auch in Markdown konfigurieren:
+
+```markdown title="~/.config/opencode/agents/review.md"
+---
+description: Code review without edits
+mode: subagent
+permission:
+ edit: deny
+ bash: ask
+ webfetch: deny
+---
+
+Only analyze code and suggest changes.
+```
+
+:::tip
+Verwenden Sie den Mustervergleich für Befehle mit Argumenten. `"grep *"` erlaubt `grep pattern file.txt`, während `"grep"` allein es blockieren würde. Befehle wie `git status` funktionieren für das Standardverhalten, erfordern jedoch eine explizite Erlaubnis (wie `"git status *"`), wenn Argumente übergeben werden.
+:::
diff --git a/packages/web/src/content/docs/de/plugins.mdx b/packages/web/src/content/docs/de/plugins.mdx
new file mode 100644
index 000000000..d8c30fcfd
--- /dev/null
+++ b/packages/web/src/content/docs/de/plugins.mdx
@@ -0,0 +1,385 @@
+---
+title: Plugins
+description: Schreiben Sie Ihre eigenen Plugins, um OpenCode zu erweitern.
+---
+
+Mit Plugins können Sie OpenCode erweitern, indem Sie verschiedene Ereignisse einbinden und das Verhalten anpassen. Sie können Plugins erstellen, um neue Funktionen hinzuzufügen, externe Dienste zu integrieren oder das Standardverhalten von OpenCode zu ändern.
+
+Beispiele finden Sie im von der Community erstellten [plugins](/docs/ecosystem#plugins).
+
+---
+
+## Verwenden Sie ein Plugin
+
+Es gibt zwei Möglichkeiten, Plugins zu laden.
+
+---
+
+### Aus lokalen Dateien
+
+Platzieren Sie JavaScript- oder TypeScript-Dateien im Plugin-Verzeichnis.
+
+- `.opencode/plugins/` – Plugins auf Projektebene
+- `~/.config/opencode/plugins/` – Globale Plugins
+
+Dateien in diesen Verzeichnissen werden beim Start automatisch geladen.
+
+---
+
+### Von npm
+
+Geben Sie npm-Pakete in Ihrer Konfigurationsdatei an.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "plugin": ["opencode-helicone-session", "opencode-wakatime", "@my-org/custom-plugin"]
+}
+```
+
+Es werden sowohl reguläre als auch bereichsbezogene NPM-Pakete unterstützt.
+
+Durchsuchen Sie die verfügbaren Plugins im [ecosystem](/docs/ecosystem#plugins).
+
+---
+
+### Wie Plugins installiert werden
+
+**NPM-Plugins** werden beim Start automatisch mit Bun installiert. Pakete und ihre Abhängigkeiten werden in `~/.cache/opencode/node_modules/` zwischengespeichert.
+
+**Lokale Plugins** werden direkt aus dem Plugin-Verzeichnis geladen. Um externe Pakete zu verwenden, müssen Sie ein `package.json` in Ihrem Konfigurationsverzeichnis erstellen (siehe [Dependencies](#dependencies)) oder das Plugin auf npm und [add it to your config](/docs/config#plugins) veröffentlichen.
+
+---
+
+### Auftrag laden
+
+Plugins werden aus allen Quellen geladen und alle Hooks werden nacheinander ausgeführt. Die Ladereihenfolge lautet:
+
+1. Globale Konfiguration (`~/.config/opencode/opencode.json`)
+2. Projektkonfiguration (`opencode.json`)
+3. Globales Plugin-Verzeichnis (`~/.config/opencode/plugins/`)
+4. Projekt-Plugin-Verzeichnis (`.opencode/plugins/`)
+
+Doppelte npm-Pakete mit demselben Namen und derselben Version werden einmal geladen. Allerdings werden ein lokales Plugin und ein NPM-Plugin mit ähnlichen Namen beide separat geladen.
+
+---
+
+## Erstellen Sie ein Plugin
+
+A plugin is a **JavaScript/TypeScript module** that exports one or more plugin
+Funktionen. Jede Funktion empfängt ein Kontextobjekt und gibt ein Hooks-Objekt zurück.
+
+---
+
+### Dependencies
+
+Lokale Plugins und benutzerdefinierte Tools können externe npm-Pakete verwenden. Fügen Sie Ihrem Konfigurationsverzeichnis ein `package.json` mit den benötigten Abhängigkeiten hinzu.
+
+```json title=".opencode/package.json"
+{
+ "dependencies": {
+ "shescape": "^2.1.0"
+ }
+}
+```
+
+OpenCode führt beim Start `bun install` aus, um diese zu installieren. Ihre Plugins und Tools können sie dann importieren.
+
+```ts title=".opencode/plugins/my-plugin.ts"
+import { escape } from "shescape"
+
+export const MyPlugin = async (ctx) => {
+ return {
+ "tool.execute.before": async (input, output) => {
+ if (input.tool === "bash") {
+ output.args.command = escape(output.args.command)
+ }
+ },
+ }
+}
+```
+
+---
+
+### Grundstruktur
+
+```js title=".opencode/plugins/example.js"
+export const MyPlugin = async ({ project, client, $, directory, worktree }) => {
+ console.log("Plugin initialized!")
+
+ return {
+ // Hook implementations go here
+ }
+}
+```
+
+Die Plugin-Funktion erhält:
+
+- `project`: Die aktuellen Projektinformationen.
+- `directory`: Das aktuelle Arbeitsverzeichnis.
+- `worktree`: Der Git-Worktree-Pfad.
+- `client`: Ein Opencode-SDK-Client für die Interaktion mit AI.
+- `$`: Buns [shell API](https://bun.com/docs/runtime/shell) zum Ausführen von Befehlen.
+
+---
+
+### TypeScript support
+
+Für TypeScript-Plugins können Sie Typen aus dem Plugin-Paket importieren:
+
+```ts title="my-plugin.ts" {1}
+import type { Plugin } from "@opencode-ai/plugin"
+
+export const MyPlugin: Plugin = async ({ project, client, $, directory, worktree }) => {
+ return {
+ // Type-safe hook implementations
+ }
+}
+```
+
+---
+
+### Events
+
+Plugins können Ereignisse abonnieren, wie unten im Abschnitt „Beispiele“ gezeigt. Hier finden Sie eine Liste der verschiedenen verfügbaren Veranstaltungen.
+
+#### Befehlsereignisse
+
+- `command.executed`
+
+#### Dateiereignisse
+
+- `file.edited`
+- `file.watcher.updated`
+
+#### Installationsereignisse
+
+- `installation.updated`
+
+#### LSP Ereignisse
+
+- `lsp.client.diagnostics`
+- `lsp.updated`
+
+#### Nachrichtenereignisse
+
+- `message.part.removed`
+- `message.part.updated`
+- `message.removed`
+- `message.updated`
+
+#### Berechtigungsereignisse
+
+- `permission.asked`
+- `permission.replied`
+
+#### Serverereignisse
+
+- `server.connected`
+
+#### Sitzungsereignisse
+
+- `session.created`
+- `session.compacted`
+- `session.deleted`
+- `session.diff`
+- `session.error`
+- `session.idle`
+- `session.status`
+- `session.updated`
+
+#### Todo-Events
+
+- `todo.updated`
+
+#### Shell-Events
+
+- `shell.env`
+
+#### Tool-Ereignisse
+
+- `tool.execute.after`
+- `tool.execute.before`
+
+#### TUI Ereignisse
+
+- `tui.prompt.append`
+- `tui.command.execute`
+- `tui.toast.show`
+
+---
+
+## Examples
+
+Hier sind einige Beispiele für Plugins, mit denen Sie Opencode erweitern können.
+
+---
+
+### Senden Sie Benachrichtigungen
+
+Senden Sie Benachrichtigungen, wenn bestimmte Ereignisse eintreten:
+
+```js title=".opencode/plugins/notification.js"
+export const NotificationPlugin = async ({ project, client, $, directory, worktree }) => {
+ return {
+ event: async ({ event }) => {
+ // Send notification on session completion
+ if (event.type === "session.idle") {
+ await $`osascript -e 'display notification "Session completed!" with title "opencode"'`
+ }
+ },
+ }
+}
+```
+
+Wir verwenden `osascript`, um AppleScript unter macOS auszuführen. Hier verwenden wir es zum Versenden von Benachrichtigungen.
+
+:::note
+Wenn Sie die OpenCode-Desktop-App verwenden, kann diese automatisch Systembenachrichtigungen senden, wenn eine Antwort bereit ist oder wenn in einer Sitzung ein Fehler auftritt.
+:::
+
+---
+
+### .env protection
+
+Verhindern Sie, dass Opencode `.env`-Dateien liest:
+
+```javascript title=".opencode/plugins/env-protection.js"
+export const EnvProtection = async ({ project, client, $, directory, worktree }) => {
+ return {
+ "tool.execute.before": async (input, output) => {
+ if (input.tool === "read" && output.args.filePath.includes(".env")) {
+ throw new Error("Do not read .env files")
+ }
+ },
+ }
+}
+```
+
+---
+
+### Umgebungsvariablen einfügen
+
+Fügen Sie Umgebungsvariablen in alle Shell-Ausführungen ein (AI-Tools und Benutzerterminals):
+
+```javascript title=".opencode/plugins/inject-env.js"
+export const InjectEnvPlugin = async () => {
+ return {
+ "shell.env": async (input, output) => {
+ output.env.MY_API_KEY = "secret"
+ output.env.PROJECT_ROOT = input.cwd
+ },
+ }
+}
+```
+
+---
+
+### Benutzerdefinierte Werkzeuge
+
+Plugins können Opencode auch benutzerdefinierte Tools hinzufügen:
+
+```ts title=".opencode/plugins/custom-tools.ts"
+import { type Plugin, tool } from "@opencode-ai/plugin"
+
+export const CustomToolsPlugin: Plugin = async (ctx) => {
+ return {
+ tool: {
+ mytool: tool({
+ description: "This is a custom tool",
+ args: {
+ foo: tool.schema.string(),
+ },
+ async execute(args, context) {
+ const { directory, worktree } = context
+ return `Hello ${args.foo} from ${directory} (worktree: ${worktree})`
+ },
+ }),
+ },
+ }
+}
+```
+
+Der `tool`-Helfer erstellt ein benutzerdefiniertes Tool, das Opencode aufrufen kann. Es verwendet eine Zod-Schemafunktion und gibt eine Tooldefinition zurück mit:
+
+- `description`: Was das Tool macht
+- `args`: Zod-Schema für die Argumente des Tools
+- `execute`: Funktion, die ausgeführt wird, wenn das Tool aufgerufen wird
+
+Ihre benutzerdefinierten Tools stehen neben den integrierten Tools für Opencode zur Verfügung.
+
+---
+
+### Logging
+
+Verwenden Sie `client.app.log()` anstelle von `console.log` für die strukturierte Protokollierung:
+
+```ts title=".opencode/plugins/my-plugin.ts"
+export const MyPlugin = async ({ client }) => {
+ await client.app.log({
+ body: {
+ service: "my-plugin",
+ level: "info",
+ message: "Plugin initialized",
+ extra: { foo: "bar" },
+ },
+ })
+}
+```
+
+Ebenen: `debug`, `info`, `warn`, `error`. Weitere Informationen finden Sie unter [SDK documentation](https://opencode.ai/docs/sdk).
+
+---
+
+### Verdichtungshaken
+
+Passen Sie den Kontext an, der beim Komprimieren einer Sitzung einbezogen wird:
+
+```ts title=".opencode/plugins/compaction.ts"
+import type { Plugin } from "@opencode-ai/plugin"
+
+export const CompactionPlugin: Plugin = async (ctx) => {
+ return {
+ "experimental.session.compacting": async (input, output) => {
+ // Inject additional context into the compaction prompt
+ output.context.push(`
+## Custom Context
+
+Include any state that should persist across compaction:
+- Current task status
+- Important decisions made
+- Files being actively worked on
+`)
+ },
+ }
+}
+```
+
+Der Hook `experimental.session.compacting` wird ausgelöst, bevor der Hook LLM eine Fortsetzungszusammenfassung generiert. Verwenden Sie es, um domänenspezifischen Kontext einzufügen, der der standardmäßigen Komprimierungsaufforderung entgehen würde.
+
+Sie können die Komprimierungsaufforderung auch vollständig ersetzen, indem Sie `output.prompt` festlegen:
+
+```ts title=".opencode/plugins/custom-compaction.ts"
+import type { Plugin } from "@opencode-ai/plugin"
+
+export const CustomCompactionPlugin: Plugin = async (ctx) => {
+ return {
+ "experimental.session.compacting": async (input, output) => {
+ // Replace the entire compaction prompt
+ output.prompt = `
+You are generating a continuation prompt for a multi-agent swarm session.
+
+Summarize:
+1. The current task and its status
+2. Which files are being modified and by whom
+3. Any blockers or dependencies between agents
+4. The next steps to complete the work
+
+Format as a structured prompt that a new agent can use to resume work.
+`
+ },
+ }
+}
+```
+
+Wenn `output.prompt` festgelegt ist, ersetzt es die standardmäßige Komprimierungsaufforderung vollständig. Das Array `output.context` wird in diesem Fall ignoriert.
diff --git a/packages/web/src/content/docs/de/providers.mdx b/packages/web/src/content/docs/de/providers.mdx
new file mode 100644
index 000000000..5a1421d8f
--- /dev/null
+++ b/packages/web/src/content/docs/de/providers.mdx
@@ -0,0 +1,1889 @@
+---
+title: Anbieter
+description: Verwendung eines beliebigen LLM-Anbieters in OpenCode.
+---
+
+import config from "../../../../config.mjs"
+export const console = config.console
+
+OpenCode verwendet [AI SDK](https://ai-sdk.dev/) und [Models.dev](https://models.dev) zur Unterstützung von **75+ LLM-Anbietern** und unterstützt die Ausführung lokaler Modelle.
+
+Um einen Anbieter hinzuzufügen, müssen Sie:
+
+1. Fügen Sie die API-Schlüssel für den Anbieter mit dem Befehl `/connect` hinzu.
+2. Konfigurieren Sie den Anbieter in Ihrer OpenCode-Konfiguration.
+
+---
+
+### Credentials
+
+Wenn Sie die API-Schlüssel eines Anbieters mit dem Befehl `/connect` hinzufügen, werden diese gespeichert
+in `~/.local/share/opencode/auth.json`.
+
+---
+
+### Config
+
+Sie können die Anbieter über den Abschnitt `provider` in Ihrem OpenCode anpassen
+config.
+
+---
+
+#### Basis URL
+
+Sie können den Basis-URL für jeden Anbieter anpassen, indem Sie die Option `baseURL` festlegen. Dies ist nützlich, wenn Sie Proxy-Dienste oder benutzerdefinierte Endpunkte verwenden.
+
+```json title="opencode.json" {6}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "anthropic": {
+ "options": {
+ "baseURL": "https://api.anthropic.com/v1"
+ }
+ }
+ }
+}
+```
+
+---
+
+## OpenCode Zen
+
+OpenCode Zen ist eine Liste von Modellen, die vom OpenCode-Team bereitgestellt wurden
+Getestet und verifiziert, dass es gut mit OpenCode funktioniert. [Learn more](/docs/zen).
+
+:::tip
+Wenn Sie neu sind, empfehlen wir Ihnen, mit OpenCode Zen zu beginnen.
+:::
+
+1. Führen Sie den Befehl `/connect` in TUI aus, wählen Sie Opencode aus und gehen Sie zu [opencode.ai/auth](https://opencode.ai/auth).
+
+ ```txt
+ /connect
+ ```
+
+2. Melden Sie sich an, geben Sie Ihre Rechnungsdaten ein und kopieren Sie Ihren API-Schlüssel.
+
+3. Fügen Sie Ihren API-Schlüssel ein.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Führen Sie `/models` in TUI aus, um die Liste der von uns empfohlenen Modelle anzuzeigen.
+
+ ```txt
+ /models
+ ```
+
+Es funktioniert wie jeder andere Anbieter in OpenCode und ist völlig optional.
+
+---
+
+## Directory
+
+Schauen wir uns einige der Anbieter im Detail an. Wenn Sie einen Anbieter hinzufügen möchten
+Liste, zögern Sie nicht, ein PR zu öffnen.
+
+:::note
+Sehen Sie hier keinen Anbieter? Senden Sie einen PR.
+:::
+
+---
+
+### 302.AI
+
+1. Gehen Sie zu [302.AI console](https://302.ai/), erstellen Sie ein Konto und generieren Sie einen API-Schlüssel.
+
+2. Führen Sie den Befehl `/connect` aus und suchen Sie nach **302.AI**.
+
+ ```txt
+ /connect
+ ```
+
+3. Geben Sie Ihren Schlüssel 302.AI API ein.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Führen Sie den Befehl `/models` aus, um ein Modell auszuwählen.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### Amazonas-Grundgestein
+
+So verwenden Sie Amazon Bedrock mit OpenCode:
+
+1. Gehen Sie zum **Modellkatalog** in der Amazon Bedrock-Konsole und fordern Sie an
+ Zugriff auf die gewünschten Modelle.
+
+ :::tip
+ Sie müssen Zugriff auf das gewünschte Modell in Amazon Bedrock haben.
+ :::
+
+2. **Konfigurieren Sie die Authentifizierung** mit einer der folgenden Methoden:
+
+ #### Umgebungsvariablen (Schnellstart)
+
+ Legen Sie eine dieser Umgebungsvariablen fest, während Sie Opencode ausführen:
+
+ ```bash
+ # Option 1: Using AWS access keys
+ AWS_ACCESS_KEY_ID=XXX AWS_SECRET_ACCESS_KEY=YYY opencode
+
+ # Option 2: Using named AWS profile
+ AWS_PROFILE=my-profile opencode
+
+ # Option 3: Using Bedrock bearer token
+ AWS_BEARER_TOKEN_BEDROCK=XXX opencode
+ ```
+
+ Oder fügen Sie sie Ihrem Bash-Profil hinzu:
+
+ ```bash title="~/.bash_profile"
+ export AWS_PROFILE=my-dev-profile
+ export AWS_REGION=us-east-1
+ ```
+
+ #### Konfigurationsdatei (empfohlen)
+
+ Für eine projektspezifische oder dauerhafte Konfiguration verwenden Sie `opencode.json`:
+
+ ```json title="opencode.json"
+ {
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "amazon-bedrock": {
+ "options": {
+ "region": "us-east-1",
+ "profile": "my-aws-profile"
+ }
+ }
+ }
+ }
+ ```
+
+ **Verfügbare Optionen:**
+ - `region` - AWS region (e.g., `us-east-1`, `eu-west-1`)
+ - `profile` - AWS named profile from `~/.aws/credentials`
+ - `endpoint` – Benutzerdefinierter Endpunkt URL für VPC-Endpunkte (Alias für generische `baseURL`-Option)
+
+ :::tip
+ Konfigurationsdateioptionen haben Vorrang vor Umgebungsvariablen.
+ :::
+
+ #### Erweitert: VPC Endpunkte
+
+ Wenn Sie VPC-Endpunkte für Bedrock verwenden:
+
+ ```json title="opencode.json"
+ {
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "amazon-bedrock": {
+ "options": {
+ "region": "us-east-1",
+ "profile": "production",
+ "endpoint": "https://bedrock-runtime.us-east-1.vpce-xxxxx.amazonaws.com"
+ }
+ }
+ }
+ }
+ ```
+
+ :::note
+ Die Option `endpoint` ist ein Alias für die generische Option `baseURL` und verwendet AWS-spezifische Terminologie. Wenn sowohl `endpoint` als auch `baseURL` angegeben sind, hat `endpoint` Vorrang.
+ :::
+
+ #### Authentifizierungsmethoden
+ - **`AWS_ACCESS_KEY_ID` / `AWS_SECRET_ACCESS_KEY`**: Erstellen Sie einen IAM-Benutzer und generieren Sie Zugriffsschlüssel in der AWS-Konsole
+ - **`AWS_PROFILE`**: Benannte Profile von `~/.aws/credentials` verwenden. Zuerst mit `aws configure --profile my-profile` oder `aws sso login` konfigurieren
+ - **`AWS_BEARER_TOKEN_BEDROCK`**: Generieren Sie langfristige API-Schlüssel aus der Amazon Bedrock-Konsole
+ - **`AWS_WEB_IDENTITY_TOKEN_FILE` / `AWS_ROLE_ARN`**: Für EKS IRSA (IAM Rollen für Dienstkonten) oder andere Kubernetes-Umgebungen mit OIDC-Verbund. Diese Umgebungsvariablen werden von Kubernetes automatisch eingefügt, wenn Dienstkontoanmerkungen verwendet werden.
+
+ #### Authentifizierungspriorität
+
+ Amazon Bedrock verwendet die folgende Authentifizierungspriorität:
+ 1. **Bearer-Token** – `AWS_BEARER_TOKEN_BEDROCK`-Umgebungsvariable oder Token aus dem `/connect`-Befehl
+ 2. **AWS Anmeldeinformationskette** – Profil, Zugriffsschlüssel, gemeinsame Anmeldeinformationen, IAM Rollen, Web-Identitätstoken (EKS IRSA), Instanzmetadaten
+
+ :::note
+ Wenn ein Inhabertoken festgelegt ist (über `/connect` oder `AWS_BEARER_TOKEN_BEDROCK`), hat es Vorrang vor allen AWS-Anmeldeinformationsmethoden, einschließlich konfigurierter Profile.
+ :::
+
+3. Führen Sie den Befehl `/models` aus, um das gewünschte Modell auszuwählen.
+
+ ```txt
+ /models
+ ```
+
+:::note
+Verwenden Sie für benutzerdefinierte Inferenzprofile den Modell- und Anbieternamen im Schlüssel und legen Sie die Eigenschaft `id` auf den Arn fest. Dadurch wird ein korrektes Caching sichergestellt:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "amazon-bedrock": {
+ // ...
+ "models": {
+ "anthropic-claude-sonnet-4.5": {
+ "id": "arn:aws:bedrock:us-east-1:xxx:application-inference-profile/yyy"
+ }
+ }
+ }
+ }
+}
+```
+
+:::
+
+---
+
+### Anthropic
+
+1. Sobald Sie sich angemeldet haben, führen Sie den Befehl `/connect` aus und wählen Sie Anthropic aus.
+
+ ```txt
+ /connect
+ ```
+
+2. Hier können Sie die Option **Claude Pro/Max** auswählen und Ihr Browser wird geöffnet
+ und bitten Sie, sich zu authentifizieren.
+
+ ```txt
+ ┌ Select auth method
+ │
+ │ Claude Pro/Max
+ │ Create an API Key
+ │ Manually enter API Key
+ └
+ ```
+
+3. Jetzt sollten alle Anthropic-Modelle verfügbar sein, wenn Sie den Befehl `/models` verwenden.
+
+ ```txt
+ /models
+ ```
+
+:::info
+Die Verwendung Ihres Claude Pro/Max-Abonnements in OpenCode wird von [Anthropic](https://anthropic.com) nicht offiziell unterstützt.
+:::
+
+##### Verwendung von API-Tasten
+
+Sie können auch **Erstellen eines API-Schlüssels** auswählen, wenn Sie kein Pro/Max-Abonnement haben. Außerdem wird Ihr Browser geöffnet, Sie werden aufgefordert, sich bei Anthropic anzumelden, und Sie erhalten einen Code, den Sie in Ihr Terminal einfügen können.
+
+Wenn Sie bereits über einen API-Schlüssel verfügen, können Sie **API-Schlüssel manuell eingeben** auswählen und ihn in Ihr Terminal einfügen.
+
+---
+
+### Azure OpenAI
+
+:::note
+Wenn Sie auf die Fehlermeldung „Es tut mir leid, aber ich kann Ihnen bei dieser Anfrage nicht weiterhelfen“ stoßen, versuchen Sie, den Inhaltsfilter in Ihrer Azure-Ressource von **DefaultV2** in **Default** zu ändern.
+:::
+
+1. Gehen Sie zu [Azure portal](https://portal.azure.com/) und erstellen Sie eine **Azure OpenAI**-Ressource. Sie benötigen:
+ - **Ressourcenname**: Dies wird Teil Ihres API-Endpunkts (`https://RESOURCE_NAME.openai.azure.com/`)
+ - **API-Schlüssel**: Entweder `KEY 1` oder `KEY 2` aus Ihrer Ressource
+
+2. Gehen Sie zu [Azure AI Foundry](https://ai.azure.com/) und stellen Sie ein Modell bereit.
+
+ :::note
+ Der Bereitstellungsname muss mit dem Modellnamen übereinstimmen, damit Opencode ordnungsgemäß funktioniert.
+ :::
+
+3. Führen Sie den Befehl `/connect` aus und suchen Sie nach **Azure**.
+
+ ```txt
+ /connect
+ ```
+
+4. Geben Sie Ihren API-Schlüssel ein.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+5. Legen Sie Ihren Ressourcennamen als Umgebungsvariable fest:
+
+ ```bash
+ AZURE_RESOURCE_NAME=XXX opencode
+ ```
+
+ Oder fügen Sie es Ihrem Bash-Profil hinzu:
+
+ ```bash title="~/.bash_profile"
+ export AZURE_RESOURCE_NAME=XXX
+ ```
+
+6. Führen Sie den Befehl `/models` aus, um Ihr bereitgestelltes Modell auszuwählen.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### Azure Cognitive Services
+
+1. Gehen Sie zu [Azure portal](https://portal.azure.com/) und erstellen Sie eine **Azure OpenAI**-Ressource. Sie benötigen:
+ - **Ressourcenname**: Dies wird Teil Ihres API-Endpunkts (`https://AZURE_COGNITIVE_SERVICES_RESOURCE_NAME.cognitiveservices.azure.com/`)
+ - **API-Schlüssel**: Entweder `KEY 1` oder `KEY 2` aus Ihrer Ressource
+
+2. Gehen Sie zu [Azure AI Foundry](https://ai.azure.com/) und stellen Sie ein Modell bereit.
+
+ :::note
+ Der Bereitstellungsname muss mit dem Modellnamen übereinstimmen, damit Opencode ordnungsgemäß funktioniert.
+ :::
+
+3. Führen Sie den Befehl `/connect` aus und suchen Sie nach **Azure Cognitive Services**.
+
+ ```txt
+ /connect
+ ```
+
+4. Geben Sie Ihren API-Schlüssel ein.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+5. Legen Sie Ihren Ressourcennamen als Umgebungsvariable fest:
+
+ ```bash
+ AZURE_COGNITIVE_SERVICES_RESOURCE_NAME=XXX opencode
+ ```
+
+ Oder fügen Sie es Ihrem Bash-Profil hinzu:
+
+ ```bash title="~/.bash_profile"
+ export AZURE_COGNITIVE_SERVICES_RESOURCE_NAME=XXX
+ ```
+
+6. Führen Sie den Befehl `/models` aus, um Ihr bereitgestelltes Modell auszuwählen.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### Baseten
+
+1. Gehen Sie zu [Baseten](https://app.baseten.co/), erstellen Sie ein Konto und generieren Sie einen API-Schlüssel.
+
+2. Führen Sie den Befehl `/connect` aus und suchen Sie nach **Baseten**.
+
+ ```txt
+ /connect
+ ```
+
+3. Geben Sie Ihren Baseten API-Schlüssel ein.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Führen Sie den Befehl `/models` aus, um ein Modell auszuwählen.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### Cerebras
+
+1. Gehen Sie zu [Cerebras console](https://inference.cerebras.ai/), erstellen Sie ein Konto und generieren Sie einen API-Schlüssel.
+
+2. Führen Sie den Befehl `/connect` aus und suchen Sie nach **Cerebras**.
+
+ ```txt
+ /connect
+ ```
+
+3. Geben Sie Ihren Cerebras-API-Schlüssel ein.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Führen Sie den Befehl `/models` aus, um ein Modell wie _Qwen 3 Coder 480B_ auszuwählen.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### Cloudflare AI Gateway
+
+Mit dem Cloudflare AI Gateway können Sie über einen einheitlichen Endpunkt auf Modelle von OpenAI, Anthropic, Workers AI und mehr zugreifen. Mit [Unified Billing](https://developers.cloudflare.com/ai-gateway/features/unified-billing/) benötigen Sie nicht für jeden Anbieter separate API-Schlüssel.
+
+1. Gehen Sie zu [Cloudflare dashboard](https://dash.cloudflare.com/), navigieren Sie zu **AI** > **AI Gateway** und erstellen Sie ein neues Gateway.
+
+2. Legen Sie Ihr Konto ID und Ihr Gateway ID als Umgebungsvariablen fest.
+
+ ```bash title="~/.bash_profile"
+ export CLOUDFLARE_ACCOUNT_ID=your-32-character-account-id
+ export CLOUDFLARE_GATEWAY_ID=your-gateway-id
+ ```
+
+3. Führen Sie den Befehl `/connect` aus und suchen Sie nach **Cloudflare AI Gateway**.
+
+ ```txt
+ /connect
+ ```
+
+4. Geben Sie Ihr Cloudflare-API-Token ein.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+ Oder legen Sie es als Umgebungsvariable fest.
+
+ ```bash title="~/.bash_profile"
+ export CLOUDFLARE_API_TOKEN=your-api-token
+ ```
+
+5. Führen Sie den Befehl `/models` aus, um ein Modell auszuwählen.
+
+ ```txt
+ /models
+ ```
+
+ Sie können Modelle auch über Ihre Opencode-Konfiguration hinzufügen.
+
+ ```json title="opencode.json"
+ {
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "cloudflare-ai-gateway": {
+ "models": {
+ "openai/gpt-4o": {},
+ "anthropic/claude-sonnet-4": {}
+ }
+ }
+ }
+ }
+ ```
+
+---
+
+### Cortecs
+
+1. Gehen Sie zu [Cortecs console](https://cortecs.ai/), erstellen Sie ein Konto und generieren Sie einen API-Schlüssel.
+
+2. Führen Sie den Befehl `/connect` aus und suchen Sie nach **Cortecs**.
+
+ ```txt
+ /connect
+ ```
+
+3. Geben Sie Ihren Cortecs-API-Schlüssel ein.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Führen Sie den Befehl `/models` aus, um ein Modell wie _Kimi K2 Instruct_ auszuwählen.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### DeepSeek
+
+1. Gehen Sie zu [DeepSeek console](https://platform.deepseek.com/), erstellen Sie ein Konto und klicken Sie auf **Neuen API-Schlüssel erstellen**.
+
+2. Führen Sie den Befehl `/connect` aus und suchen Sie nach **DeepSeek**.
+
+ ```txt
+ /connect
+ ```
+
+3. Geben Sie Ihren DeepSeek API-Schlüssel ein.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Führen Sie den Befehl `/models` aus, um ein DeepSeek-Modell wie _DeepSeek Reasoner_ auszuwählen.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### Tiefe Infrarot
+
+1. Gehen Sie zu [Deep Infra dashboard](https://deepinfra.com/dash), erstellen Sie ein Konto und generieren Sie einen API-Schlüssel.
+
+2. Führen Sie den Befehl `/connect` aus und suchen Sie nach **Deep Infra**.
+
+ ```txt
+ /connect
+ ```
+
+3. Geben Sie Ihren Deep Infra API-Schlüssel ein.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Führen Sie den Befehl `/models` aus, um ein Modell auszuwählen.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### Firmware
+
+1. Gehen Sie zu [Firmware dashboard](https://app.firmware.ai/signup), erstellen Sie ein Konto und generieren Sie einen API-Schlüssel.
+
+2. Führen Sie den Befehl `/connect` aus und suchen Sie nach **Firmware**.
+
+ ```txt
+ /connect
+ ```
+
+3. Geben Sie Ihren Firmware-Schlüssel API ein.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Führen Sie den Befehl `/models` aus, um ein Modell auszuwählen.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### Feuerwerk AI
+
+1. Gehen Sie zu [Fireworks AI console](https://app.fireworks.ai/), erstellen Sie ein Konto und klicken Sie auf **API-Schlüssel erstellen**.
+
+2. Führen Sie den Befehl `/connect` aus und suchen Sie nach **Fireworks AI**.
+
+ ```txt
+ /connect
+ ```
+
+3. Geben Sie Ihren Fireworks-Schlüssel AI API ein.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Führen Sie den Befehl `/models` aus, um ein Modell wie _Kimi K2 Instruct_ auszuwählen.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### GitLab Duo
+
+GitLab Duo bietet AI-gestützten Agenten-Chat mit nativen Tool-Aufruffunktionen über den Anthropic-Proxy von GitLab.
+
+1. Führen Sie den Befehl `/connect` aus und wählen Sie GitLab aus.
+
+ ```txt
+ /connect
+ ```
+
+2. Wählen Sie Ihre Authentifizierungsmethode:
+
+ ```txt
+ ┌ Select auth method
+ │
+ │ OAuth (Recommended)
+ │ Personal Access Token
+ └
+ ```
+
+ #### Verwendung von OAuth (empfohlen)
+
+ Wählen Sie **OAuth** und Ihr Browser wird zur Autorisierung geöffnet.
+
+ #### Verwendung eines persönlichen Zugriffstokens
+ 1. Gehe zu [GitLab User Settings > Access Tokens](https://gitlab.com/-/user_settings/personal_access_tokens)
+ 2. Klicken Sie auf **Neues Token hinzufügen**
+ 3. Name: `OpenCode`, Bereiche: `api`
+ 4. Kopieren Sie das Token (beginnt mit `glpat-`)
+ 5. Geben Sie es im Terminal ein
+
+3. Führen Sie den Befehl `/models` aus, um verfügbare Modelle anzuzeigen.
+
+ ```txt
+ /models
+ ```
+
+ Es stehen drei Claude-basierte Modelle zur Verfügung:
+ - **duo-chat-haiku-4-5** (Standard) – Schnelle Antworten für schnelle Aufgaben
+ - **duo-chat-sonnet-4-5** – Ausgewogene Leistung für die meisten Arbeitsabläufe
+ - **duo-chat-opus-4-5** – Am besten geeignet für komplexe Analysen
+
+:::note
+Sie können auch die Umgebungsvariable „GITLAB_TOKEN“ angeben, wenn Sie dies nicht möchten
+um das Token im Opencode-Authentifizierungsspeicher zu speichern.
+:::
+
+##### Selbstgehostetes GitLab
+
+:::note[compliance note]
+OpenCode verwendet ein kleines Modell für einige AI-Aufgaben wie das Generieren des Sitzungstitels.
+Es ist standardmäßig für die Verwendung von gpt-5-nano konfiguriert und wird von Zen gehostet. Zum Sperren von OpenCode
+Um nur Ihre eigene von GitLab gehostete Instanz zu verwenden, fügen Sie Folgendes zu Ihrer hinzu
+`opencode.json`-Datei. Es wird außerdem empfohlen, die Sitzungsfreigabe zu deaktivieren.
+
+```json
+{
+ "$schema": "https://opencode.ai/config.json",
+ "small_model": "gitlab/duo-chat-haiku-4-5",
+ "share": "disabled"
+}
+```
+
+:::
+
+Für selbstgehostete GitLab-Instanzen:
+
+```bash
+export GITLAB_INSTANCE_URL=https://gitlab.company.com
+export GITLAB_TOKEN=glpat-...
+```
+
+Wenn Ihre Instanz ein benutzerdefiniertes AI-Gateway ausführt:
+
+```bash
+GITLAB_AI_GATEWAY_URL=https://ai-gateway.company.com
+```
+
+Oder fügen Sie zu Ihrem Bash-Profil hinzu:
+
+```bash title="~/.bash_profile"
+export GITLAB_INSTANCE_URL=https://gitlab.company.com
+export GITLAB_AI_GATEWAY_URL=https://ai-gateway.company.com
+export GITLAB_TOKEN=glpat-...
+```
+
+:::note
+Ihr GitLab-Administrator muss Folgendes aktivieren:
+
+1. [Duo Agent Platform](https://docs.gitlab.com/user/gitlab_duo/turn_on_off/) für den Benutzer, die Gruppe oder die Instanz
+2. Feature-Flags (über die Rails-Konsole):
+ - `agent_platform_claude_code`
+ - `third_party_agents_enabled`
+ :::
+
+##### OAuth für selbstgehostete Instanzen
+
+Damit OAuth für Ihre selbst gehostete Instanz funktioniert, müssen Sie eine erstellen
+eine neue Anwendung (Einstellungen → Anwendungen) mit dem
+Rückruf URL `http://127.0.0.1:8080/callback` und folgende Bereiche:
+
+- API (Greifen Sie in Ihrem Namen auf API zu)
+- read_user (Lesen Sie Ihre persönlichen Daten)
+- read_repository (Ermöglicht schreibgeschützten Zugriff auf das Repository)
+
+Stellen Sie dann die Anwendung ID als Umgebungsvariable bereit:
+
+```bash
+export GITLAB_OAUTH_CLIENT_ID=your_application_id_here
+```
+
+Weitere Dokumentation auf der [opencode-gitlab-auth](https://www.npmjs.com/package/@gitlab/opencode-gitlab-auth)-Homepage.
+
+##### Configuration
+
+Anpassen über `opencode.json`:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "gitlab": {
+ "options": {
+ "instanceUrl": "https://gitlab.com",
+ "featureFlags": {
+ "duo_agent_platform_agentic_chat": true,
+ "duo_agent_platform": true
+ }
+ }
+ }
+ }
+}
+```
+
+##### GitLab API Tools (Optional, aber dringend empfohlen)
+
+So greifen Sie auf GitLab-Tools zu (Zusammenführungsanfragen, Probleme, Pipelines, CI/CD usw.):
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "plugin": ["@gitlab/opencode-gitlab-plugin"]
+}
+```
+
+Dieses Plugin bietet umfassende GitLab-Repository-Verwaltungsfunktionen, einschließlich MR-Überprüfungen, Problemverfolgung, Pipeline-Überwachung und mehr.
+
+---
+
+### GitHub-Copilot
+
+So verwenden Sie Ihr GitHub Copilot-Abonnement mit Opencode:
+
+:::note
+Einige Modelle benötigen möglicherweise ein [Pro+
+Abonnement](https://github.com/features/copilot/plans) zur Verwendung.
+
+Einige Modelle müssen in Ihrem [GitHub Copilot settings](https://docs.github.com/en/copilot/how-tos/use-ai-models/configure-access-to-ai-models#setup-for-individual-use) manuell aktiviert werden.
+:::
+
+1. Führen Sie den Befehl `/connect` aus und suchen Sie nach GitHub Copilot.
+
+ ```txt
+ /connect
+ ```
+
+2. Navigieren Sie zu [github.com/login/device](https://github.com/login/device) und geben Sie den Code ein.
+
+ ```txt
+ ┌ Login with GitHub Copilot
+ │
+ │ https://github.com/login/device
+ │
+ │ Enter code: 8F43-6FCF
+ │
+ └ Waiting for authorization...
+ ```
+
+3. Führen Sie nun den Befehl `/models` aus, um das gewünschte Modell auszuwählen.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### Google Vertex AI
+
+So verwenden Sie Google Vertex AI mit OpenCode:
+
+1. Gehen Sie zum **Model Garden** in der Google Cloud Console und überprüfen Sie die
+ Modelle, die in Ihrer Region verfügbar sind.
+
+ :::note
+ Sie benötigen ein Google Cloud-Projekt mit aktiviertem Vertex AI API.
+ :::
+
+2. Legen Sie die erforderlichen Umgebungsvariablen fest:
+ - `GOOGLE_CLOUD_PROJECT`: Ihr Google Cloud-Projekt ID
+ - `VERTEX_LOCATION` (optional): Die Region für Vertex AI (standardmäßig `global`)
+ - Authentifizierung (wählen Sie eine aus):
+ - `GOOGLE_APPLICATION_CREDENTIALS`: Pfad zur Schlüsseldatei Ihres Dienstkontos JSON
+ - Authentifizieren Sie sich mit gcloud CLI: `gcloud auth application-default login`
+
+ Legen Sie sie fest, während Sie Opencode ausführen.
+
+ ```bash
+ GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json GOOGLE_CLOUD_PROJECT=your-project-id opencode
+ ```
+
+ Oder fügen Sie sie Ihrem Bash-Profil hinzu.
+
+ ```bash title="~/.bash_profile"
+ export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json
+ export GOOGLE_CLOUD_PROJECT=your-project-id
+ export VERTEX_LOCATION=global
+ ```
+
+:::tip
+Die Region `global` verbessert die Verfügbarkeit und reduziert Fehler ohne zusätzliche Kosten. Verwenden Sie regionale Endpunkte (e.g., `us-central1`) für Datenresidenzanforderungen. [Learn more](https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models#regional_and_global_endpoints)
+:::
+
+3. Führen Sie den Befehl `/models` aus, um das gewünschte Modell auszuwählen.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### Groq
+
+1. Gehen Sie zu [Groq console](https://console.groq.com/), klicken Sie auf **Create API Key** und kopieren Sie den Schlüssel.
+
+2. Führen Sie den Befehl `/connect` aus und suchen Sie nach Groq.
+
+ ```txt
+ /connect
+ ```
+
+3. Geben Sie den Schlüssel API für den Anbieter ein.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Führen Sie den Befehl `/models` aus, um das gewünschte auszuwählen.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### Umarmendes Gesicht
+
+[Hugging Face Inference Providers](https://huggingface.co/docs/inference-providers) bietet Zugriff auf offene Modelle, die von 17+-Anbietern unterstützt werden.
+
+1. Gehen Sie zu [Hugging Face settings](https://huggingface.co/settings/tokens/new?ownUserPermissions=inference.serverless.write&tokenType=fineGrained), um ein Token mit der Berechtigung zum Aufrufen von Inferenzanbietern zu erstellen.
+
+2. Führen Sie den Befehl `/connect` aus und suchen Sie nach **Hugging Face**.
+
+ ```txt
+ /connect
+ ```
+
+3. Geben Sie Ihren Hugging Face-Token ein.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Führen Sie den Befehl `/models` aus, um ein Modell wie _Kimi-K2-Instruct_ oder _GLM-4.6_ auszuwählen.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### Helicone
+
+[Helicone](https://helicone.ai) ist eine LLM-Beobachtbarkeitsplattform, die Protokollierung, Überwachung und Analyse für Ihre AI-Anwendungen bietet. Das Helicone AI Gateway leitet Ihre Anfragen basierend auf dem Modell automatisch an den entsprechenden Anbieter weiter.
+
+1. Gehen Sie zu [Helicone](https://helicone.ai), erstellen Sie ein Konto und generieren Sie einen API-Schlüssel über Ihr Dashboard.
+
+2. Führen Sie den Befehl `/connect` aus und suchen Sie nach **Helicone**.
+
+ ```txt
+ /connect
+ ```
+
+3. Geben Sie Ihren Helicone-API-Schlüssel ein.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Führen Sie den Befehl `/models` aus, um ein Modell auszuwählen.
+
+ ```txt
+ /models
+ ```
+
+Weitere Anbieter und erweiterte Funktionen wie Caching und Ratenbegrenzung finden Sie unter [Helicone documentation](https://docs.helicone.ai).
+
+#### Optionale Konfigurationen
+
+Falls Sie eine Funktion oder ein Modell von Helicone sehen, das nicht automatisch über Opencode konfiguriert wird, können Sie es jederzeit selbst konfigurieren.
+
+Hier ist [Helicone's Model Directory](https://helicone.ai/models). Sie benötigen dies, um die IDs der Modelle abzurufen, die Sie hinzufügen möchten.
+
+```jsonc title="~/.config/opencode/opencode.jsonc"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "helicone": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "Helicone",
+ "options": {
+ "baseURL": "https://ai-gateway.helicone.ai",
+ },
+ "models": {
+ "gpt-4o": {
+ // Model ID (from Helicone's model directory page)
+ "name": "GPT-4o", // Your own custom name for the model
+ },
+ "claude-sonnet-4-20250514": {
+ "name": "Claude Sonnet 4",
+ },
+ },
+ },
+ },
+}
+```
+
+#### Benutzerdefinierte Header
+
+Helicone unterstützt benutzerdefinierte Header für Funktionen wie Caching, Benutzerverfolgung und Sitzungsverwaltung. Fügen Sie sie mit `options.headers` zu Ihrer Anbieterkonfiguration hinzu:
+
+```jsonc title="~/.config/opencode/opencode.jsonc"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "helicone": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "Helicone",
+ "options": {
+ "baseURL": "https://ai-gateway.helicone.ai",
+ "headers": {
+ "Helicone-Cache-Enabled": "true",
+ "Helicone-User-Id": "opencode",
+ },
+ },
+ },
+ },
+}
+```
+
+##### Sitzungsverfolgung
+
+Mit der [Sessions](https://docs.helicone.ai/features/sessions)-Funktion von Helicone können Sie zusammengehörige LLM-Anfragen gruppieren. Verwenden Sie das [opencode-helicone-session](https://github.com/H2Shami/opencode-helicone-session)-Plugin, um jede OpenCode-Konversation automatisch als Sitzung in Helicone zu protokollieren.
+
+```bash
+npm install -g opencode-helicone-session
+```
+
+Fügen Sie es Ihrer Konfiguration hinzu.
+
+```json title="opencode.json"
+{
+ "plugin": ["opencode-helicone-session"]
+}
+```
+
+Das Plugin fügt `Helicone-Session-Id`- und `Helicone-Session-Name`-Header in Ihre Anfragen ein. Auf der Seite „Sitzungen“ von Helicone wird jede OpenCode-Konversation als separate Sitzung aufgeführt.
+
+##### Gängige Helicone-Header
+
+| Kopfzeile | Beschreibung |
+| -------------------------- | ------------------------------------------------------------- |
+| `Helicone-Cache-Enabled` | Antwort-Caching aktivieren (`true`/`false`) |
+| `Helicone-User-Id` | Verfolgen Sie Metriken nach Benutzer |
+| `Helicone-Property-[Name]` | Benutzerdefinierte Eigenschaften hinzufügen (e.g., `Helicone-Property-Environment`) |
+| `Helicone-Prompt-Id` | Anfragen mit Eingabeaufforderungsversionen verknüpfen |
+
+Alle verfügbaren Header finden Sie unter [Helicone Header Directory](https://docs.helicone.ai/helicone-headers/header-directory).
+
+---
+
+### llama.cpp
+
+Sie können Opencode für die Verwendung lokaler Modelle über das Dienstprogramm [llama.cpp's](https://github.com/ggml-org/llama.cpp) llama-server konfigurieren
+
+```json title="opencode.json" "llama.cpp" {5, 6, 8, 10-15}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "llama.cpp": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "llama-server (local)",
+ "options": {
+ "baseURL": "http://127.0.0.1:8080/v1"
+ },
+ "models": {
+ "qwen3-coder:a3b": {
+ "name": "Qwen3-Coder: a3b-30b (local)",
+ "limit": {
+ "context": 128000,
+ "output": 65536
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+In diesem Beispiel:
+
+- `llama.cpp` ist der benutzerdefinierte Anbieter ID. Dies kann eine beliebige Zeichenfolge sein.
+- `npm` gibt das Paket an, das für diesen Anbieter verwendet werden soll. Hier wird `@ai-sdk/openai-compatible` für jeden OpenAI-kompatiblen API verwendet.
+- `name` ist der Anzeigename für den Anbieter im UI.
+- `options.baseURL` ist der Endpunkt für den lokalen Server.
+- `models` ist eine Zuordnung von Modell-IDs zu ihren Konfigurationen. Der Modellname wird in der Modellauswahlliste angezeigt.
+
+---
+
+### IO.NET
+
+IO.NET bietet 17-Modelle, die für verschiedene Anwendungsfälle optimiert sind:
+
+1. Gehen Sie zu [IO.NET console](https://ai.io.net/), erstellen Sie ein Konto und generieren Sie einen API-Schlüssel.
+
+2. Führen Sie den Befehl `/connect` aus und suchen Sie nach **IO.NET**.
+
+ ```txt
+ /connect
+ ```
+
+3. Geben Sie Ihren Schlüssel IO.NET API ein.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Führen Sie den Befehl `/models` aus, um ein Modell auszuwählen.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### LM Studio
+
+Sie können Opencode über LM Studio für die Verwendung lokaler Modelle konfigurieren.
+
+```json title="opencode.json" "lmstudio" {5, 6, 8, 10-14}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "lmstudio": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "LM Studio (local)",
+ "options": {
+ "baseURL": "http://127.0.0.1:1234/v1"
+ },
+ "models": {
+ "google/gemma-3n-e4b": {
+ "name": "Gemma 3n-e4b (local)"
+ }
+ }
+ }
+ }
+}
+```
+
+In diesem Beispiel:
+
+- `lmstudio` ist der benutzerdefinierte Anbieter ID. Dies kann eine beliebige Zeichenfolge sein.
+- `npm` gibt das Paket an, das für diesen Anbieter verwendet werden soll. Hier wird `@ai-sdk/openai-compatible` für jeden OpenAI-kompatiblen API verwendet.
+- `name` ist der Anzeigename für den Anbieter im UI.
+- `options.baseURL` ist der Endpunkt für den lokalen Server.
+- `models` ist eine Zuordnung von Modell-IDs zu ihren Konfigurationen. Der Modellname wird in der Modellauswahlliste angezeigt.
+
+---
+
+### Mondschuss AI
+
+So verwenden Sie Kimi K2 von Moonshot AI:
+
+1. Gehen Sie zu [Moonshot AI console](https://platform.moonshot.ai/console), erstellen Sie ein Konto und klicken Sie auf **Schlüssel API erstellen**.
+
+2. Führen Sie den Befehl `/connect` aus und suchen Sie nach **Moonshot AI**.
+
+ ```txt
+ /connect
+ ```
+
+3. Geben Sie Ihren Moonshot API-Schlüssel ein.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Führen Sie den Befehl `/models` aus, um _Kimi K2_ auszuwählen.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### MiniMax
+
+1. Gehen Sie zu [MiniMax API Console](https://platform.minimax.io/login), erstellen Sie ein Konto und generieren Sie einen API-Schlüssel.
+
+2. Führen Sie den Befehl `/connect` aus und suchen Sie nach **MiniMax**.
+
+ ```txt
+ /connect
+ ```
+
+3. Geben Sie Ihren MiniMax-Schlüssel API ein.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Führen Sie den Befehl `/models` aus, um ein Modell wie _M2.1_ auszuwählen.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### Nebius-Token-Fabrik
+
+1. Gehen Sie zu [Nebius Token Factory console](https://tokenfactory.nebius.com/), erstellen Sie ein Konto und klicken Sie auf **Schlüssel hinzufügen**.
+
+2. Führen Sie den Befehl `/connect` aus und suchen Sie nach **Nebius Token Factory**.
+
+ ```txt
+ /connect
+ ```
+
+3. Geben Sie Ihren Nebius Token Factory API-Schlüssel ein.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Führen Sie den Befehl `/models` aus, um ein Modell wie _Kimi K2 Instruct_ auszuwählen.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### Ollama
+
+Sie können Opencode über Ollama für die Verwendung lokaler Modelle konfigurieren.
+
+:::tip
+Ollama kann sich automatisch für OpenCode konfigurieren. Weitere Informationen finden Sie unter [Ollama integration docs](https://docs.ollama.com/integrations/opencode).
+:::
+
+```json title="opencode.json" "ollama" {5, 6, 8, 10-14}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "ollama": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "Ollama (local)",
+ "options": {
+ "baseURL": "http://localhost:11434/v1"
+ },
+ "models": {
+ "llama2": {
+ "name": "Llama 2"
+ }
+ }
+ }
+ }
+}
+```
+
+In diesem Beispiel:
+
+- `ollama` ist der benutzerdefinierte Anbieter ID. Dies kann eine beliebige Zeichenfolge sein.
+- `npm` gibt das Paket an, das für diesen Anbieter verwendet werden soll. Hier wird `@ai-sdk/openai-compatible` für jeden OpenAI-kompatiblen API verwendet.
+- `name` ist der Anzeigename für den Anbieter im UI.
+- `options.baseURL` ist der Endpunkt für den lokalen Server.
+- `models` ist eine Zuordnung von Modell-IDs zu ihren Konfigurationen. Der Modellname wird in der Modellauswahlliste angezeigt.
+
+:::tip
+Wenn Toolaufrufe nicht funktionieren, versuchen Sie, `num_ctx` in Ollama zu erhöhen. Beginnen Sie bei ca. 16.000 – 32.000 km.
+:::
+
+---
+
+### Ollama-Wolke
+
+So verwenden Sie Ollama Cloud mit OpenCode:
+
+1. Gehen Sie zu [https://ollama.com/](https://ollama.com/) und melden Sie sich an oder erstellen Sie ein Konto.
+
+2. Navigieren Sie zu **Einstellungen** > **Schlüssel** und klicken Sie auf **Add API Key**, um einen neuen API-Schlüssel zu generieren.
+
+3. Kopieren Sie den Schlüssel API zur Verwendung in OpenCode.
+
+4. Führen Sie den Befehl `/connect` aus und suchen Sie nach **Ollama Cloud**.
+
+ ```txt
+ /connect
+ ```
+
+5. Geben Sie Ihren Ollama Cloud API-Schlüssel ein.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+6. **Wichtig**: Bevor Sie Cloud-Modelle in OpenCode verwenden, müssen Sie die Modellinformationen lokal abrufen:
+
+ ```bash
+ ollama pull gpt-oss:20b-cloud
+ ```
+
+7. Führen Sie den Befehl `/models` aus, um Ihr Ollama Cloud-Modell auszuwählen.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### OpenAI
+
+Wir empfehlen, sich für [ChatGPT Plus or Pro](https://chatgpt.com/pricing) anzumelden.
+
+1. Führen Sie nach der Anmeldung den Befehl `/connect` aus und wählen Sie OpenAI aus.
+
+ ```txt
+ /connect
+ ```
+
+2. Hier können Sie die Option **ChatGPT Plus/Pro** auswählen und Ihr Browser wird geöffnet
+ und bitten Sie, sich zu authentifizieren.
+
+ ```txt
+ ┌ Select auth method
+ │
+ │ ChatGPT Plus/Pro
+ │ Manually enter API Key
+ └
+ ```
+
+3. Jetzt sollten alle OpenAI-Modelle verfügbar sein, wenn Sie den Befehl `/models` verwenden.
+
+ ```txt
+ /models
+ ```
+
+##### Verwendung von API-Tasten
+
+Wenn Sie bereits über einen API-Schlüssel verfügen, können Sie **API-Schlüssel manuell eingeben** auswählen und ihn in Ihr Terminal einfügen.
+
+---
+
+### OpenCode Zen
+
+OpenCode Zen ist eine Liste getesteter und verifizierter Modelle, die vom OpenCode-Team bereitgestellt werden. [Learn more](/docs/zen).
+
+1. Melden Sie sich bei **OpenCode Zen** an und klicken Sie auf **Create API Key**.
+
+2. Führen Sie den Befehl `/connect` aus und suchen Sie nach **OpenCode Zen**.
+
+ ```txt
+ /connect
+ ```
+
+3. Geben Sie Ihren OpenCode-Schlüssel API ein.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Führen Sie den Befehl `/models` aus, um ein Modell wie _Qwen 3 Coder 480B_ auszuwählen.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### OpenRouter
+
+1. Gehen Sie zu [OpenRouter dashboard](https://openrouter.ai/settings/keys), klicken Sie auf **Create API Key** und kopieren Sie den Schlüssel.
+
+2. Führen Sie den Befehl `/connect` aus und suchen Sie nach OpenRouter.
+
+ ```txt
+ /connect
+ ```
+
+3. Geben Sie den Schlüssel API für den Anbieter ein.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Viele OpenRouter-Modelle sind standardmäßig vorinstalliert. Führen Sie den Befehl `/models` aus, um das gewünschte Modell auszuwählen.
+
+ ```txt
+ /models
+ ```
+
+ Sie können auch zusätzliche Modelle über Ihre Opencode-Konfiguration hinzufügen.
+
+ ```json title="opencode.json" {6}
+ {
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "openrouter": {
+ "models": {
+ "somecoolnewmodel": {}
+ }
+ }
+ }
+ }
+ ```
+
+5. Sie können sie auch über Ihre Opencode-Konfiguration anpassen. Hier ist ein Beispiel für die Angabe eines Anbieters
+
+ ```json title="opencode.json"
+ {
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "openrouter": {
+ "models": {
+ "moonshotai/kimi-k2": {
+ "options": {
+ "provider": {
+ "order": ["baseten"],
+ "allow_fallbacks": false
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ ```
+
+---
+
+### SAP AI Kern
+
+SAP AI Core bietet Zugriff auf 40+ Modelle von OpenAI, Anthropic, Google, Amazon, Meta, Mistral und AI21 über eine einheitliche Plattform.
+
+1. Gehen Sie zu Ihrem [SAP BTP Cockpit](https://account.hana.ondemand.com/), navigieren Sie zu Ihrer SAP AI Core-Dienstinstanz und erstellen Sie einen Dienstschlüssel.
+
+ :::tip
+ Der Dienstschlüssel ist ein JSON-Objekt, das `clientid`, `clientsecret`, `url` und `serviceurls.AI_API_URL` enthält. Sie finden Ihre AI Core-Instanz unter **Dienste** > **Instanzen und Abonnements** im BTP Cockpit.
+ :::
+
+2. Führen Sie den Befehl `/connect` aus und suchen Sie nach **SAP AI Core**.
+
+ ```txt
+ /connect
+ ```
+
+3. Geben Sie Ihren Serviceschlüssel JSON ein.
+
+ ```txt
+ ┌ Service key
+ │
+ │
+ └ enter
+ ```
+
+ Oder legen Sie die Umgebungsvariable `AICORE_SERVICE_KEY` fest:
+
+ ```bash
+ AICORE_SERVICE_KEY='{"clientid":"...","clientsecret":"...","url":"...","serviceurls":{"AI_API_URL":"..."}}' opencode
+ ```
+
+ Oder fügen Sie es Ihrem Bash-Profil hinzu:
+
+ ```bash title="~/.bash_profile"
+ export AICORE_SERVICE_KEY='{"clientid":"...","clientsecret":"...","url":"...","serviceurls":{"AI_API_URL":"..."}}'
+ ```
+
+4. Legen Sie optional die Bereitstellung ID und die Ressourcengruppe fest:
+
+ ```bash
+ AICORE_DEPLOYMENT_ID=your-deployment-id AICORE_RESOURCE_GROUP=your-resource-group opencode
+ ```
+
+ :::note
+ Diese Einstellungen sind optional und sollten entsprechend Ihrem SAP AI Core-Setup konfiguriert werden.
+ :::
+
+5. Führen Sie den Befehl `/models` aus, um aus 40+ verfügbaren Modellen auszuwählen.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### OVHcloud AI Endpunkte
+
+1. Gehen Sie zum [OVHcloud panel](https://ovh.com/manager). Navigieren Sie zum Abschnitt `Public Cloud`, `AI & Machine Learning` > `AI Endpoints` und klicken Sie auf der Registerkarte `API Keys` auf **Neuen API-Schlüssel erstellen**.
+
+2. Führen Sie den Befehl `/connect` aus und suchen Sie nach **OVHcloud AI Endpoints**.
+
+ ```txt
+ /connect
+ ```
+
+3. Geben Sie Ihren OVHcloud AI Endpoints API-Schlüssel ein.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Führen Sie den Befehl `/models` aus, um ein Modell wie _gpt-oss-120b_ auszuwählen.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### Scaleway
+
+So verwenden Sie [Scaleway Generative APIs](https://www.scaleway.com/en/docs/generative-apis/) mit Opencode:
+
+1. Gehen Sie zu [Scaleway Console IAM settings](https://console.scaleway.com/iam/api-keys), um einen neuen API-Schlüssel zu generieren.
+
+2. Führen Sie den Befehl `/connect` aus und suchen Sie nach **Scaleway**.
+
+ ```txt
+ /connect
+ ```
+
+3. Geben Sie Ihren Scaleway-API-Schlüssel ein.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Führen Sie den Befehl `/models` aus, um ein Modell wie _devstral-2-123b-instruct-2512_ oder _gpt-oss-120b_ auszuwählen.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### Zusammen AI
+
+1. Gehen Sie zu [Together AI console](https://api.together.ai), erstellen Sie ein Konto und klicken Sie auf **Schlüssel hinzufügen**.
+
+2. Führen Sie den Befehl `/connect` aus und suchen Sie nach **Together AI**.
+
+ ```txt
+ /connect
+ ```
+
+3. Geben Sie Ihren Together-Schlüssel AI API ein.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Führen Sie den Befehl `/models` aus, um ein Modell wie _Kimi K2 Instruct_ auszuwählen.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### Venedig AI
+
+1. Gehen Sie zu [Venice AI console](https://venice.ai), erstellen Sie ein Konto und generieren Sie einen API-Schlüssel.
+
+2. Führen Sie den Befehl `/connect` aus und suchen Sie nach **Venedig AI**.
+
+ ```txt
+ /connect
+ ```
+
+3. Geben Sie Ihren Venedig-Schlüssel AI API ein.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Führen Sie den Befehl `/models` aus, um ein Modell wie _Llama 3.3 70B_ auszuwählen.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### Vercel AI Gateway
+
+Mit dem Vercel AI Gateway können Sie über einen einheitlichen Endpunkt auf Modelle von OpenAI, Anthropic, Google, xAI und mehr zugreifen. Die Modelle werden zum Listenpreis ohne Aufschlag angeboten.
+
+1. Gehen Sie zum [Vercel dashboard](https://vercel.com/), navigieren Sie zur Registerkarte **AI Gateway** und klicken Sie auf **API-Schlüssel**, um einen neuen API-Schlüssel zu erstellen.
+
+2. Führen Sie den Befehl `/connect` aus und suchen Sie nach **Vercel AI Gateway**.
+
+ ```txt
+ /connect
+ ```
+
+3. Geben Sie Ihren Vercel AI Gateway API-Schlüssel ein.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Führen Sie den Befehl `/models` aus, um ein Modell auszuwählen.
+
+ ```txt
+ /models
+ ```
+
+Sie können Modelle auch über Ihre Opencode-Konfiguration anpassen. Hier ist ein Beispiel für die Angabe der Provider-Routing-Reihenfolge.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "vercel": {
+ "models": {
+ "anthropic/claude-sonnet-4": {
+ "options": {
+ "order": ["anthropic", "vertex"]
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+Einige nützliche Routing-Optionen:
+
+| Option | Beschreibung |
+| ------------------- | ---------------------------------------------------- |
+| `order` | Anbietersequenz zum Ausprobieren |
+| `only` | Auf bestimmte Anbieter beschränken |
+| `zeroDataRetention` | Verwenden Sie nur Anbieter mit Null-Datenaufbewahrungsrichtlinien |
+
+---
+
+### xAI
+
+1. Gehen Sie zu [xAI console](https://console.x.ai/), erstellen Sie ein Konto und generieren Sie einen API-Schlüssel.
+
+2. Führen Sie den Befehl `/connect` aus und suchen Sie nach **xAI**.
+
+ ```txt
+ /connect
+ ```
+
+3. Geben Sie Ihren xAI API-Schlüssel ein.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Führen Sie den Befehl `/models` aus, um ein Modell wie _Grok Beta_ auszuwählen.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### Z.AI
+
+1. Gehen Sie zu [Z.AI API console](https://z.ai/manage-apikey/apikey-list), erstellen Sie ein Konto und klicken Sie auf **Neuen API-Schlüssel erstellen**.
+
+2. Führen Sie den Befehl `/connect` aus und suchen Sie nach **Z.AI**.
+
+ ```txt
+ /connect
+ ```
+
+ Wenn Sie den **GLM Coding Plan** abonniert haben, wählen Sie **Z.AI Coding Plan**.
+
+3. Geben Sie Ihren Z.AI API-Schlüssel ein.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Führen Sie den Befehl `/models` aus, um ein Modell wie _GLM-4.7_ auszuwählen.
+
+ ```txt
+ /models
+ ```
+
+---
+
+### ZenMux
+
+1. Gehen Sie zu [ZenMux dashboard](https://zenmux.ai/settings/keys), klicken Sie auf **Create API Key** und kopieren Sie den Schlüssel.
+
+2. Führen Sie den Befehl `/connect` aus und suchen Sie nach ZenMux.
+
+ ```txt
+ /connect
+ ```
+
+3. Geben Sie den Schlüssel API für den Anbieter ein.
+
+ ```txt
+ ┌ API key
+ │
+ │
+ └ enter
+ ```
+
+4. Viele ZenMux-Modelle sind standardmäßig vorinstalliert. Führen Sie den Befehl `/models` aus, um das gewünschte Modell auszuwählen.
+
+ ```txt
+ /models
+ ```
+
+ Sie können auch zusätzliche Modelle über Ihre Opencode-Konfiguration hinzufügen.
+
+ ```json title="opencode.json" {6}
+ {
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "zenmux": {
+ "models": {
+ "somecoolnewmodel": {}
+ }
+ }
+ }
+ }
+ ```
+
+---
+
+## Benutzerdefinierter Anbieter
+
+So fügen Sie einen **OpenAI-kompatiblen** Anbieter hinzu, der nicht im Befehl `/connect` aufgeführt ist:
+
+:::tip
+Sie können jeden OpenAI-kompatiblen Anbieter mit Opencode verwenden. Die meisten modernen AI-Anbieter bieten OpenAI-kompatible APIs an.
+:::
+
+1. Führen Sie den Befehl `/connect` aus und scrollen Sie nach unten zu **Andere**.
+
+ ```bash
+ $ /connect
+
+ ┌ Add credential
+ │
+ ◆ Select provider
+ │ ...
+ │ ● Other
+ └
+ ```
+
+2. Geben Sie einen eindeutigen ID für den Anbieter ein.
+
+ ```bash
+ $ /connect
+
+ ┌ Add credential
+ │
+ ◇ Enter provider id
+ │ myprovider
+ └
+ ```
+
+ :::note
+ Wählen Sie einen einprägsamen ID, den Sie in Ihrer Konfigurationsdatei verwenden.
+ :::
+
+3. Geben Sie Ihren API-Schlüssel für den Anbieter ein.
+
+ ```bash
+ $ /connect
+
+ ┌ Add credential
+ │
+ ▲ This only stores a credential for myprovider - you will need to configure it in opencode.json, check the docs for examples.
+ │
+ ◇ Enter your API key
+ │ sk-...
+ └
+ ```
+
+4. Erstellen oder aktualisieren Sie Ihre `opencode.json`-Datei in Ihrem Projektverzeichnis:
+
+ ```json title="opencode.json" ""myprovider"" {5-15}
+ {
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "myprovider": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "My AI ProviderDisplay Name",
+ "options": {
+ "baseURL": "https://api.myprovider.com/v1"
+ },
+ "models": {
+ "my-model-name": {
+ "name": "My Model Display Name"
+ }
+ }
+ }
+ }
+ }
+ ```
+
+ Hier sind die Konfigurationsmöglichkeiten:
+ - **npm**: AI SDK zu verwendendes Paket, `@ai-sdk/openai-compatible` für OpenAI-kompatible Anbieter
+ - **Name**: Anzeigename in UI.
+ - **Modelle**: Verfügbare Modelle.
+ - **options.baseURL**: API endpoint URL.
+ - **Optionen.apiKey**: Legen Sie optional den Schlüssel API fest, wenn Sie keine Authentifizierung verwenden.
+ - **options.headers**: Optional benutzerdefinierte Header festlegen.
+
+ Mehr zu den erweiterten Optionen im Beispiel unten.
+
+5. Führen Sie den Befehl `/models` aus und Ihr benutzerdefinierter Anbieter und Ihre Modelle werden in der Auswahlliste angezeigt.
+
+---
+
+##### Example
+
+Hier ist ein Beispiel für die Einstellung der Optionen `apiKey`, `headers` und Modell `limit`.
+
+```json title="opencode.json" {9,11,17-20}
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "myprovider": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "My AI ProviderDisplay Name",
+ "options": {
+ "baseURL": "https://api.myprovider.com/v1",
+ "apiKey": "{env:ANTHROPIC_API_KEY}",
+ "headers": {
+ "Authorization": "Bearer custom-token"
+ }
+ },
+ "models": {
+ "my-model-name": {
+ "name": "My Model Display Name",
+ "limit": {
+ "context": 200000,
+ "output": 65536
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+Konfigurationsdetails:
+
+- **apiKey**: Wird mit der Variablensyntax `env`, [learn more](/docs/config#env-vars), festgelegt.
+- **Header**: Benutzerdefinierte Header, die mit jeder Anfrage gesendet werden.
+- **limit.context**: Maximale Eingabetokens, die das Modell akzeptiert.
+- **limit.output**: Maximale Token, die das Modell generieren kann.
+
+Mithilfe der `limit`-Felder kann OpenCode erkennen, wie viel Kontext Sie noch haben. Standardanbieter beziehen diese automatisch von models.dev.
+
+---
+
+## Troubleshooting
+
+Wenn Sie Probleme beim Konfigurieren eines Anbieters haben, überprüfen Sie Folgendes:
+
+1. **Überprüfen Sie die Authentifizierungseinrichtung**: Führen Sie `opencode auth list` aus, um zu sehen, ob die Anmeldeinformationen vorhanden sind
+ für den Anbieter werden Ihrer Konfiguration hinzugefügt.
+
+ Dies gilt nicht für Anbieter wie Amazon Bedrock, die für ihre Authentifizierung auf Umgebungsvariablen angewiesen sind.
+
+2. Überprüfen Sie bei benutzerdefinierten Anbietern die Opencode-Konfiguration und:
+ - Stellen Sie sicher, dass der im Befehl `/connect` verwendete Anbieter ID mit dem ID in Ihrer Opencode-Konfiguration übereinstimmt.
+ - Für den Anbieter wird das richtige npm-Paket verwendet. Verwenden Sie beispielsweise `@ai-sdk/cerebras` für Cerebras. Und für alle anderen OpenAI-kompatiblen Anbieter verwenden Sie `@ai-sdk/openai-compatible`.
+ - Überprüfen Sie, ob im Feld `options.baseURL` der richtige Endpunkt API verwendet wird.
diff --git a/packages/web/src/content/docs/de/rules.mdx b/packages/web/src/content/docs/de/rules.mdx
new file mode 100644
index 000000000..1bce9ffd3
--- /dev/null
+++ b/packages/web/src/content/docs/de/rules.mdx
@@ -0,0 +1,190 @@
+---
+title: Rules
+description: Lege eigene Anweisungen fuer opencode fest.
+---
+
+Du kannst opencode ueber eine `AGENTS.md`-Datei mit eigenen Anweisungen steuern.
+Das ist aehnlich zu den Regeln in Cursor und wird direkt in den LLM-Kontext geladen.
+
+---
+
+## Initialisieren
+
+Um eine neue `AGENTS.md` zu erstellen, fuehre in opencode den Befehl `/init` aus.
+
+:::tip
+Du solltest die `AGENTS.md` deines Projekts in Git committen.
+:::
+
+Der Befehl scannt dein Projekt und erzeugt daraus eine passende `AGENTS.md`.
+So kann opencode sich in deinem Code besser orientieren.
+
+Wenn bereits eine `AGENTS.md` existiert, versucht opencode sie zu erweitern.
+
+---
+
+## Example
+
+Du kannst die Datei auch manuell anlegen.
+Hier ist ein Beispiel, was in einer `AGENTS.md` stehen kann.
+
+```markdown title="AGENTS.md"
+# SST v3 Monorepo Project
+
+This is an SST v3 monorepo with TypeScript. The project uses bun workspaces for package management.
+
+## Project Structure
+
+- `packages/` - Contains all workspace packages (functions, core, web, etc.)
+- `infra/` - Infrastructure definitions split by service (storage.ts, api.ts, web.ts)
+- `sst.config.ts` - Main SST configuration with dynamic imports
+
+## Code Standards
+
+- Use TypeScript with strict mode enabled
+- Shared code goes in `packages/core/` with proper exports configuration
+- Functions go in `packages/functions/`
+- Infrastructure should be split into logical files in `infra/`
+
+## Monorepo Conventions
+
+- Import shared modules using workspace names: `@my-app/core/example`
+```
+
+Hier hinterlegst du projektspezifische Regeln, die dein Team gemeinsam nutzt.
+
+---
+
+## Typen
+
+opencode kann `AGENTS.md` aus mehreren Orten lesen.
+Die Orte haben unterschiedliche Zwecke.
+
+### Project
+
+Lege eine `AGENTS.md` im Projekt-Root ab, um projektspezifische Regeln zu definieren.
+Diese gelten nur in diesem Verzeichnis und seinen Unterordnern.
+
+### Global
+
+Du kannst auch globale Regeln in `~/.config/opencode/AGENTS.md` speichern.
+Diese gelten in allen opencode-Sitzungen.
+
+Da diese Datei nicht in Git landet und nicht mit dem Team geteilt wird, eignet sie sich fuer persoenliche Regeln.
+
+### Claude Code Compatibility
+
+Wenn du von Claude Code kommst, unterstuetzt OpenCode dessen Dateikonventionen als Fallback:
+
+- **Projektregeln**: `CLAUDE.md` im Projekt (wenn keine `AGENTS.md` existiert)
+- **Globale Regeln**: `~/.claude/CLAUDE.md` (wenn keine `~/.config/opencode/AGENTS.md` existiert)
+- **Skills**: `~/.claude/skills/` - siehe [Agent Skills](/docs/skills/) fuer Details
+
+Um die Claude-Code-Kompatibilitaet zu deaktivieren, setze eine dieser Umgebungsvariablen:
+
+```bash
+export OPENCODE_DISABLE_CLAUDE_CODE=1 # Disable all .claude support
+export OPENCODE_DISABLE_CLAUDE_CODE_PROMPT=1 # Disable only ~/.claude/CLAUDE.md
+export OPENCODE_DISABLE_CLAUDE_CODE_SKILLS=1 # Disable only .claude/skills
+```
+
+---
+
+## Precedence
+
+Beim Start sucht opencode in dieser Reihenfolge nach Regeldateien:
+
+1. **Lokale Dateien** beim Hochlaufen ab dem aktuellen Verzeichnis (`AGENTS.md`, `CLAUDE.md`)
+2. **Globale Datei** unter `~/.config/opencode/AGENTS.md`
+3. **Claude-Code-Datei** unter `~/.claude/CLAUDE.md` (falls nicht deaktiviert)
+
+Pro Kategorie gewinnt die zuerst passende Datei.
+Wenn sowohl `AGENTS.md` als auch `CLAUDE.md` existieren, wird nur `AGENTS.md` verwendet.
+
+---
+
+## Eigene Anweisungen
+
+Du kannst zusaetzliche Anweisungsdateien in deiner `opencode.json` oder in `~/.config/opencode/opencode.json` angeben.
+So kann dein Team bestehende Regeln wiederverwenden, statt Inhalte in `AGENTS.md` zu duplizieren.
+
+Beispiel:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
+}
+```
+
+Du kannst auch Remote-URLs nutzen, um Regeln aus dem Web zu laden.
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "instructions": ["https://raw.githubusercontent.com/my-org/shared-rules/main/style.md"]
+}
+```
+
+Remote-Anweisungen werden mit 5 Sekunden Timeout geladen.
+
+Alle Anweisungsdateien werden mit deinen `AGENTS.md`-Dateien kombiniert.
+
+---
+
+## Externe Dateien referenzieren
+
+opencode parst Datei-Referenzen in `AGENTS.md` nicht automatisch.
+Du erreichst aehnliches Verhalten auf zwei Wegen.
+
+### Mit opencode.json
+
+Empfohlen ist das `instructions`-Feld in der `opencode.json`:
+
+```json title="opencode.json"
+{
+ "$schema": "https://opencode.ai/config.json",
+ "instructions": ["docs/development-standards.md", "test/testing-guidelines.md", "packages/*/AGENTS.md"]
+}
+```
+
+### Manuelle Anweisungen in AGENTS.md
+
+Du kannst opencode explizit anweisen, externe Dateien zu lesen.
+Hier ein praxisnahes Beispiel:
+
+```markdown title="AGENTS.md"
+# TypeScript Project Rules
+
+## External File Loading
+
+CRITICAL: When you encounter a file reference (e.g., @rules/general.md), use your Read tool to load it on a need-to-know basis. They're relevant to the SPECIFIC task at hand.
+
+Instructions:
+
+- Do NOT preemptively load all references - use lazy loading based on actual need
+- When loaded, treat content as mandatory instructions that override defaults
+- Follow references recursively when needed
+
+## Development Guidelines
+
+For TypeScript code style and best practices: @docs/typescript-guidelines.md
+For React component architecture and hooks patterns: @docs/react-patterns.md
+For REST API design and error handling: @docs/api-standards.md
+For testing strategies and coverage requirements: @test/testing-guidelines.md
+
+## General Guidelines
+
+Read the following file immediately as it's relevant to all workflows: @rules/general-guidelines.md.
+```
+
+Damit kannst du:
+
+- Modulare, wiederverwendbare Regeldateien erstellen
+- Regeln projektuebergreifend per Symlink oder Git-Submodule teilen
+- `AGENTS.md` kurz halten und auf Detailregeln verweisen
+- Sicherstellen, dass Dateien nur bei Bedarf geladen werden
+
+:::tip
+Fuer Monorepos oder gemeinsame Standards ist `opencode.json` mit Glob-Mustern (z. B. `packages/*/AGENTS.md`) oft wartbarer als manuelle Anweisungen.
+:::
diff --git a/packages/web/src/content/docs/de/sdk.mdx b/packages/web/src/content/docs/de/sdk.mdx
new file mode 100644
index 000000000..9610cdf2b
--- /dev/null
+++ b/packages/web/src/content/docs/de/sdk.mdx
@@ -0,0 +1,393 @@
+---
+title: SDK
+description: Typsicherer JS-Client fuer den opencode-Server.
+---
+
+import config from "../../../../config.mjs"
+export const typesUrl = `${config.github}/blob/dev/packages/sdk/js/src/gen/types.gen.ts`
+
+Das opencode JS/TS SDK bietet einen typsicheren Client fuer die Server-API.
+Damit kannst du Integrationen bauen und opencode programmatisch steuern.
+
+[Mehr zum Server](/docs/server). Beispiele findest du in den [Community-Projekten](/docs/ecosystem#projects).
+
+---
+
+## Install
+
+Installiere das SDK ueber npm:
+
+```bash
+npm install @opencode-ai/sdk
+```
+
+---
+
+## Client erstellen
+
+Erstelle eine opencode-Instanz:
+
+```javascript
+import { createOpencode } from "@opencode-ai/sdk"
+
+const { client } = await createOpencode()
+```
+
+Das startet Server und Client.
+
+#### Optionen
+
+| Option | Type | Description | Default |
+| ---------- | ------------- | ------------------------------ | ----------- |
+| `hostname` | `string` | Server hostname | `127.0.0.1` |
+| `port` | `number` | Server port | `4096` |
+| `signal` | `AbortSignal` | Abort signal for cancellation | `undefined` |
+| `timeout` | `number` | Timeout in ms for server start | `5000` |
+| `config` | `Config` | Configuration object | `{}` |
+
+---
+
+## Config
+
+Du kannst ein Konfigurationsobjekt uebergeben, um das Verhalten anzupassen.
+`opencode.json` wird weiterhin geladen, kann aber inline ueberschrieben oder erweitert werden:
+
+```javascript
+import { createOpencode } from "@opencode-ai/sdk"
+
+const opencode = await createOpencode({
+ hostname: "127.0.0.1",
+ port: 4096,
+ config: {
+ model: "anthropic/claude-3-5-sonnet-20241022",
+ },
+})
+
+console.log(`Server running at ${opencode.server.url}`)
+
+opencode.server.close()
+```
+
+## Nur Client
+
+Wenn opencode bereits laeuft, kannst du nur einen Client erstellen und verbinden:
+
+```javascript
+import { createOpencodeClient } from "@opencode-ai/sdk"
+
+const client = createOpencodeClient({
+ baseUrl: "http://localhost:4096",
+})
+```
+
+#### Options
+
+| Option | Type | Description | Default |
+| --------------- | ---------- | -------------------------------- | ----------------------- |
+| `baseUrl` | `string` | URL of the server | `http://localhost:4096` |
+| `fetch` | `function` | Custom fetch implementation | `globalThis.fetch` |
+| `parseAs` | `string` | Response parsing method | `auto` |
+| `responseStyle` | `string` | Return style: `data` or `fields` | `fields` |
+| `throwOnError` | `boolean` | Throw errors instead of return | `false` |
+
+---
+
+## Typen
+
+Das SDK bringt TypeScript-Definitionen fuer alle API-Typen mit.
+Du kannst sie direkt importieren:
+
+```typescript
+import type { Session, Message, Part } from "@opencode-ai/sdk"
+```
+
+Alle Typen werden aus der OpenAPI-Spezifikation des Servers generiert und sind in der Typdatei verfuegbar.
+
+---
+
+## Errors
+
+Das SDK kann Fehler werfen, die du abfangen und behandeln kannst:
+
+```typescript
+try {
+ await client.session.get({ path: { id: "invalid-id" } })
+} catch (error) {
+ console.error("Failed to get session:", (error as Error).message)
+}
+```
+
+---
+
+## APIs
+
+Das SDK stellt alle Server-APIs ueber einen typsicheren Client bereit.
+
+---
+
+### Global
+
+| Method | Description | Response |
+| ----------------- | ------------------------------- | ------------------------------------ |
+| `global.health()` | Check server health and version | `{ healthy: true, version: string }` |
+
+---
+
+#### Examples
+
+```javascript
+const health = await client.global.health()
+console.log(health.data.version)
+```
+
+---
+
+### App
+
+| Method | Description | Response |
+| -------------- | ------------------------- | ------------------------------------------- |
+| `app.log()` | Write a log entry | `boolean` |
+| `app.agents()` | List all available agents | Agent[] |
+
+---
+
+#### Examples
+
+```javascript
+// Write a log entry
+await client.app.log({
+ body: {
+ service: "my-app",
+ level: "info",
+ message: "Operation completed",
+ },
+})
+
+// List available agents
+const agents = await client.app.agents()
+```
+
+---
+
+### Project
+
+| Method | Description | Response |
+| ------------------- | ------------------- | --------------------------------------------- |
+| `project.list()` | List all projects | Project[] |
+| `project.current()` | Get current project | Project |
+
+---
+
+#### Examples
+
+```javascript
+// List all projects
+const projects = await client.project.list()
+
+// Get current project
+const currentProject = await client.project.current()
+```
+
+---
+
+### Path
+
+| Method | Description | Response |
+| ------------ | ---------------- | ---------------------------------------- |
+| `path.get()` | Get current path | Path |
+
+---
+
+#### Examples
+
+```javascript
+// Get current path information
+const pathInfo = await client.path.get()
+```
+
+---
+
+### Config
+
+| Method | Description | Response |
+| -------------------- | --------------------------------- | ----------------------------------------------------------------------------------------------------- |
+| `config.get()` | Get config info | Config |
+| `config.providers()` | List providers and default models | `{ providers: `Provider[]`, default: { [key: string]: string } }` |
+
+---
+
+#### Examples
+
+```javascript
+const config = await client.config.get()
+
+const { providers, default: defaults } = await client.config.providers()
+```
+
+---
+
+### Sessions
+
+| Method | Description | Notes |
+| ---------------------------------------------------------- | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
+| `session.list()` | List sessions | Returns Session[] |
+| `session.get({ path })` | Get session | Returns Session |
+| `session.children({ path })` | List child sessions | Returns Session[] |
+| `session.create({ body })` | Create session | Returns Session |
+| `session.delete({ path })` | Delete session | Returns `boolean` |
+| `session.update({ path, body })` | Update session properties | Returns Session |
+| `session.init({ path, body })` | Analyze app and create `AGENTS.md` | Returns `boolean` |
+| `session.abort({ path })` | Abort a running session | Returns `boolean` |
+| `session.share({ path })` | Share session | Returns Session |
+| `session.unshare({ path })` | Unshare session | Returns Session |
+| `session.summarize({ path, body })` | Summarize session | Returns `boolean` |
+| `session.messages({ path })` | List messages in a session | Returns `{ info: `Message`, parts: `Part[]`}[]` |
+| `session.message({ path })` | Get message details | Returns `{ info: `Message`, parts: `Part[]`}` |
+| `session.prompt({ path, body })` | Send prompt message | `body.noReply: true` returns UserMessage (context only). Default returns AssistantMessage with AI response |
+| `session.command({ path, body })` | Send command to session | Returns `{ info: `AssistantMessage`, parts: `Part[]`}` |
+| `session.shell({ path, body })` | Run a shell command | Returns AssistantMessage |
+| `session.revert({ path, body })` | Revert a message | Returns Session |
+| `session.unrevert({ path })` | Restore reverted messages | Returns Session |
+| `postSessionByIdPermissionsByPermissionId({ path, body })` | Respond to a permission request | Returns `boolean` |
+
+---
+
+#### Examples
+
+```javascript
+// Create and manage sessions
+const session = await client.session.create({
+ body: { title: "My session" },
+})
+
+const sessions = await client.session.list()
+
+// Send a prompt message
+const result = await client.session.prompt({
+ path: { id: session.id },
+ body: {
+ model: { providerID: "anthropic", modelID: "claude-3-5-sonnet-20241022" },
+ parts: [{ type: "text", text: "Hello!" }],
+ },
+})
+
+// Inject context without triggering AI response (useful for plugins)
+await client.session.prompt({
+ path: { id: session.id },
+ body: {
+ noReply: true,
+ parts: [{ type: "text", text: "You are a helpful assistant." }],
+ },
+})
+```
+
+---
+
+### Files
+
+| Method | Description | Response |
+| ------------------------- | ---------------------------------- | ------------------------------------------------------------------------------------------- |
+| `find.text({ query })` | Search for text in files | Array of match objects with `path`, `lines`, `line_number`, `absolute_offset`, `submatches` |
+| `find.files({ query })` | Find files and directories by name | `string[]` (paths) |
+| `find.symbols({ query })` | Find workspace symbols | Symbol[] |
+| `file.read({ query })` | Read a file | `{ type: "raw" \| "patch", content: string }` |
+| `file.status({ query? })` | Get status for tracked files | File[] |
+
+`find.files` supports a few optional query fields:
+
+- `type`: `"file"` or `"directory"`
+- `directory`: override the project root for the search
+- `limit`: max results (1–200)
+
+---
+
+#### Examples
+
+```javascript
+// Search and read files
+const textResults = await client.find.text({
+ query: { pattern: "function.*opencode" },
+})
+
+const files = await client.find.files({
+ query: { query: "*.ts", type: "file" },
+})
+
+const directories = await client.find.files({
+ query: { query: "packages", type: "directory", limit: 20 },
+})
+
+const content = await client.file.read({
+ query: { path: "src/index.ts" },
+})
+```
+
+---
+
+### TUI
+
+| Method | Description | Response |
+| ------------------------------ | ------------------------- | --------- |
+| `tui.appendPrompt({ body })` | Append text to the prompt | `boolean` |
+| `tui.openHelp()` | Open the help dialog | `boolean` |
+| `tui.openSessions()` | Open the session selector | `boolean` |
+| `tui.openThemes()` | Open the theme selector | `boolean` |
+| `tui.openModels()` | Open the model selector | `boolean` |
+| `tui.submitPrompt()` | Submit the current prompt | `boolean` |
+| `tui.clearPrompt()` | Clear the prompt | `boolean` |
+| `tui.executeCommand({ body })` | Execute a command | `boolean` |
+| `tui.showToast({ body })` | Show toast notification | `boolean` |
+
+---
+
+#### Examples
+
+```javascript
+// Control TUI interface
+await client.tui.appendPrompt({
+ body: { text: "Add this to prompt" },
+})
+
+await client.tui.showToast({
+ body: { message: "Task completed", variant: "success" },
+})
+```
+
+---
+
+### Auth
+
+| Method | Description | Response |
+| ------------------- | ------------------------------ | --------- |
+| `auth.set({ ... })` | Set authentication credentials | `boolean` |
+
+---
+
+#### Examples
+
+```javascript
+await client.auth.set({
+ path: { id: "anthropic" },
+ body: { type: "api", key: "your-api-key" },
+})
+```
+
+---
+
+### Events
+
+| Method | Description | Response |
+| ------------------- | ------------------------- | ------------------------- |
+| `event.subscribe()` | Server-sent events stream | Server-sent events stream |
+
+---
+
+#### Examples
+
+```javascript
+// Listen to real-time events
+const events = await client.event.subscribe()
+for await (const event of events.stream) {
+ console.log("Event:", event.type, event.properties)
+}
+```
diff --git a/packages/web/src/content/docs/de/server.mdx b/packages/web/src/content/docs/de/server.mdx
new file mode 100644
index 000000000..a8a3112c6
--- /dev/null
+++ b/packages/web/src/content/docs/de/server.mdx
@@ -0,0 +1,291 @@
+---
+title: Server
+description: Nutze den opencode-Server ueber HTTP.
+---
+
+import config from "../../../../config.mjs"
+export const typesUrl = `${config.github}/blob/dev/packages/sdk/js/src/gen/types.gen.ts`
+
+Der Befehl `opencode serve` startet einen headless HTTP-Server.
+Er stellt einen OpenAPI-Endpunkt bereit, den ein opencode-Client nutzen kann.
+
+---
+
+### Nutzung
+
+```bash
+opencode serve [--port ] [--hostname ] [--cors ]
+```
+
+#### Optionen
+
+| Flag | Description | Default |
+| --------------- | ----------------------------------- | ---------------- |
+| `--port` | Port to listen on | `4096` |
+| `--hostname` | Hostname to listen on | `127.0.0.1` |
+| `--mdns` | Enable mDNS discovery | `false` |
+| `--mdns-domain` | Custom domain name for mDNS service | `opencode.local` |
+| `--cors` | Additional browser origins to allow | `[]` |
+
+`--cors` kann mehrfach angegeben werden:
+
+```bash
+opencode serve --cors http://localhost:5173 --cors https://app.example.com
+```
+
+---
+
+### Authentifizierung
+
+Setze `OPENCODE_SERVER_PASSWORD`, um den Server mit HTTP Basic Auth zu schuetzen.
+Der Benutzername ist standardmaessig `opencode`, kann aber mit `OPENCODE_SERVER_USERNAME` ueberschrieben werden. Das gilt fuer `opencode serve` und `opencode web`.
+
+```bash
+OPENCODE_SERVER_PASSWORD=your-password opencode serve
+```
+
+---
+
+### Funktionsweise
+
+Wenn du `opencode` startest, werden TUI und Server gestartet.
+Die TUI ist dabei der Client, der mit dem Server spricht; dessen OpenAPI-3.1-Endpunkt dient auch zur Generierung des [SDK](/docs/sdk).
+
+:::tip
+Nutze den opencode-Server, um opencode programmatisch anzusteuern.
+:::
+
+Diese Architektur erlaubt mehrere Clients und programmatische Nutzung.
+
+Mit `opencode serve` startest du einen eigenstaendigen Server.
+Laeuft bereits eine TUI, startet `opencode serve` trotzdem eine neue Serverinstanz.
+
+---
+
+#### Mit bestehendem Server verbinden
+
+Beim TUI-Start werden Port und Hostname zufaellig gewaehlt.
+Alternativ gibst du `--hostname` und `--port` als [Flags](/docs/cli) vor und verbindest dich dann gezielt damit.
+
+Der Endpunkt [`/tui`](#tui) kann die TUI ueber den Server steuern, etwa zum Vorbelegen oder Abschicken von Prompts.
+Dieses Muster nutzen auch die OpenCode-[IDE](/docs/ide)-Plugins.
+
+---
+
+## Spec
+
+Der Server veroeffentlicht eine OpenAPI-3.1-Spezifikation unter:
+
+```
+http://:/doc
+```
+
+Zum Beispiel `http://localhost:4096/doc`.
+Nutze die Spec zum Generieren von Clients, zum Pruefen von Request/Response-Typen oder in einem Swagger-Explorer.
+
+---
+
+## APIs
+
+Der opencode-Server stellt folgende APIs bereit.
+
+---
+
+### Global
+
+| Method | Path | Description | Response |
+| ------ | ---------------- | ------------------------------ | ------------------------------------ |
+| `GET` | `/global/health` | Get server health and version | `{ healthy: true, version: string }` |
+| `GET` | `/global/event` | Get global events (SSE stream) | Event stream |
+
+---
+
+### Project
+
+| Method | Path | Description | Response |
+| ------ | ------------------ | ----------------------- | --------------------------------------------- |
+| `GET` | `/project` | List all projects | Project[] |
+| `GET` | `/project/current` | Get the current project | Project |
+
+---
+
+### Path & VCS
+
+| Method | Path | Description | Response |
+| ------ | ------- | ------------------------------------ | ------------------------------------------- |
+| `GET` | `/path` | Get the current path | Path |
+| `GET` | `/vcs` | Get VCS info for the current project | VcsInfo |
+
+---
+
+### Instance
+
+| Method | Path | Description | Response |
+| ------ | ------------------- | ---------------------------- | --------- |
+| `POST` | `/instance/dispose` | Dispose the current instance | `boolean` |
+
+---
+
+### Config
+
+| Method | Path | Description | Response |
+| ------- | ------------------- | --------------------------------- | ---------------------------------------------------------------------------------------- |
+| `GET` | `/config` | Get config info | Config |
+| `PATCH` | `/config` | Update config | Config |
+| `GET` | `/config/providers` | List providers and default models | `{ providers: `Provider[]`, default: { [key: string]: string } }` |
+
+---
+
+### Provider
+
+| Method | Path | Description | Response |
+| ------ | -------------------------------- | ------------------------------------ | ----------------------------------------------------------------------------------- |
+| `GET` | `/provider` | List all providers | `{ all: `Provider[]`, default: {...}, connected: string[] }` |
+| `GET` | `/provider/auth` | Get provider authentication methods | `{ [providerID: string]: `ProviderAuthMethod[]` }` |
+| `POST` | `/provider/{id}/oauth/authorize` | Authorize a provider using OAuth | ProviderAuthAuthorization |
+| `POST` | `/provider/{id}/oauth/callback` | Handle OAuth callback for a provider | `boolean` |
+
+---
+
+### Sessions
+
+| Method | Path | Description | Notes |
+| -------- | ---------------------------------------- | ------------------------------------- | ---------------------------------------------------------------------------------- |
+| `GET` | `/session` | List all sessions | Returns Session[] |
+| `POST` | `/session` | Create a new session | body: `{ parentID?, title? }`, returns Session |
+| `GET` | `/session/status` | Get session status for all sessions | Returns `{ [sessionID: string]: `SessionStatus` }` |
+| `GET` | `/session/:id` | Get session details | Returns Session |
+| `DELETE` | `/session/:id` | Delete a session and all its data | Returns `boolean` |
+| `PATCH` | `/session/:id` | Update session properties | body: `{ title? }`, returns Session |
+| `GET` | `/session/:id/children` | Get a session's child sessions | Returns Session[] |
+| `GET` | `/session/:id/todo` | Get the todo list for a session | Returns Todo[] |
+| `POST` | `/session/:id/init` | Analyze app and create `AGENTS.md` | body: `{ messageID, providerID, modelID }`, returns `boolean` |
+| `POST` | `/session/:id/fork` | Fork an existing session at a message | body: `{ messageID? }`, returns Session |
+| `POST` | `/session/:id/abort` | Abort a running session | Returns `boolean` |
+| `POST` | `/session/:id/share` | Share a session | Returns Session |
+| `DELETE` | `/session/:id/share` | Unshare a session | Returns Session |
+| `GET` | `/session/:id/diff` | Get the diff for this session | query: `messageID?`, returns FileDiff[] |
+| `POST` | `/session/:id/summarize` | Summarize the session | body: `{ providerID, modelID }`, returns `boolean` |
+| `POST` | `/session/:id/revert` | Revert a message | body: `{ messageID, partID? }`, returns `boolean` |
+| `POST` | `/session/:id/unrevert` | Restore all reverted messages | Returns `boolean` |
+| `POST` | `/session/:id/permissions/:permissionID` | Respond to a permission request | body: `{ response, remember? }`, returns `boolean` |
+
+---
+
+### Messages
+
+| Method | Path | Description | Notes |
+| ------ | --------------------------------- | --------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `GET` | `/session/:id/message` | List messages in a session | query: `limit?`, returns `{ info: `Message`, parts: `Part[]`}[]` |
+| `POST` | `/session/:id/message` | Send a message and wait for response | body: `{ messageID?, model?, agent?, noReply?, system?, tools?, parts }`, returns `{ info: `Message`, parts: `Part[]`}` |
+| `GET` | `/session/:id/message/:messageID` | Get message details | Returns `{ info: `Message`, parts: `Part[]`}` |
+| `POST` | `/session/:id/prompt_async` | Send a message asynchronously (no wait) | body: same as `/session/:id/message`, returns `204 No Content` |
+| `POST` | `/session/:id/command` | Execute a slash command | body: `{ messageID?, agent?, model?, command, arguments }`, returns `{ info: `Message`, parts: `Part[]`}` |
+| `POST` | `/session/:id/shell` | Run a shell command | body: `{ agent, model?, command }`, returns `{ info: `Message`, parts: `Part[]`}` |
+
+---
+
+### Commands
+
+| Method | Path | Description | Response |
+| ------ | ---------- | ----------------- | --------------------------------------------- |
+| `GET` | `/command` | List all commands | Command[] |
+
+---
+
+### Files
+
+| Method | Path | Description | Response |
+| ------ | ------------------------ | ---------------------------------- | ------------------------------------------------------------------------------------------- |
+| `GET` | `/find?pattern=` | Search for text in files | Array of match objects with `path`, `lines`, `line_number`, `absolute_offset`, `submatches` |
+| `GET` | `/find/file?query=` | Find files and directories by name | `string[]` (paths) |
+| `GET` | `/find/symbol?query=` | Find workspace symbols |