diff --git a/.github/logo-dark.png b/.github/logo-dark.png
new file mode 100644
index 0000000..ef781f4
Binary files /dev/null and b/.github/logo-dark.png differ
diff --git a/.github/preview.png b/.github/preview.png
new file mode 100755
index 0000000..11db800
Binary files /dev/null and b/.github/preview.png differ
diff --git a/.gitignore b/.gitignore
index 3ba866d..0de2738 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,24 +1,41 @@
-# build output
-dist/
-# generated types
-.astro/
-
-# dependencies
-node_modules/
-
-# logs
+# Logs
+logs
+*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
-pnpm-debug.log*
+lerna-debug.log*
+.pnpm-debug.log*
+
+# Diagnostic reports (https://nodejs.org/api/report.html)
+.report/
-# environment variables
+# Runtime data
+pids
+*.pid
+*.seed
+*.info
.env
-.env.production
+.env.development.local
+.env.test.local
+.env.production.local
+.env.local
-# macOS-specific files
-.DS_Store
+# Next.js
+.next/
+out/
+
+# Astro
+.astro/
+
+# Dependencies
+node_modules/
+.pnpm-store/
-# swap vim files
-*.swp
-*.swo
+# IDEs and other
+.idea/
+.vscode/
+*.sublime-project
+*.sublime-workspace
+*.DS_Store
+Thumbs.db
\ No newline at end of file
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/README.md b/README.md
index e72fcf7..4b8879b 100644
--- a/README.md
+++ b/README.md
@@ -1,12 +1,40 @@
-# Atuin docs
+# Atuin Documentation
-This powers docs.atuin.sh
+
-You will find markdown files within src/content/docs
+This repository contains the source code for the official Atuin documentation, hosted at [docs.atuin.sh](https://docs.atuin.sh).
-Get started with
+Atuin is a **magical shell history** tool that replaces your shell's default history with a SQLite database, providing a powerful search interface and optional cloud synchronization.
-```
-npm install
-npm run dev
-```
+
+
+## Project Structure
+
+The documentation content is primarily written in Markdown (and MDX) and is located in the `src/content/docs` directory.
+
+## Getting Started (Local Development)
+
+To set up and run the documentation site locally, follow these steps:
+
+1. **Clone the repository:**
+ ```bash
+ git clone https://github.com/atuinsh/atuin-docs.git
+ cd atuin-docs
+ ```
+
+2. **Install dependencies:**
+ ```bash
+ npm install
+ ```
+
+3. **Start the development server:**
+ ```bash
+ npm run dev
+ ```
+ This will start a local development server, usually accessible at `http://localhost:4321`. The site will automatically reload as you make changes to the source files.
+
+## Contributing
+
+We welcome contributions to improve the Atuin documentation! If you find an error, want to clarify a section, or add new content, please feel free to open an issue or submit a pull request.
+
+Before contributing, please ensure your changes align with the existing documentation style and guidelines.
diff --git a/astro.config.mjs b/astro.config.mjs
index 0c43b73..510964d 100644
--- a/astro.config.mjs
+++ b/astro.config.mjs
@@ -53,9 +53,47 @@ export default defineConfig({
linkedin: 'https://www.linkedin.com/company/atuin/'
},
- defaultLocale: "root",
+ defaultLocale: "en",
locales: {
- root: { label: "English", lang: "en" }
+ en: { label: "English", lang: "en" },
+ "pt-br": {
+ label: "Português (Brasil)",
+ lang: "pt-BR",
+ sidebar: [
+ {
+ label: 'Guia',
+ items: [
+ { label: 'Instalação', link: '/pt-br/guide/installation' },
+ { label: 'Configurando a sincronização', link: '/pt-br/guide/sync' },
+ { label: 'Importar histórico existente', link: '/pt-br/guide/import' },
+ { label: 'Uso básico', link: '/pt-br/guide/basic-usage' },
+ { label: 'Sincronizando dotfiles', link: '/pt-br/guide/dotfiles' },
+ { label: 'Temas', link: '/pt-br/guide/theming' },
+ ],
+ },
+ {
+ label: 'Configuração',
+ autogenerate: { directory: 'configuration' },
+ },
+ {
+ label: 'Referência',
+ autogenerate: { directory: 'reference' },
+ },
+ {
+ label: 'Auto-hospedagem',
+ items: [
+ { label: 'Configuração do servidor', link: '/pt-br/self-hosting/server-setup' },
+ { label: 'Uso', link: '/pt-br/self-hosting/usage' },
+ { label: 'Docker', link: '/pt-br/self-hosting/docker' },
+ { label: 'Kubernetes', link: '/pt-br/self-hosting/kubernetes' },
+ { label: 'Systemd', link: '/pt-br/self-hosting/systemd' },
+ ],
+ },
+ { label: 'Problemas conhecidos', link: '/pt-br/known-issues' },
+ { label: 'Integrações', link: '/pt-br/integrations' },
+ { label: 'Perguntas Frequentes', link: '/pt-br/faq' },
+ ],
+ }
},
sidebar: [
diff --git a/package-lock.json b/package-lock.json
index 547d273..0843611 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,6 +10,7 @@
"@astrojs/check": "^0.5.6",
"@astrojs/starlight": "^0.20.1",
"astro": "^4.4.6",
+ "git-commit-msg-linter": "^5.0.8",
"rehype-autolink-headings": "^7.1.0",
"rehype-slug": "^6.0.0",
"sharp": "^0.33.2",
@@ -3420,6 +3421,43 @@
"url": "https://github.com/sponsors/wooorm"
}
},
+ "node_modules/commit-msg-linter": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/commit-msg-linter/-/commit-msg-linter-1.1.0.tgz",
+ "integrity": "sha512-fLdMKN12G/f+ZZ+TCRBiK/yon/SmxMIDizJI3PbYSETxq6DBF/zqok3cHPoBCiDysUVyJ8WpMokrP0t34qJm8g==",
+ "license": "MIT",
+ "dependencies": {
+ "did-you-mean": "^0.0.1",
+ "supports-color": "^8.1.1"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/commit-msg-linter/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/commit-msg-linter/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
"node_modules/common-ancestor-path": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz",
@@ -3573,6 +3611,16 @@
"url": "https://github.com/sponsors/wooorm"
}
},
+ "node_modules/did-you-mean": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/did-you-mean/-/did-you-mean-0.0.1.tgz",
+ "integrity": "sha512-rKxPpbrHr4/u8VMPde6Z3DhbGoXw7kepHZIU2FGs+IU+LKnhEIlw1cx80FZ7fLruJXDyu0slKMai2FhPRZjwxQ==",
+ "license": "ISC",
+ "dependencies": {
+ "levenshtein": "*",
+ "underscore": "*"
+ }
+ },
"node_modules/diff": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
@@ -3991,6 +4039,23 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/git-commit-msg-linter": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/git-commit-msg-linter/-/git-commit-msg-linter-5.0.8.tgz",
+ "integrity": "sha512-buif1Hfo3barMYIOz9kKbyD6upC4/bQSDVPuGMIXho3bAgaTCG0fPhOVq9JAFf9XAfcpRWqgIK1Q+BB7exNdFA==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "^2.4.2",
+ "commit-msg-linter": "^1.0.0"
+ },
+ "bin": {
+ "commit-msg-linter": "cli/validate.js"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
"node_modules/github-from-package": {
"version": "0.0.0",
"resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
@@ -4738,6 +4803,15 @@
"node": ">=6"
}
},
+ "node_modules/levenshtein": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/levenshtein/-/levenshtein-1.0.5.tgz",
+ "integrity": "sha512-UQf1nnmxjl7O0+snDXj2YF2r74Gkya8ZpnegrUBYN9tikh2dtxV/ey8e07BO5wwo0i76yjOvbDhFHdcPEiH9aA==",
+ "engines": [
+ "node >=0.2.0"
+ ],
+ "license": "Public Domain"
+ },
"node_modules/load-yaml-file": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.2.0.tgz",
@@ -8197,6 +8271,12 @@
"semver": "^7.3.8"
}
},
+ "node_modules/underscore": {
+ "version": "1.13.7",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz",
+ "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==",
+ "license": "MIT"
+ },
"node_modules/undici-types": {
"version": "5.26.5",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
diff --git a/package.json b/package.json
index 22aea03..b247a14 100644
--- a/package.json
+++ b/package.json
@@ -13,6 +13,7 @@
"@astrojs/check": "^0.5.6",
"@astrojs/starlight": "^0.20.1",
"astro": "^4.4.6",
+ "git-commit-msg-linter": "^5.0.8",
"rehype-autolink-headings": "^7.1.0",
"rehype-slug": "^6.0.0",
"sharp": "^0.33.2",
diff --git a/public/inline.png b/public/inline.png
new file mode 100755
index 0000000..5326ac4
Binary files /dev/null and b/public/inline.png differ
diff --git a/public/preview.png b/public/preview.png
new file mode 100755
index 0000000..11db800
Binary files /dev/null and b/public/preview.png differ
diff --git a/src/content/docs/configuration/config.mdx b/src/content/docs/configuration/config.mdx
index 2993b50..03fe9b4 100644
--- a/src/content/docs/configuration/config.mdx
+++ b/src/content/docs/configuration/config.mdx
@@ -233,7 +233,7 @@ Default: `40`
Set the maximum number of lines Atuin's interface should take up.
-
+
If set to `0`, Atuin will always take up as many lines as available (full screen).
@@ -243,7 +243,7 @@ Default: `true`
Configure whether or not to show a preview of the selected command.
-
+
Useful when the command is longer than the terminal width and is cut off.
diff --git a/src/content/docs/pt-br/configuration/config.mdx b/src/content/docs/pt-br/configuration/config.mdx
new file mode 100644
index 0000000..99c45cc
--- /dev/null
+++ b/src/content/docs/pt-br/configuration/config.mdx
@@ -0,0 +1,731 @@
+---
+title: Config
+---
+
+O Atuin mantém dois arquivos de configuração, armazenados em `~/.config/atuin/`. Armazenamos
+dados em `~/.local/share/atuin` (a menos que substituído por XDG\_\*).
+
+O caminho completo para o arquivo de configuração seria `~/.config/atuin/config.toml`
+
+O local da configuração pode ser substituído por ATUIN_CONFIG_DIR
+
+### `db_path`
+
+Padrão: `~/.local/share/atuin/history.db`
+
+O caminho para o banco de dados SQLite do Atuin.
+
+```toml
+db_path = "~/.history.db"
+```
+
+### `key_path`
+
+Padrão: `~/.local/share/atuin/key`
+
+O caminho para a chave de criptografia do Atuin.
+
+```toml
+key_path = "~/.atuin-key"
+```
+
+### `session_path`
+
+Padrão: `~/.local/share/atuin/session`
+
+O caminho para o arquivo de sessão do servidor Atuin.
+Isso é essencialmente apenas um token de API
+
+```toml
+session_path = "~/.atuin-session"
+```
+
+### `dialect`
+
+Padrão: `us`
+
+Isso configura como o comando [stats](/reference/stats/) analisa as datas. Ele tem dois
+valores possíveis
+
+```toml
+dialect = "uk"
+```
+
+ou
+
+```toml
+dialect = "us"
+```
+
+### `auto_sync`
+
+Padrão: `true`
+
+Configura se deve ou não sincronizar automaticamente, quando logado.
+
+```toml
+auto_sync = true/false
+```
+
+### `update_check`
+
+Padrão: `true`
+
+Configura se deve ou não verificar automaticamente por atualizações.
+
+```toml
+update_check = true/false
+```
+
+### `sync_address`
+
+Padrão: `https://api.atuin.sh`
+
+O endereço do servidor para sincronizar!
+
+```toml
+sync_address = "https://api.atuin.sh"
+```
+
+### `sync_frequency`
+
+Padrão: `1h`
+
+Com que frequência sincronizar automaticamente com o servidor. Isso pode ser dado em um
+"formato legível por humanos". Por exemplo, `10s`, `20m`, `1h`, etc.
+
+Se definido como `0`, o Atuin sincronizará após cada comando. Alguns servidores podem potencialmente
+limitar a taxa, o que não causará nenhum problema.
+
+```toml
+sync_frequency = "1h"
+```
+
+### `search_mode`
+
+Padrão: `fuzzy`
+
+Qual modo de pesquisa usar. O Atuin suporta "prefix", "fulltext", "fuzzy", e
+"skim" modos de pesquisa.
+
+O modo prefixo pesquisa por "query\*"; o modo fulltext pesquisa por "\*query\*";
+"fuzzy" aplica a [sintaxe de pesquisa fuzzy](#fuzzy-search-syntax);
+"skim" aplica a [sintaxe de pesquisa skim](https://github.com/lotabout/skim#search-syntax).
+
+#### Sintaxe de pesquisa `fuzzy`
+
+A sintaxe de pesquisa "fuzzy" é baseada na
+[sintaxe de pesquisa fzf](https://github.com/junegunn/fzf#search-syntax).
+
+| Token | Tipo de correspondência | Descrição |
+| --------- | -------------------------- | ------------------------------------ |
+| `sbtrkt` | correspondência fuzzy | Itens que correspondem a `sbtrkt` |
+| `'wild` | correspondência exata (entre aspas) | Itens que incluem `wild` |
+| `^music` | correspondência exata de prefixo | Itens que começam com `music` |
+| `.mp3 | correspondência exata de sufixo | Itens que terminam com `.mp3` |
+| `!fire` | correspondência exata inversa | Itens que não incluem `fire` |
+| `!^music` | correspondência exata inversa de prefixo | Itens que não começam com `music` |
+| `!.mp3 | correspondência exata inversa de sufixo | Itens que não terminam com `.mp3` |
+
+Um único termo de barra vertical atua como um operador OR. Por exemplo, a seguinte
+consulta corresponde a entradas que começam com `core` e terminam com `go`, `rb`,
+ou `py`.
+
+```
+^core go$ | rb$ | py$
+```
+
+### `filter_mode`
+
+Padrão: `global`
+
+O filtro padrão a ser usado ao pesquisar
+
+| Modo | Descrição |
+| ---------------- | ------------------------------------------------------------ |
+| global (padrão) | Pesquisar histórico de todos os hosts, todas as sessões, todos os diretórios |
+| host | Pesquisar histórico apenas deste host |
+| session | Pesquisar histórico apenas da sessão atual |
+| directory | Pesquisar histórico apenas do diretório atual |
+| workspace | Pesquisar histórico apenas do repositório git atual (>17.0) |
+
+Os modos de filtro ainda podem ser alternados via ctrl-r
+
+```toml
+filter_mode = "host"
+```
+
+### `search_mode_shell_up_key_binding`
+
+Versão do Atuin: >= 17.0
+
+Padrão: `fuzzy`
+
+O modo de pesquisa padrão a ser usado ao pesquisar e ser invocado por uma vinculação de tecla de seta para cima do shell.
+
+Aceita exatamente as mesmas opções que `search_mode` acima
+
+```toml
+search_mode_shell_up_key_binding = "fuzzy"
+```
+
+Padrão para o valor especificado para `search_mode`.
+
+### `filter_mode_shell_up_key_binding`
+
+Padrão: `global`
+
+O filtro padrão a ser usado ao pesquisar e ser invocado por uma vinculação de tecla de seta para cima do shell.
+
+Aceita exatamente as mesmas opções que `filter_mode` acima
+
+```toml
+filter_mode_shell_up_key_binding = "session"
+```
+
+Padrão para o valor especificado para `filter_mode`.
+
+### `workspaces`
+
+Versão do Atuin: >= 17.0
+
+Padrão: `false`
+
+Esta flag habilita um modo de filtro pseudo-nomeado "workspace": o filtro é automaticamente
+ativado quando você está em um repositório git.
+
+Com a filtragem de workspace habilitada, o Atuin filtrará os comandos executados em qualquer diretório
+dentro de uma árvore de repositório git.
+
+Os modos de filtro ainda podem ser alternados via ctrl-r.
+
+### `style`
+
+Padrão: `compact`
+
+Qual estilo usar. Valores possíveis: `auto`, `full` e `compact`.
+
+- `compact`:
+
+
+
+- `full`:
+
+
+
+Isso significa que o Atuin mudará automaticamente para o modo `compact` quando a janela do terminal for muito curta para o `full` exibir corretamente.
+
+### `invert`
+
+Versão do Atuin: >= 17.0
+
+Padrão: `false`
+
+Inverte a UI - coloca a barra de pesquisa no topo.
+
+```toml
+invert = true/false
+```
+
+### `inline_height`
+
+Padrão: `40`
+
+Define o número máximo de linhas que a interface do Atuin deve ocupar.
+
+
+
+Se definido como `0`, o Atuin sempre ocupará o máximo de linhas disponíveis (tela cheia).
+
+### `show_preview`
+
+Padrão: `true`
+
+Configura se deve ou não mostrar uma prévia do comando selecionado.
+
+
+
+Útil quando o comando é mais longo que a largura do terminal e é cortado.
+
+### `max_preview_height`
+
+Versão do Atuin: >= 17.0
+
+Padrão: `4`
+
+Configura a altura máxima da prévia a ser mostrada.
+
+Útil quando você tem scripts longos em seu histórico que deseja distinguir por mais do que as primeiras linhas.
+
+### `show_help`
+
+Versão do Atuin: >= 17.0
+
+Padrão: `true`
+
+Configura se deve ou não mostrar a linha de ajuda, que inclui a versão atual do Atuin (e se uma atualização está disponível), uma dica de mapa de teclas e a quantidade total de comandos em seu histórico.
+
+### `show_tabs`
+
+Versão do Atuin: >= 18.0
+
+Padrão: `true`
+
+Configura se deve ou não mostrar abas para pesquisa e inspeção.
+
+### `exit_mode`
+
+Padrão: `return-original`
+
+O que fazer quando a tecla escape é pressionada durante a pesquisa
+
+| Valor | Comportamento |
+| ------------------------- | ---------------------------------------------------------------- |
+| return-original (padrão) | Define a linha de comando para o valor que tinha antes de iniciar a pesquisa |
+| return-query | Define a linha de comando para a consulta de pesquisa que você digitou até agora |
+
+Pressionar ctrl+c ou ctrl+d sempre retornará o valor original da linha de comando.
+
+```toml
+exit_mode = "return-query"
+```
+
+### `history_format`
+
+Padrão para `history list`
+
+O formato do histórico permite que você configure o formato padrão da `history list` - que também pode ser especificado com o argumento --format.
+
+O argumento --format especificado priorizará a configuração quando ambos estiverem presentes.
+
+Mais sobre [history list](https://docs.atuin.sh/reference/list/)
+
+### `history_filter`
+
+O filtro de histórico permite que você exclua comandos do rastreamento de histórico - talvez você queira manter TODOS os seus `curl` comandos totalmente fora do seu histórico de shell, ou talvez apenas alguns que correspondam a um padrão.
+
+Isso suporta expressões regulares, então você pode esconder praticamente o que quiser!
+
+```toml
+## Observe que essas expressões regulares não são ancoradas, ou seja, se não começarem
+## com ^ ou terminarem com $, elas corresponderão em qualquer lugar do comando.
+history_filter = [
+ "^secret-cmd",
+ "^innocuous-cmd .*--secret=.+"
+]
+```
+
+### `cwd_filter`
+
+O filtro cwd permite que você exclua diretórios do rastreamento de histórico.
+
+Isso suporta expressões regulares, então você pode esconder praticamente o que quiser!
+
+```toml
+## Observe que essas expressões regulares não são ancoradas, ou seja, se não começarem
+## com ^ ou terminarem com $, elas corresponderão em qualquer lugar do comando.
+# cwd_filter = [
+# "^/very/secret/directory",
+# ]
+```
+
+Depois de atualizar esse parâmetro, você pode executar [o comando prune](/reference/prune/) para remover entradas de histórico antigas que correspondam aos novos filtros.
+
+### `store_failed`
+
+Versão do Atuin: >= 18.3.0
+
+Padrão: `true`
+
+```toml
+store_failed = true
+```
+
+Configura se deve ou não armazenar comandos que falharam (aqueles com status de saída diferente de zero).
+
+### `secrets_filter`
+
+Versão do Atuin: >= 17.0
+
+Padrão: `true`
+
+```toml
+secrets_filter = true
+```
+
+Isso compara o histórico com um conjunto de regex padrão e não o salvará se houver uma correspondência. Os padrões incluem
+
+1. ID da chave AWS
+2. PAT do Github (antigo e novo)
+3. Tokens OAuth do Slack (bot, usuário)
+4. Webhooks do Slack
+5. Chaves de teste/produção do Stripe
+6. Comando de login do Atuin
+7. Padrões de variáveis de ambiente de nuvem (`AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AZURE_STORAGE_CLASS_KEY`, `GOOGLE_SERVICE_ACCOUNT_KEY`)
+8. Tokens de autenticação do Netlify
+9. PAT do Npm
+10. PAT do Pulumi
+
+### Atalhos de teclado Ctrl-n do macOS
+
+Padrão: `true`
+
+O macOS não possui uma tecla Alt, embora os emuladores de terminal possam frequentemente ser configurados para mapear a tecla Option para ser usada como Alt. _No entanto_, remapear Option dessa forma pode impedir a digitação de alguns caracteres, como usar Option-3 para digitar `#` no layout inglês britânico. Para tal cenário, defina a opção `ctrl_n_shortcuts` como `true` em seu arquivo de configuração para substituir os atalhos Alt-0 a Alt-9 por Ctrl-0 a Ctrl-9 em vez disso:
+
+```toml
+# Usar Ctrl-0 .. Ctrl-9 em vez de Alt-0 .. Alt-9 atalhos de UI
+ctrl_n_shortcuts = true
+```
+
+### `network_timeout`
+
+Versão do Atuin: >= 18.0
+
+Padrão: `30`
+
+A quantidade máxima de tempo (em segundos) para esperar por uma solicitação de rede. Se alguma
+operação com um servidor de sincronização demorar mais do que isso, o código falhará -
+rather than wait indefinitely.
+
+### `network_connect_timeout`
+
+Versão do Atuin: >= 18.0
+
+Padrão: `5`
+
+O tempo máximo (em segundos) que esperamos por uma conexão para ser estabelecida com um
+servidor de sincronização remoto. Qualquer tempo maior que isso e a solicitação falhará.
+
+### `local_timeout`
+
+Versão do Atuin: >= 18.0
+
+Padrão: `5`
+
+Tempo limite (em segundos) para adquirir uma conexão de banco de dados local (sqlite).
+
+### `enter_accept`
+
+Versão do Atuin: >= 17.0
+
+Padrão: `false`
+
+Não suportado pelo NuShell atualmente
+
+Quando definido como true, o Atuin padronizará a execução imediata de um comando, em vez de
+o usuário ter que pressionar enter duas vezes. Pressionar tab retornará ao
+shell e dará ao usuário a chance de editar.
+
+Isso tecnicamente padroniza para true para novos usuários, mas false para usuários existentes. Nós
+definimos `enter_accept = true` no arquivo de configuração padrão. Isso provavelmente
+mudará para ser o padrão para todos em uma versão posterior.
+
+### `keymap_mode`
+
+Versão do Atuin: >= 18.0
+
+Padrão: `emacs`
+
+O modo de mapa de teclas inicial da pesquisa interativa do Atuin (por exemplo, iniciada pelas
+vinculações de teclas nos shells). Existem quatro valores suportados: `"emacs"`,
+`"vim-normal"`, `"vim-insert"`, e `"auto"`. O modo de mapa de teclas `"emacs"` é o
+mais básico. No modo de mapa de teclas `"vim-normal"`, você pode usar k
+e j para navegar na lista de histórico como no Vim, enquanto pressionar
+i muda o modo de mapa de teclas para `"vim-insert"`. No modo de mapa de teclas `"vim-insert"`,
+você pode pesquisar uma string como no modo de mapa de teclas `"emacs"`, enquanto pressionar
+ Esc
+ muda o modo de mapa de teclas para `"vim-normal"`. Quando definido como `"auto"`, o modo de mapa de teclas inicial
+é determinado automaticamente com base no mapa de teclas do shell que acionou
+a pesquisa do Atuin. `"auto"` não é suportado pelo NuShell atualmente, onde ele
+sempre acionará a pesquisa do Atuin com o modo de mapa de teclas `"emacs"`.
+
+### `keymap_cursor`
+
+Versão do Atuin: >= 18.0
+
+Padrão: `(dicionário vazio)`
+
+O estilo do cursor do terminal associado a cada modo de mapa de teclas na pesquisa do Atuin.
+Isso é especificado por um dicionário cujas chaves e valores são os
+nomes dos mapas de teclas e os estilos do cursor, respectivamente. Uma chave especifica um dos
+mapas de teclas de `emacs`, `vim_insert`, e `vim_normal`. Um valor é um dos
+estilos de cursor, `default` ou `{blink,steady}-{block,underline,bar}`. O
+seguinte é um exemplo.
+
+```toml
+keymap_cursor = { emacs = "blink-block", vim_insert = "blink-block", vim_normal = "steady-block" }
+```
+
+Se o estilo do cursor for especificado, o estilo do cursor do terminal será alterado para o
+especificado quando a pesquisa do Atuin iniciar com ou mudar para o
+modo de mapa de teclas correspondente. Além disso, o estilo do cursor do terminal é redefinido para o
+associado ao modo de mapa de teclas correspondente ao mapa de teclas do shell na
+terminação da pesquisa do Atuin.
+
+### `prefers_reduced_motion`
+
+Versão do Atuin: >= 18.0
+
+Padrão: `false`
+
+Habilite isso, e o Atuin reduzirá o movimento na TUI o máximo possível. Usuários
+com sensibilidade ao movimento podem achar os carimbos de data/hora de atualização ao vivo distrativos.
+
+Alternativamente, defina a variável de ambiente NO_MOTION
+
+## Estatísticas
+
+Esta seção da configuração do cliente é especificamente para configurar os cálculos de estatísticas do Atuin.
+
+```
+[stats]
+common_subcommands = [...]
+common_prefix = [...]
+```
+
+### `common_subcommands`
+
+Padrão:
+
+```toml
+common_subcommands = [
+ "apt",
+ "cargo",
+ "composer",
+ "dnf",
+ "docker",
+ "git",
+ "go",
+ "ip",
+ "kubectl",
+ "nix",
+ "nmcli",
+ "npm",
+ "pecl",
+ "pnpm",
+ "podman",
+ "port",
+ "systemctl",
+ "tmux",
+ "yarn",
+]
+```
+
+Configura comandos onde devemos considerar o subcomando como parte das estatísticas. Por exemplo, considere `kubectl get` em vez de apenas `kubectl`.
+
+### `common_prefix`
+
+Versão do Atuin: >= 17.1
+
+Padrão:
+
+```toml
+common_prefix = [
+ "sudo",
+]
+```
+
+Configura comandos que devem ser totalmente removidos dos cálculos de estatísticas. Por exemplo, 'sudo' deve ser ignorado.
+
+## sincronização
+
+Desenvolvemos uma nova versão de sincronização, que é mais rápida e eficiente que a versão original.
+
+Atualmente, é o padrão para novas instalações, mas não para usuários existentes. Isso mudará em uma versão posterior.
+
+Para habilitar a sincronização v2, adicione o seguinte à sua configuração:
+
+```toml
+[sync]
+records = true
+```
+
+## `dotfiles`
+
+Versão do Atuin: >= 18.1
+
+Padrão: `false`
+
+Para habilitar a sincronização de aliases de shell entre hosts. Requer `sync` habilitado.
+
+Adicione a nova seção ao final do seu arquivo de configuração, para cada máquina que você usa o Atuin.
+
+```toml
+[dotfiles]
+enabled = true
+```
+
+Nota: você precisará ter a sincronização v2 habilitada. Veja a seção acima.
+
+Gerencie aliases usando as opções de linha de comando
+
+```
+# Alias 'k' para 'kubectl'
+atuin dotfiles alias set k kubectl
+
+# Listar todos os aliases
+atuin dotfiles alias list
+
+# Excluir um alias
+atuin dotfiles alias delete k
+```
+
+Depois de definir um alias, você precisará reiniciar seu shell ou carregar o arquivo init para que a alteração tenha efeito.
+
+## chaves
+
+Esta seção da configuração do cliente é especificamente para configurar as configurações relacionadas a chaves.
+
+```
+[keys]
+scroll_exits = [...]
+prefix = 'a'
+```
+
+### `scroll_exits`
+
+Versão do Atuin: >= 18.1
+
+Padrão: `true`
+
+Configura se a TUI sai, quando rolada além da última ou primeira entrada.
+
+### `prefix`
+
+Versão do Atuin: > 18.3
+
+Padrão: `a`
+
+Qual chave usar como prefixo
+
+## prévia
+
+Esta seção da configuração do cliente é especificamente para configurar as configurações relacionadas à prévia.
+(No futuro, as outras 2 configurações de prévia serão movidas para cá.)
+
+```
+[preview]
+strategy = [...]
+```
+
+### `strategy`
+
+Versão do Atuin: >= 18.3
+
+Padrão: `auto`
+
+Qual estratégia de prévia é usada para calcular a altura da prévia. Respeita `max_preview_height`.
+
+| Valor | A altura da prévia é calculada a partir do comprimento do |
+| -------------- | --------------------------------------------------- |
+| auto (padrão) | comando selecionado |
+| static | comando mais longo no conjunto de resultados atual |
+| fixed | usar `max_preview_height` como valor fixo |
+
+Ao usar `auto`, uma prévia é mostrada, se o comando for mais longo que a largura do terminal.
+
+## Daemon
+
+Versão do Atuin: >= 18.3
+
+Padrão: `false`
+
+Habilita o daemon em segundo plano
+
+Adicione a nova seção ao final do seu arquivo de configuração
+
+```toml
+[daemon]
+enabled = true
+```
+
+### sync_frequency
+
+Padrão: `300`
+
+Com que frequência o daemon deve sincronizar, em segundos
+
+```toml
+sync_frequency = 300
+```
+
+### socket_path
+
+Padrão:
+
+```toml
+socket_path = "~/.local/share/atuin/atuin.sock"
+```
+
+Onde vincular um socket unix para comunicação cliente -> daemon
+
+Se XDG_RUNTIME_DIR estiver disponível, então usamos este diretório em vez disso.
+
+### systemd_socket
+
+Padrão `false`
+
+Use um socket passado via protocolo de ativação de socket systemd em vez do caminho
+
+```toml
+systemd_socket = false
+```
+
+### tcp_port
+
+Padrão: `8889`
+
+A porta a ser usada para comunicação cliente -> daemon. Usado apenas em sistemas não-unix.
+
+```toml
+tcp_port = 8889
+```
+
+## tema
+
+Versão do Atuin: >= 18.4
+
+O tema a ser usado para mostrar a interface do terminal.
+
+```toml
+[theme]
+name = ""
+debug = false
+max_depth = 10
+```
+
+### `name`
+
+Padrão: `""`
+
+Um nome de tema que deve estar presente como um tema embutido (uma string vazia para o padrão,
+`autumn` ou `marine`), ou encontrado no diretório de temas, com o sufixo `.toml`.
+Por padrão, este é `~/.config/atuin/themes/`, mas pode ser substituído pela
+variável de ambiente `ATUIN_THEME_DIR`.
+
+```toml
+name = "meu-tema"
+```
+
+### `debug`
+
+Padrão: `false`
+
+Informações de saída sobre por que um tema não será carregado. Independente de outros níveis de log,
+pois pode fazer com que dados do arquivo de tema sejam impressos sem filtro no
+terminal.
+
+```toml
+debug = false
+```
+
+### `max_depth`
+
+Padrão: 10
+
+Número de níveis de "parentesco" que serão percorridos para um tema. Isso não deve
+precisar ser adicionado ou alterado em uso normal.
+
+```toml
+max_depth = 10
+```
\ No newline at end of file
diff --git a/src/content/docs/pt-br/configuration/key-binding.mdx b/src/content/docs/pt-br/configuration/key-binding.mdx
new file mode 100644
index 0000000..7778c2f
--- /dev/null
+++ b/src/content/docs/pt-br/configuration/key-binding.mdx
@@ -0,0 +1,174 @@
+---
+title: Vinculação de Teclas
+---
+
+O Atuin ainda não possui personalização completa de vinculação de teclas, embora permitamos algumas alterações.
+
+## Modo de filtro de seta para cima personalizado
+Pode ser útil usar um filtro ou modo de pesquisa diferente na seta para cima. Por exemplo, você pode usar ctrl-r para pesquisar globalmente, mas a seta para cima para pesquisar o histórico apenas do diretório atual.
+Defina sua configuração assim:
+
+```bash
+filter_mode_shell_up_key_binding = "directory" # ou global, host, directory, etc
+```
+
+## Desabilitar seta para cima
+Nossa vinculação padrão da seta para cima pode ser um pouco controversa. Algumas pessoas adoram, algumas pessoas odeiam. Muitas pessoas que a acharam um pouco estranha no início, desde então, passaram a amá-la, então experimente!
+Torna-se muito mais poderosa se você considerar vincular um modo de filtro diferente à seta para cima. Por exemplo, em "para cima", o Atuin pode padronizar a pesquisa de todo o histórico apenas para o diretório atual, enquanto ctrl-r pesquisa o histórico globalmente. Veja a [configuração](/configuration/config/#filter_mode_shell_up_key_binding) para mais.
+
+Caso contrário, se você não gostar, é fácil desabilitar. Você também pode desabilitar a seta para cima ou as vinculações Ctrl-r individualmente, passando `--disable-up-arrow` ou `--disable-ctrl-r` para a chamada `atuin init` no arquivo de configuração do seu shell:
+
+Um exemplo para zsh:
+
+```bash
+# Vincular ctrl-r mas não a seta para cima
+eval "$(atuin init zsh --disable-up-arrow)"
+
+# Vincular a seta para cima mas não ctrl-r
+eval "$(atuin init zsh --disable-ctrl-r)"
+```
+
+
+If you don't want any of the keys to be bound, pass both `--disable` arguments, or set the `ATUIN_NOBIND` environment variable to any value before the `atuin init` call:
+
+```bash
+## Não vincular nenhuma tecla
+# Ou:
+eval "$(atuin init zsh --disable-up-arrow --disable-ctrl-r)"
+
+# Ou:
+export ATUIN_NOBIND="true"
+eval "$(atuin init zsh)"
+```
+
+Você pode então optar por vincular o Atuin se necessário, faça isso após a chamada para init.
+
+## Comportamento da tecla Enter
+Por padrão, a tecla `enter` executará diretamente o comando selecionado em vez de permitir que você o edite como a tecla `tab`. Se você quiser alterar esse comportamento, defina `enter_accept = false` em sua configuração. Para mais detalhes: [enter_accept](https://docs.atuin.sh/configuration/config/#enter_accept).
+
+## Atalhos de teclado Ctrl-n
+O macOS não possui uma tecla Alt, embora os emuladores de terminal possam frequentemente ser configurados para mapear a tecla Option para ser usada como Alt. *No entanto*, remapear Option dessa forma pode impedir a digitação de alguns caracteres, como usar Option-3 para digitar `#` no layout inglês britânico. Para tal cenário, defina a opção `ctrl_n_shortcuts` como `true` em seu arquivo de configuração para substituir os atalhos Alt-0 a Alt-9 por Ctrl-0 a Ctrl-9 em vez disso:
+```
+# Usar Ctrl-0 .. Ctrl-9 em vez de Alt-0 .. Alt-9 atalhos de UI
+ctrl_n_shortcuts = true
+```
+
+## zsh
+Se você quiser personalizar ainda mais suas vinculações, é possível fazê-lo com a configuração de shell personalizada:
+O Atuin define os widgets ZLE "atuin-search" e "atuin-up-search". O último
+pode ser usado para as vinculações de teclas para a tecla up e teclas semelhantes.
+Nota: em vez disso, use os nomes dos widgets "_atuin_search_widget" e "_atuin_up_search_widget", respectively, in `atuin < 18.0`
+
+```sh
+export ATUIN_NOBIND="true"
+eval "$(atuin init zsh)"
+
+bindkey '^r' atuin-search
+
+# vincular à tecla para cima, que depende do modo do terminal
+bindkey '^[[A' atuin-up-search
+bindkey '^[[OA' atuin-up-search
+```
+
+Para as vinculações de teclas no modo vi, "atuin-search-viins", "atuin-search-vicmd",
+"atuin-up-search-viins", e "atuin-up-search-vicmd" (`atuin >= 18.0`) podem ser
+usados em combinação com a configuração["keymap\_mode"](https://docs.atuin.sh/configuration/config/#keymap_mode)
+(`atuin >= 18.0`) para iniciar a pesquisa do Atuin nos respectivos modos de mapa de teclas.
+
+## bash
+
+O Atuin fornece uma função de shell vinculável "`__atuin_history`" para vinculações de teclas em Bash. A flag `--shell-up-key-binding` pode ser opcionalmente especificada para o primeiro argumento para vinculações de teclas para a tecla up ou teclas semelhantes.
+
+```bash
+export ATUIN_NOBIND="true"
+eval "$(atuin init bash)"
+
+# vincular a ctrl-r, adicione quaisquer outras vinculações que você queira aqui também
+bind -x '"\C-r": __atuin_history'
+
+# vincular à tecla para cima, que depende do modo do terminal
+bind -x '"\e[A": __atuin_history --shell-up-key-binding'
+bind -x '"\eOA": __atuin_history --shell-up-key-binding'
+```
+
+Para as vinculações de teclas no modo de edição `vi`, as opções `--keymap-mode=vim-insert` e `--keymap-mode=vim-normal` (`atuin >= 18.0`) podem ser adicionalmente especificadas para a função de shell `__atuin_history` em combinação com a configuração["keymap\_mode"](https://docs.atuin.sh/configuration/config/#keymap_mode) (`atuin >= 18.0`) para iniciar a pesquisa do Atuin nos respectivos modos de mapa de teclas.
+
+## fish
+Edite as vinculações de teclas no shell FISH adicionando o seguinte a ~/.config/fish/config.fish
+
+```bash
+set -gx ATUIN_NOBIND "true"
+atuin init fish | source
+
+# vincular a ctrl-r nos modos normal e de inserção, adicione quaisquer outras vinculações que você queira aqui também
+bind \cr _atuin_search
+bind -M insert \cr _atuin_search
+```
+
+Para a vinculação da tecla up, `_atuin_bind_up` pode ser usado em vez de `_atuin_search`.
+
+Adicionar a útil vinculação de tecla alternativa de CTRL-up é complicado e determinado pela aderência dos terminais ao terminfo(5).
+
+## nu
+```nu
+$env.ATUIN_NOBIND = true
+atuin init nu | save -f ~/.local/share/atuin/init.nu #certifique-se de ter criado o diretório antes com `mkdir ~/.local/share/atuin/init.nu`
+source ~/.local/share/atuin/init.nu
+
+#vincular a ctrl-r nos modos emacs, vi_normal e vi_insert, adicione quaisquer outras vinculações que você queira aqui também
+$env.config = ($env.config | upsert keybindings ($env.config.keybindings| append {
+ name: atuin
+ modifier: control
+ keycode: char_r
+ mode: [emacs, vi_normal, vi_insert]
+ event: { send: execute_host_command cmd: (_atuin_search_cmd) }
+}))
+```
+
+## Atalhos da UI do Atuin
+
+| Atalho | Ação |
+| ----------------------------------------- | ------------------------------------------------------------------------- |
+| `enter` | Executar item selecionado |
+| `tab` | Selecionar item e editar |
+| ctrl + r | Alternar entre os modos de filtro |
+| ctrl + s | Alternar entre os modos de pesquisa |
+| alt + 1 a alt + 9 | Selecionar item pelo número localizado próximo a ele |
+| ctrl + c / ctrl + d / ctrl + g / esc | Retornar original |
+| ctrl + y | Copiar item selecionado para a área de transferência |
+| ctrl + ⬅︎ / alt + b | Mover o cursor para a palavra anterior |
+| ctrl + ➡️ / alt + f | Mover o cursor para a próxima palavra |
+| ctrl + b / ⬅︎ | Mover o cursor para a esquerda |
+| ctrl + f / ➡️ | Mover o cursor para a direita |
+| ctrl + a / home | Mover o cursor para o início da linha |
+| ctrl + e / end | Mover o cursor para o final da linha |
+| ctrl + backspace / ctrl + alt + backspace | Remover a palavra anterior / remover a palavra logo antes do cursor |
+| ctrl + delete / ctrl + alt + delete | Remover a próxima palavra ou a palavra logo após o cursor |
+| ctrl + w | Remover a palavra antes do cursor, mesmo que ela se estenda pelas fronteiras da palavra |
+| ctrl + u | Limpar a linha atual |
+| ctrl + n / ctrl + j / ⬆ | Selecionar o próximo item na lista |
+| ctrl + p / ctrl + k / ⬇ | Selecionar o item anterior na lista |
+| ctrl + o | Abrir o inspetor |
+| page down | Rolar os resultados da pesquisa uma página para baixo |
+| page up | Rolar os resultados da pesquisa uma página para cima |
+| ⬇ (sem entrada selecionada) | Retornar original ou retornar consulta dependendo das [configurações](/configuration/config/#exit_mode) |
+| ⬇ | Selecionar o próximo item na lista |
+
+### Modo Vim
+Se [o vim estiver habilitado na configuração](https://docs.atuin.sh/configuration/config/#vim), as seguintes vinculações de teclas são habilitadas:
+
+| Atalho | Modo | Ação |
+| -------- | ------ | ------------------------------------- |
+| k | Normal | Seleciona o próximo item na lista |
+| j | Normal | Seleciona o item anterior na lista |
+| i | Normal | Entra no modo de inserção |
+| Esc | Insert | Entra no modo normal |
+
+### Inspetor
+Abra o inspetor com ctrl-o
+
+| Atalho | Ação |
+| -------- | --------------------------------------------- |
+| Esc | Fechar o inspetor, retornando ao shell |
+| ctrl+o | Fechar o inspetor, retornando à visualização de pesquisa |
+| ctrl+d | Excluir o item inspecionado do histórico |
diff --git a/src/content/docs/pt-br/faq.mdx b/src/content/docs/pt-br/faq.mdx
new file mode 100644
index 0000000..c6dda71
--- /dev/null
+++ b/src/content/docs/pt-br/faq.mdx
@@ -0,0 +1,39 @@
+---
+title: Perguntas Frequentes
+---
+
+## Como removo a vinculação padrão da seta para cima?
+
+Abra o arquivo de configuração do seu shell, encontre a linha que contém `atuin init`.
+
+Adicione `--disable-up-arrow`
+
+Exemplo:
+
+```
+eval "$(atuin init zsh --disable-up-arrow)"
+```
+
+Veja [vinculação de teclas](https://docs.atuin.sh/configuration/key-binding/) para mais informações.
+
+## Como edito um comando em vez de executá-lo imediatamente?
+
+Pressione tab! Por padrão, enter executará um comando, e tab o inserirá pronto para edição.
+
+Você pode fazer com que `enter` edite um comando colocando `enter_accept = false` no seu arquivo de configuração (~/.config/atuin/config.toml).
+
+## Como excluo minha conta?
+
+**Atenção:** Este comando não pede confirmação.
+
+```
+atuin account delete
+```
+
+Isso excluirá sua conta e todo o histórico do servidor remoto. Não excluirá seus dados locais.
+
+## Esqueci minha senha! Como posso redefini-la?
+
+Ainda não temos um sistema de redefinição de senha, pois não verificamos e-mails. Isso pode mudar em breve, mas, por enquanto, desde que você ainda esteja logado em pelo menos uma conta, é seguro excluir e recriar a conta.
+
+Estamos cientes de que isso não é o ideal.
\ No newline at end of file
diff --git a/src/content/docs/pt-br/guide/basic-usage.mdx b/src/content/docs/pt-br/guide/basic-usage.mdx
new file mode 100644
index 0000000..60252fd
--- /dev/null
+++ b/src/content/docs/pt-br/guide/basic-usage.mdx
@@ -0,0 +1,66 @@
+---
+title: Uso Básico
+---
+
+Agora que você está todo configurado e funcionando, aqui está um rápido passo a passo de como você pode usar o Atuin da melhor forma.
+
+## O que o Atuin registra?
+
+Enquanto você trabalha, o Atuin registra:
+
+1. O comando que você executa
+2. O diretório onde você o executou
+3. A hora em que você o executou e quanto tempo levou para ser executado
+4. O código de saída do comando
+5. O nome do host + usuário da máquina
+6. A sessão do shell em que você o executou
+
+## Abrindo e usando a TUI
+
+A qualquer momento, você pode abrir a TUI com as teclas de atalho padrão da seta para cima, ou control-R.
+
+Uma vez na TUI, pressione enter para executar imediatamente um comando, ou pressione tab para inseri-lo em seu shell para edição.
+
+Enquanto pesquisando na TUI, você pode ajustar o "modo de filtro" pressionando repetidamente ctrl-r. O Atuin pode filtrar por:
+
+1. Todos os hosts
+2. Apenas sua máquina local
+3. Apenas o diretório atual
+4. Apenas a sessão atual do shell
+
+## Ajuste de configuração comum
+
+Para um conjunto completo de valores de configuração, consulte a [página de referência de configuração](/configuration/config/)
+
+O arquivo de configuração padrão está localizado em `~/.config/atuin/config.toml`
+
+### Atalhos de teclado
+
+Temos uma página completa dedicada aos ajustes de atalhos de teclado, há uma série de opções aqui! Incluindo desabilitar a seta para cima se você não gostar.
+
+Leia mais [aqui](/configuration/key-binding/)
+
+### Enter para executar
+
+Você pode preferir que o Atuin sempre insira o comando selecionado para edição. Para configurar isso, defina
+
+```
+enter_accept = false
+```
+
+em seu arquivo de configuração.
+
+### Janela inline
+
+Se você achar a TUI em tela cheia opressora ou demais, você pode ajustá-la assim:
+
+```sh
+# altura da janela de pesquisa
+inline_height = 40
+```
+
+Você também pode preferir o modo de UI compacta
+
+```sh
+style = "compact"
+```
diff --git a/src/content/docs/pt-br/guide/dotfiles.mdx b/src/content/docs/pt-br/guide/dotfiles.mdx
new file mode 100644
index 0000000..391e1d1
--- /dev/null
+++ b/src/content/docs/pt-br/guide/dotfiles.mdx
@@ -0,0 +1,142 @@
+---
+title: Sincronizando dotfiles
+---
+
+Embora o Atuin tenha começado como uma ferramenta para sincronizar e pesquisar o histórico do shell, estamos
+construindo ferramentas para sincronizar dotfiles entre máquinas, e torná-los mais fáceis
+de trabalhar.
+
+No momento, suportamos o gerenciamento e a sincronização de aliases de shell e variáveis de ambiente - com mais
+novidades em breve.
+
+Os seguintes shells são suportados:
+
+- zsh
+- bash
+- fish
+- xonsh
+
+Nota: O Atuin gerencia sua configuração internamente, então, uma vez instalado, você
+não precisa mais editar seus arquivos de configuração manualmente.
+
+# Configuração necessária
+
+Uma vez que o Atuin esteja configurado e instalado, o seguinte é necessário no seu arquivo de configuração (`~/.config/atuin/config.toml`)
+
+```toml
+[dotfiles]
+enabled = true
+```
+
+Em uma versão posterior, isso será habilitado por padrão.
+
+
+:::caution
+Nota: Se você ainda não configurou a sincronização v2, por favor, adicione também para o mesmo arquivo de configuração.
+
+```toml
+[sync]
+records = true
+```
+:::
+
+# Uso
+
+## Aliases
+
+Depois de criar ou excluir um alias, lembre-se de reiniciar seu shell!
+
+### Criando um alias
+
+```sh
+atuin dotfiles alias set NOME 'COMANDO'
+```
+
+Por exemplo, para criar um alias `k` para ser `kubectl`
+
+
+```sh
+atuin dotfiles alias set k 'kubectl'
+```
+
+ou para criar um alias `ll` para ser `ls -lah`
+
+```sh
+atuin dotfiles alias set ll 'ls -lah'
+```
+
+### Excluindo um alias
+
+Excluir um alias é tão simples quanto:
+
+```sh
+atuin dotfiles alias delete NOME
+```
+
+Por exemplo, para excluir o alias `k` acima:
+
+```sh
+atuin dotfiles alias delete k
+```
+
+### Listando aliases
+
+You can list all aliases with:
+
+```sh
+atuin dotfiles alias list
+```
+
+## Variáveis de ambiente
+
+Depois de criar ou excluir uma variável de ambiente, lembre-se de reiniciar seu shell!
+
+### Criando uma variável
+
+```sh
+atuin dotfiles var set NOME 'valor'
+```
+
+Por exemplo, para definir `FOO` como `bar`
+
+
+```sh
+atuin dotfiles var set FOO 'bar'
+```
+
+As variáveis são exportadas por padrão, mas você pode criar uma variável de shell assim:
+
+```sh
+atuin dotfiles var set -n foo 'bar'
+```
+
+
+### Excluindo uma variável
+
+Excluir uma variável é tão simples quanto:
+
+```sh
+atuin dotfiles var delete NOME
+```
+
+Por exemplo, para excluir a variável `FOO` acima:
+
+```sh
+atuin dotfiles var delete FOO
+```
+
+### Listando variáveis
+
+You can list all vars with:
+
+```sh
+atuin dotfiles var list
+```
+
+## Sincronizando e fazendo backup de dotfiles
+Se você [configurou a sincronização](/guide/sync), então executar fará backup da sua configuração para o servidor e a sincronizará entre as máquinas.
+
+```sh
+atuin sync
+```
+
diff --git a/src/content/docs/pt-br/guide/getting-started.mdx b/src/content/docs/pt-br/guide/getting-started.mdx
new file mode 100644
index 0000000..cc646e1
--- /dev/null
+++ b/src/content/docs/pt-br/guide/getting-started.mdx
@@ -0,0 +1,56 @@
+---
+title: "Primeiros Passos"
+---
+
+import {Tabs, TabItem, LinkCard} from "@astrojs/starlight/components";
+
+O Atuin substitui seu histórico de shell existente por um banco de dados SQLite, e registra
+contexto adicional para seus comandos. Com esse contexto, o Atuin oferece uma pesquisa mais rápida
+e melhor do seu histórico de shell.
+
+Além disso, o Atuin (opcionalmente) sincroniza seu histórico de shell entre todas as suas
+máquinas. Totalmente criptografado de ponta a ponta, é claro.
+
+Você pode usar o servidor que eu hospedo, ou hospedar o seu próprio! Ou simplesmente não usar a sincronização.
+Como toda a sincronização de histórico é criptografada, eu não conseguiria acessar seus dados mesmo se quisesse.
+E eu **realmente** não quero.
+
+Se você tiver algum problema, por favor, abra um [problema](https://github.com/ellie/atuin/issues) ou entre em contato em nosso [Discord](https://discord.gg/Fq8bJSKPHh)!
+
+## Shells Suportados
+
+- zsh
+- bash
+- fish
+- nushell
+- xonsh
+
+# Início Rápido
+
+Por favor, tente ler este guia, mas se você estiver com pressa e quiser começar rapidamente:
+
+```
+bash <(curl --proto '=https' --tlsv1.2 -sSf https://setup.atuin.sh)
+
+atuin register -u -e
+atuin import auto
+atuin sync
+```
+
+Agora reinicie seu shell!
+
+Sempre que você pressionar ctrl-r ou seta para cima, você verá a interface de pesquisa do Atuin. Digite sua
+consulta, enter para executar. Se você quiser selecionar um comando sem executá-lo,
+pressione tab.
+
+Você pode querer configurar uma [janela inline](https://atuin.sh/docs/config/#inline_height), ou [desabilitar as vinculações da seta para cima](https://atuin.sh/docs/key-binding#disable-up-arrow).
+
+Nota: A sincronização e o registro acima são totalmente opcionais. Se você quiser usar o Atuin offline, você pode executar
+
+```sh
+bash <(curl --proto '=https' --tlsv1.2 -sSf https://setup.atuin.sh)
+
+atuin import auto
+```
+
+Seu histórico de shell será apenas local, não terá backup, e não será sincronizado entre os dispositivos.
diff --git a/src/content/docs/pt-br/guide/import.mdx b/src/content/docs/pt-br/guide/import.mdx
new file mode 100644
index 0000000..4832c55
--- /dev/null
+++ b/src/content/docs/pt-br/guide/import.mdx
@@ -0,0 +1,21 @@
+---
+title: Importar histórico existente
+---
+
+O Atuin usa um plugin de shell para garantir que capturemos o novo histórico de shell. Mas para
+o histórico mais antigo, você precisará importá-lo
+
+Isso importará o histórico para o seu shell atual:
+
+```sh
+atuin import auto
+```
+
+Alternativamente, você pode especificar o shell assim:
+
+```sh
+atuin import bash
+atuin import zsh # etc
+```
+
+Seu arquivo de histórico de shell antigo continuará sendo atualizado, independentemente do uso do Atuin.
diff --git a/src/content/docs/pt-br/guide/installation.mdx b/src/content/docs/pt-br/guide/installation.mdx
new file mode 100644
index 0000000..4ad6462
--- /dev/null
+++ b/src/content/docs/pt-br/guide/installation.mdx
@@ -0,0 +1,230 @@
+---
+title: Instalação
+---
+
+import {Aside, Tabs, TabItem, LinkCard} from "@astrojs/starlight/components";
+
+## Abordagem de instalação recomendada
+
+Vamos começar! Primeiro, você vai querer instalar o Atuin. A abordagem recomendada
+é usar o script de instalação, que lida automaticamente com a
+instalação do Atuin, incluindo os requisitos para o seu ambiente.
+
+
+Ele instalará um binário em `~/.atuin/bin`, e se você preferir fazer outra coisa
+então as etapas manuais abaixo oferecem muito mais flexibilidade.
+
+```shell
+curl --proto '=https' --tlsv1.2 -LsSf https://setup.atuin.sh | sh
+```
+
+
+
+## Instalação manual
+
+### Instalando o binário
+
+Se você não deseja usar o instalador, as etapas de instalação manual são as seguintes.
+
+
+
+ É melhor usar [rustup](https://rustup.rs/) para configurar uma toolchain Rust,
+ então você pode executar:
+
+ ```shell
+ cargo install atuin
+ ```
+
+
+ ```shell
+ brew install atuin
+ ```
+
+
+ O Atuin também está disponível no [MacPorts](https://ports.macports.org/port/atuin/)
+
+ ```shell
+ sudo port install atuin
+ ```
+
+
+ Este repositório é um flake, e pode ser instalado usando `nix profile`:
+
+ ```shell
+ nix profile install "github:atuinsh/atuin"
+ ```
+
+ O Atuin também está disponível no [nixpkgs](https://github.com/NixOS/nixpkgs):
+
+ ```shell
+ nix-env -f '' -iA atuin
+ ```
+
+
+ O Atuin está disponível no [repositório extra](https://archlinux.org/packages/extra/x86_64/atuin/) do Arch Linux:
+
+ ```shell
+ pacman -S atuin
+ ```
+
+
+ O Atuin está disponível no [repositório](https://github.com/void-linux/void-packages/tree/master/srcpkgs/atuin/) do Void Linux:
+
+ ```shell
+ sudo xbps-install atuin
+ ```
+
+
+ O Atuin está disponível no repositório de pacotes do Termux:
+
+ ```shell
+ pkg install atuin
+ ```
+
+
+ O Atuin pode ser instalado diretamente de github-releases:
+
+ ```shell
+ # linha 1: `atuin` binário como comando, de github release, procurar apenas arquivos .tar.gz, usar o arquivo `atuin` do arquivo extraído
+ # linha 2: configurar no clone(criar init.zsh, completion)
+ # linha 3: comportamento de pull igual ao clone, source init.zsh
+ zinit ice as"command" from"gh-r" bpick"atuin-*.tar.gz" mv"atuin*/atuin -> atuin" \
+ atclone"./atuin init zsh > init.zsh; ./atuin gen-completions --shell zsh > _atuin" \
+ atpull"%atclone" src"init.zsh"
+ zinit light atuinsh/atuin
+ ```
+
+
+ O Atuin é construído na versão estável mais recente do Rust, e não fazemos
+ promessas em relação a versões mais antigas. Recomendamos usar [rustup](https://rustup.rs/).
+
+ ```shell
+ git clone https://github.com/atuinsh/atuin.git
+ cd atuin/crates/atuin
+ cargo install --path .
+ ```
+
+
+
+
+
+---
+
+### Instalando o plugin do shell
+
+Uma vez que o binário é instalado, o plugin do shell requer instalação.
+Se você usar o script de instalação, tudo isso deve ser feito para você!
+Após a instalação, lembre-se de reiniciar seu shell.
+
+
+
+ ```shell
+ echo 'eval "$(atuin init zsh)"' >> ~/.zshrc
+ ```
+
+
+
+ ```shell
+ # se você _apenas_ quiser instalar o plugin do shell, faça isso; caso contrário, veja acima para uma "tudo via zinit" solução
+ zinit load atuinsh/atuin
+ ```
+
+
+ ```shell
+ antigen bundle atuinsh/atuin@main
+ ```
+
+
+
+
+
+
+ O Atuin funciona melhor no bash ao usar [ble.sh](https://github.com/akinomyoga/ble.sh) >= 0.4.
+
+ Com ble.sh (>= 0.4) instalado e carregado em `~/.bashrc`, basta adicionar atuin ao seu `~/.bashrc`
+
+ ```shell
+ echo 'eval "$(atuin init bash)"' >> ~/.bashrc
+ ```
+
+
+ [Bash-preexec](https://github.com/rcaloras/bash-preexec) também pode ser usado, mas você pode experimentar
+ alguns pequenos problemas com a duração registrada e o status de saída de alguns comandos.
+
+
+
+ Para usar o bash-preexec, baixe e inicialize-o
+
+ ```shell
+ curl https://raw.githubusercontent.com/rcaloras/bash-preexec/master/bash-preexec.sh -o ~/.bash-preexec.sh
+ echo '[[ -f ~/.bash-preexec.sh ]] && source ~/.bash-preexec.sh' >> ~/.bashrc
+ ```
+
+ Em seguida, configure o Atuin
+
+ ```shell
+ echo 'eval "$(atuin init bash)"' >> ~/.bashrc
+ ```
+
+
+
+
+ Adicione
+
+ ```shell
+ atuin init fish | source
+ ```
+
+ ao seu bloco `is-interactive` no seu `~/.config/fish/config.fish` arquivo
+
+
+ Execute no *Nushell*:
+
+ ```shell
+ mkdir ~/.local/share/atuin/
+ atuin init nu | save ~/.local/share/atuin/init.nu
+ ```
+
+ Adicione ao `config.nu`:
+
+ ```shell
+ source ~/.local/share/atuin/init.nu
+ ```
+
+
+ Adicione
+ ```shell
+ execx($(atuin init xonsh))
+ ```
+ ao final do seu `~/.xonshrc`
+
+
+
+## Atualização
+
+Execute `atuin update`, e se esse comando não estiver disponível, execute o script de instalação novamente.
+
+Se você usou um gerenciador de pacotes para instalar o Atuin, então você também deve usar seu gerenciador de pacotes para atualizar o Atuin.
+
+## Desinstalar
+
+Se você quiser desinstalar o Atuin, por favor, verifique [esta página](https://docs.atuin.sh/uninstall/).
diff --git a/src/content/docs/pt-br/guide/sync.mdx b/src/content/docs/pt-br/guide/sync.mdx
new file mode 100644
index 0000000..90262c8
--- /dev/null
+++ b/src/content/docs/pt-br/guide/sync.mdx
@@ -0,0 +1,80 @@
+---
+title: Configurando a Sincronização
+---
+
+Neste ponto, você tem o Atuin armazenando e pesquisando seu histórico de shell! Mas ele
+ainda não está sincronizando. Para fazer isso, você precisará se registrar com o servidor de sincronização.
+Todo o seu histórico é totalmente criptografado de ponta a ponta, então não há
+riscos de o servidor espionar você.
+
+Se você não tem uma conta, por favor, [registre-se](#register). Se você já se registrou,
+prossiga para [login](#login).
+
+**Nota:** Você primeiro precisa configurar seu `sync_address` se quiser usar um [servidor auto-hospedado](/self-hosting/server-setup/).
+
+## Registrar
+
+```sh
+atuin register -u -e
+```
+
+Após o registro, o Atuin gerará uma chave de criptografia para você e a armazenará
+localmente. Isso é necessário para fazer login em outras máquinas, e pode ser visto com
+
+```sh
+atuin key
+```
+
+Por favor, **nunca** compartilhe esta chave com ninguém! Os desenvolvedores do Atuin nunca
+pedirão sua chave, sua senha, ou o conteúdo do seu diretório Atuin.
+
+Se você perder sua chave, não podemos fazer nada para ajudá-lo. Recomendamos que você a armazene
+em um local seguro, como em um gerenciador de senhas.
+
+## Primeira sincronização
+Por padrão, o Atuin sincronizará seu histórico uma vez por hora. Isso pode ser
+[configurado](/configuration/config/#sync_frequency).
+
+Para executar uma sincronização manualmente, por favor, execute
+
+```sh
+atuin sync
+```
+
+O Atuin tenta ser inteligente com uma sincronização, e não desperdiçar transferência de dados. No entanto, se
+você estiver vendo alguns dados ausentes, por favor, tente executar
+
+```sh
+atuin sync -f
+```
+
+Isso aciona uma sincronização completa, que pode levar mais tempo, pois trabalha com dados históricos.
+
+## Login
+
+Quando logado em apenas uma máquina, a sincronização do Atuin opera como um backup. Isso é
+bem útil por si só, mas sincronizar várias máquinas é onde a mágica
+acontece.
+
+Primeiro, certifique-se de estar [registrado no servidor de sincronização](#register) e faça uma
+anotação de sua chave. Você pode ver isso com `atuin key`.
+
+Então, instale o Atuin em uma nova máquina. Uma vez instalado, faça login com
+
+```sh
+atuin login -u
+```
+
+Você será solicitado a informar sua senha, e sua chave.
+
+A sincronização acontecerá automaticamente em segundo plano, mas você pode querer executá-la manualmente com
+
+```sh
+atuin sync
+```
+
+Ou, se você vir dados ausentes, force uma sincronização completa com:
+
+```sh
+atuin sync -f
+```
diff --git a/src/content/docs/pt-br/guide/theming.mdx b/src/content/docs/pt-br/guide/theming.mdx
new file mode 100644
index 0000000..4eb3b89
--- /dev/null
+++ b/src/content/docs/pt-br/guide/theming.mdx
@@ -0,0 +1,104 @@
+---
+title: Temas
+---
+
+Disponível no Atuin >= 18.4
+
+Para personalização da interface do terminal, o Atuin suporta temas de cores definidos pelo usuário e temas embutidos.
+
+O Atuin vem com apenas alguns temas alternativos embutidos, mas mais podem ser adicionados via arquivos TOML.
+
+# Configuração necessária
+
+O seguinte é necessário no seu arquivo de configuração (`~/.config/atuin/config.toml`)
+
+```
+[theme]
+name = "NOMEDOTEMA"
+```
+
+Onde `NOMEDOTEMA` é um tema conhecido. Os seguintes temas estão disponíveis prontos para uso:
+
+* tema padrão (pode ser explicitamente referenciado com um nome vazio `""`)
+* tema `autumn`
+* tema `marine`
+
+Estes estão presentes para garantir que usuários e desenvolvedores possam experimentar temas, mas, em geral, você precisará baixar temas ou criar os seus próprios.
+
+Se você estiver escrevendo seus próprios temas, pode adicionar a seguinte linha para obter saída adicional:
+
+```
+debug = true
+```
+
+para o mesmo bloco de configuração. Isso imprimirá quaisquer nomes de cores que não puderem ser analisados do tema solicitado.
+
+Uma configuração opcional final está disponível:
+
+```
+max_depth: 10
+```
+
+que define o número máximo de níveis de pais de tema a serem percorridos. Isso não deve precisar ser adicionado explicitamente em uso normal.
+
+# Uso
+
+## Estrutura do tema
+
+Temas são mapeamentos de *Significados*, descrevendo as intenções do desenvolvedor, para (atualmente) cores. No futuro, isso pode ser expandido para permitir um suporte de estilo mais rico.
+
+*Significados* são de um enum com os seguintes valores:
+
+* `AlertInfo`: alertando o usuário em um nível INFO
+* `AlertWarn`: alertando o usuário em um nível WARN
+* `AlertError`: alertando o usuário em um nível ERROR
+* `Annotation`: texto de suporte menos crítico
+* `Base`: cor de primeiro plano padrão
+* `Guidance`: instruindo o usuário como ajuda ou contexto
+* `Important`: chamando a atenção do usuário para informações
+* `Title`: titulando uma seção ou visualização
+
+Estes podem se expandir ao longo do tempo à medida que são adicionados à base de código do Atuin, mas o Atuin deve ter fallbacks adicionados para quaisquer novos *Significados* para que, quer os temas se limitem à lista atual ou aproveitem novos *Significados* no futuro, eles continuem funcionando de forma sensata.
+
+**Nota para colaboradores do Atuin**: por favor, identifiquem e, quando apropriado durante seus próprios PRs, estendam o enum Meanings, se necessário (junto com um Meaning de fallback!).
+
+## Criação de tema
+
+Quando um nome de tema é lido, mas ainda não carregado, o Atuin o procurará na pasta
+`~/.config/atuin/themes/` a menos que seja substituído pela variável de ambiente `ATUIN_THEME_DIR`. Ele tentará abrir um arquivo com o nome `NOMEDOTEMA.toml` e lê-lo como um
+mapeamento de *Significados* para cores.
+
+As cores podem ser especificadas como nomes da crate [palette](https://ogeon.github.io/docs/palette/master/palette/named/index.html)
+crate em minúsculas, ou como códigos hexadecimais de seis caracteres, prefixados com `#`. Por exemplo,
+os seguintes são nomes de cores válidos:
+
+* `#ff0088`
+* `teal`
+* `powderblue`
+
+Um arquivo de tema, digamos `meu-tema.toml`, pode então ser construído, como:
+
+```toml
+[theme]
+name = "meu-tema"
+parent = "autumn"
+
+[colors]
+AlertInfo = "green"
+Guidance = "green"
+
+```
+
+onde nem todos os *Significados* precisam ser explicitamente definidos. Se estiverem ausentes,
+então a cor será escolhida do tema pai, se um for definido, ou se essa
+chave estiver faltando no bloco `theme`, do tema padrão.
+
+Este arquivo de tema deve ser movido para `~/.config/atuin/themes/meu-tema.toml` e o
+seguinte adicionado a `~/.config/atuin/config.toml`:
+
+```
+[theme]
+name = "meu-tema"
+```
+
+Na próxima vez que você executar o Atuin, seu tema deverá ser aplicado.
\ No newline at end of file
diff --git a/src/content/docs/pt-br/index.mdx b/src/content/docs/pt-br/index.mdx
new file mode 100644
index 0000000..123d196
--- /dev/null
+++ b/src/content/docs/pt-br/index.mdx
@@ -0,0 +1,54 @@
+---
+title: Primeiros passos
+---
+
+import {Tabs, TabItem, LinkCard} from "@astrojs/starlight/components";
+
+O Atuin substitui seu histórico de shell existente com um banco de dados SQLite, e registra
+contexto adicional para seus comandos. Com esse contexto, o Atuin oferece uma pesquisa mais rápida
+e melhor do seu histórico de shell.
+
+Além disso, o Atuin (opcionalmente) sincroniza seu histórico de shell entre todas as suas
+máquinas. Totalmente criptografado de ponta a ponta, é claro.
+
+Você pode usar o servidor que eu hospedo, ou hospedar o seu próprio! Ou simplesmente não usar a sincronização.
+Como toda a sincronização de histórico é criptografada, eu não conseguiria acessar seus dados mesmo se quisesse.
+E eu **realmente** não quero.
+
+Se você tiver algum problema, por favor, abra um tópico no [fórum](https://forum.atuin.sh)
+
+Alternativamente, entre em contato em nosso [Discord](https://discord.gg/Fq8bJSKPHh) ou abra um [problema](https://github.com/atuinsh/atuin/issues)
+
+#### Shells Suportados
+
+- zsh
+- bash
+- fish
+- nushell
+- xonsh
+
+## Início Rápido
+
+Por favor, tente ler este guia, mas se você estiver com pressa e quiser começar rapidamente:
+
+```bash
+bash <(curl --proto '=https' --tlsv1.2 -sSf https://setup.atuin.sh)
+
+atuin register -u -e
+atuin import auto
+atuin sync
+```
+
+Agora reinicie seu shell!
+
+Sempre que você pressionar ctrl-r ou seta para cima, você verá a interface de pesquisa do Atuin. Digite sua
+consulta, enter para executar. Se você quiser selecionar um comando sem executá-lo,
+pressione tab.
+
+Você pode querer configurar uma [janela inline](https://docs.atuin.sh/configuration/config/#inline_height), ou [desabilitar as vinculações da seta para cima](https://docs.atuin.sh/configuration/key-binding/#disable-up-arrow)
+
+
\ No newline at end of file
diff --git a/src/content/docs/pt-br/integrations.mdx b/src/content/docs/pt-br/integrations.mdx
new file mode 100644
index 0000000..7db6efc
--- /dev/null
+++ b/src/content/docs/pt-br/integrations.mdx
@@ -0,0 +1,24 @@
+---
+title: Integrações
+---
+
+## zsh-autosuggestions
+
+O Atuin se adiciona automaticamente como uma [estratégia de autosugestão](https://github.com/zsh-users/zsh-autosuggestions#suggestion-strategy).
+
+Se você quiser substituir isso, adicione sua própria configuração após "$(atuin init zsh)" no seu zshrc.
+
+## ble.sh auto-complete (Bash)
+
+Se o ble.sh estiver disponível quando a integração do Atuin for carregada no Bash, o Atuin define e registra automaticamente uma fonte de autocompletar para o recurso de autosugestão do ble.sh.
+
+Se você quiser alterar o comportamento, sobrescreva a função de shell `ble/complete/auto-complete/source:atuin-history` após `eval "$(atuin init bash)"` no seu `.bashrc`.
+
+Se você não quiser a fonte de autocompletar do Atuin, adicione a seguinte configuração após `eval "$(atuin init bash)"` no seu `.bashrc`:
+
+```shell
+# bashrc (depois de eval "$(atuin init bash)")
+
+ble/util/import/eval-after-load core-complete '\
+ ble/array#remove _ble_complete_auto_source atuin-history'
+```
diff --git a/src/content/docs/pt-br/known-issues.mdx b/src/content/docs/pt-br/known-issues.mdx
new file mode 100644
index 0000000..130ad91
--- /dev/null
+++ b/src/content/docs/pt-br/known-issues.mdx
@@ -0,0 +1,6 @@
+---
+title: Problemas Conhecidos
+---
+
+- SQLite tem alguns problemas com ZFS em certas configurações. Como o Atuin usa SQLite, isso pode fazer com que seu shell fique lento! Temos um [problema](https://github.com/atuinsh/atuin/issues/952) para rastrear, com algumas soluções alternativas.
+- SQLite também não costuma gostar de sistemas de arquivos de rede (por exemplo, NFS).
\ No newline at end of file
diff --git a/src/content/docs/pt-br/reference/daemon.mdx b/src/content/docs/pt-br/reference/daemon.mdx
new file mode 100644
index 0000000..b1374b0
--- /dev/null
+++ b/src/content/docs/pt-br/reference/daemon.mdx
@@ -0,0 +1,31 @@
+---
+title: daemon
+---
+
+# `atuin daemon`
+_Isso é experimental!_
+
+O daemon do Atuin é um daemon em segundo plano projetado para
+
+1. Acelerar as gravações no banco de dados
+2. Permitir que as máquinas sincronizem quando não estiverem em uso, para que estejam prontas para uso imediatamente
+3. Realizar manutenção em segundo plano
+
+Também pode contornar problemas de desempenho com ZFS/SQLite.
+
+Atualmente é experimental, mas é seguro usar com um pouco de configuração.
+
+## Para habilitar
+
+Adicione o seguinte ao final do seu arquivo de configuração do Atuin
+
+```toml
+[daemon]
+enabled = true
+```
+
+Em seguida, execute `atuin daemon`. Isso pode fazer sentido em uma sessão tmux, unidade systemd, etc. Assim que estiver pronto para uso mais amplo, nós cuidaremos dessa configuração para você.
+
+## Configuração extra
+
+Veja a [seção de configuração](/configuration/config/#daemon)
\ No newline at end of file
diff --git a/src/content/docs/pt-br/reference/doctor.mdx b/src/content/docs/pt-br/reference/doctor.mdx
new file mode 100644
index 0000000..ea8b7f0
--- /dev/null
+++ b/src/content/docs/pt-br/reference/doctor.mdx
@@ -0,0 +1,40 @@
+---
+title: doctor
+---
+
+# `atuin doctor`
+
+Este comando tentará diagnosticar problemas comuns. Ele também despejará informações sobre o seu sistema.
+
+Por favor, inclua sua saída com problemas e solicitações de suporte.
+
+Exemplo de saída:
+
+```sh
+Atuin Doctor
+Verificando diagnósticos
+
+
+Por favor, inclua a saída abaixo com quaisquer relatórios de bugs ou problemas
+
+atuin:
+ versão: 18.1.0
+ sincronização:
+ nuvem: true
+ registros: true
+ auto_sync: true
+ ultima_sincronização: 2024-03-05 14:54:48.447677 +00:00:00
+shell:
+ nome: zsh
+ plugins:
+ - atuin
+sistema:
+ os: Darwin
+ arch: arm64
+ versão: 14.4
+ discos:
+ - nome: Macintosh HD
+ sistema_de_arquivos: apfs
+ - nome: Macintosh HD
+ sistema_de_arquivos: apfs
+```
diff --git a/src/content/docs/pt-br/reference/gen-completions.mdx b/src/content/docs/pt-br/reference/gen-completions.mdx
new file mode 100644
index 0000000..96727c5
--- /dev/null
+++ b/src/content/docs/pt-br/reference/gen-completions.mdx
@@ -0,0 +1,22 @@
+---
+title: gerar-completions
+---
+
+[Completions de shell](https://en.wikipedia.org/wiki/Command-line_completion) para o Atuin podem ser geradas especificando o diretório de saída e o shell desejado via subcomando `gen-completions`.
+
+```
+$ atuin gen-completions --shell bash --out-dir $HOME
+
+Completions de shell para BASH são geradas em "/home/user"
+```
+
+Os valores possíveis para o argumento `--shell` são os seguintes:
+
+- `bash`
+- `fish`
+- `zsh`
+- `nushell`
+- `powershell`
+- `elvish`
+
+Além disso, veja os [shells suportados](https://github.com/atuinsh/atuin#supported-shells).
\ No newline at end of file
diff --git a/src/content/docs/pt-br/reference/import.mdx b/src/content/docs/pt-br/reference/import.mdx
new file mode 100644
index 0000000..7dd036b
--- /dev/null
+++ b/src/content/docs/pt-br/reference/import.mdx
@@ -0,0 +1,85 @@
+---
+title: importar
+---
+
+## `atuin import`
+
+O Atuin pode importar seu histórico do seu arquivo de histórico "antigo".
+
+`atuin import auto` tentará descobrir seu shell (via $SHELL) e executar o importador correto.
+
+Infelizmente, esses arquivos mais antigos não armazenam tantas informações quanto o Atuin, então nem todos os recursos estão disponíveis com dados importados.
+
+Exceto quando indicado de outra forma, você pode definir a variável de ambiente `HISTFILE` para controlar qual arquivo é lido, caso contrário, cada importador tentará alguns nomes de arquivo padrão.
+
+```sh
+HISTFILE=/path/to/history/file atuin import zsh
+```
+
+Observe que para shells como o Xonsh, que armazenam o histórico em muitos arquivos em vez de um único arquivo, `$HISTFILE` deve ser definido para o diretório onde esses arquivos residem.
+
+Para formatos que não armazenam carimbos de data/hora, os carimbos de data/hora serão gerados a partir do tempo atual mais 1ms para cada comando adicional no histórico.
+
+A maioria dos importadores descartará comandos encontrados que tenham UTF-8 inválido.
+
+## bash
+
+Isso lerá o histórico de `$HISTFILE` ou `$HOME/.bash_history`.
+
+Avisos serão emitidos se os carimbos de data/hora forem encontrados fora de ordem, o que também pode acontecer quando um arquivo de histórico começa sem carimbos de data/hora, mas entradas posteriores os incluem.
+
+## fish
+
+O fish suporta várias sessões de histórico, então o importador usará como padrão a sessão `fish`, a menos que a variável de ambiente `fish_history` seja definida. O arquivo a ser lido será `{session}_history` em `$XDG_DATA_HOME/fish/` (ou `$HOME/.local/share/fish`).
+
+Nem todos os dados no histórico do fish são preservados, alguns dados sobre nomes de arquivos usados para cada comando não são usados pelo Atuin, então são descartados.
+
+## nu-hist-db
+
+Este importador lê do banco de dados de histórico SQLite do Nushell, que é armazenado em
+`$XDG_CONFIG_HOME/nushell/history.sqlite3` ou `$HOME/.config/nushell/history.sqlite3`.
+Não há como definir o nome do arquivo de outra forma.
+
+## nu
+
+Este importador lê do formato de histórico de texto do Nushell, que é armazenado em
+`$XDG_CONFIG_HOME/nushell/history.txt` ou `$HOME/.config/nushell/history.txt`.
+Não há como definir o nome do arquivo de outra forma.
+
+## resh
+
+O importador [RESH](https://github.com/curusarn/resh) lerá de `$HISTFILE` ou `$HOME/.resh_history.json`.
+
+## xonsh
+
+O importador Xonsh lerá de todos os arquivos JSON que encontrar no diretório de histórico do Xonsh. A localização do diretório é determinada da seguinte forma:
+* Se `$HISTFILE` estiver definido, seu valor é usado como o diretório de histórico.
+* Se `$XONSH_DATA_DIR` estiver definido (como normalmente estará se o importador for invocado
+ de dentro do Xonsh), `$XONSH_DATA_DIR/history_json` é usado.
+* Se `$XDG_DATA_HOME` estiver definido, `$XDG_DATA_HOME/xonsh/history_json` é usado.
+* Caso contrário, `$HOME/.local/share/xonsh/history_json` é usado.
+
+Nem todos os dados presentes nos arquivos JSON de histórico do Xonsh são usados pelo Atuin. O Xonsh armazena as
+variáveis de ambiente presentes quando cada sessão foi iniciada, mas esses dados são
+descartados pelo Atuin. O Xonsh opcionalmente armazena a saída de cada comando; se presente
+este dado também é ignorado pelo Atuin.
+
+## xonsh_sqlite
+
+O importador Xonsh SQLite lerá do arquivo de histórico SQLite do Xonsh. A localização do histórico
+do arquivo é determinada pelo mesmo processo do importador Xonsh regular,
+mas com `history_json` substituído por `xonsh-history.sqlite`.
+
+O backend SQLite do Xonsh não armazena variáveis de ambiente, mas como o backend JSON
+ele pode opcionalmente armazenar a saída de cada comando. Assim como no backend JSON,
+se presente, esses dados serão ignorados pelo Atuin.
+
+## zsh_histdb
+
+Isso lerá o arquivo SQLite do Zsh histdb de `$HISTDB_FILE` ou
+`$HOME/.histdb/zsh-history.db`.
+
+## zsh
+
+Isso lerá o histórico do Zsh de `$HISTFILE` ou `$HOME/.zhistory`
+ou `$HOME/.zsh_history` no formato simples ou estendido.
diff --git a/src/content/docs/pt-br/reference/info.mdx b/src/content/docs/pt-br/reference/info.mdx
new file mode 100644
index 0000000..b3ac8de
--- /dev/null
+++ b/src/content/docs/pt-br/reference/info.mdx
@@ -0,0 +1,24 @@
+---
+title: informações
+---
+
+# `atuin info`
+
+Este comando mostra a localização dos arquivos de configuração no seu sistema
+
+Exemplo de saída:
+
+```sh
+Arquivos de configuração:
+configuração do cliente: "/Users/ellie/.config/atuin/config.toml"
+configuração do servidor: "/Users/ellie/.config/atuin/server.toml"
+caminho do db do cliente: "/Users/ellie/.local/share/atuin/history.db"
+caminho da chave: "/Users/ellie/.local/share/atuin/key"
+caminho da sessão: "/Users/ellie/.local/share/atuin/session"
+
+Variáveis de ambiente:
+ATUIN_CONFIG_DIR = "None"
+
+Informações da versão:
+versão: 18.1.0
+```
diff --git a/src/content/docs/pt-br/reference/list.mdx b/src/content/docs/pt-br/reference/list.mdx
new file mode 100644
index 0000000..975a517
--- /dev/null
+++ b/src/content/docs/pt-br/reference/list.mdx
@@ -0,0 +1,33 @@
+---
+title: listar histórico
+---
+
+# `atuin history list`
+
+
+| Argumento | Descrição |
+|------------------|-------------------------------------------------------------------------------|
+| `--cwd`/`-c` | Listar histórico apenas para o diretório atual (padrão: todos os diretórios) |
+| `--session`/`-s` | Listar histórico apenas para a sessão atual (padrão: falso) |
+| `--human` | Usar formatação legível para o carimbo de data/hora e duração (padrão: falso) |
+| `--cmd-only` | Mostrar apenas o texto do comando (padrão: falso) |
+| `--reverse` | Inverter a ordem da saída (padrão: falso) |
+| `--format` | Especificar a formatação de um comando (veja abaixo) |
+| `--print0` | Terminar a saída com um nulo, para melhor suporte a várias linhas |
+
+
+## Formato
+
+Personalize a saída de `history list`
+
+Exemplo
+
+```sh
+atuin history list --format "{time} - {duration} - {command}"
+```
+
+Variáveis suportadas
+
+```sh
+{command}, {directory}, {duration}, {user}, {host} e {time}
+```
diff --git a/src/content/docs/pt-br/reference/prune.mdx b/src/content/docs/pt-br/reference/prune.mdx
new file mode 100644
index 0000000..26e7cf6
--- /dev/null
+++ b/src/content/docs/pt-br/reference/prune.mdx
@@ -0,0 +1,13 @@
+---
+title: limpar histórico
+---
+
+# `atuin history prune`
+
+Este comando exclui entradas de histórico que correspondem ao parâmetro de configuração [history_filter](/configuration/config/#history_filter).
+
+Ele pode ser executado com `--dry-run` primeiro para listar as entradas de histórico que serão removidas.
+
+| Argumento | Descrição |
+|------------------|--------------------------------------------------------------------|
+| `--dry-run`/`-n` | Lista as linhas de histórico correspondentes sem realizar a exclusão real |
\ No newline at end of file
diff --git a/src/content/docs/pt-br/reference/search.md b/src/content/docs/pt-br/reference/search.md
new file mode 100644
index 0000000..30c3c67
--- /dev/null
+++ b/src/content/docs/pt-br/reference/search.md
@@ -0,0 +1,67 @@
+---
+title: pesquisar
+---
+
+Atuin search supports wildcards, with either the `*` or `%` character. Por
+padrão, uma pesquisa de prefixo é realizada (ou seja, todas as consultas são automaticamente
+anexadas com um curinga).
+
+| Argumento | Descrição |
+| -------------------- | ----------------------------------------------------------------------------- |
+| `--cwd`/`-c` | O diretório para listar o histórico (padrão: todos os diretórios) |
+| `--exclude-cwd` | Não incluir comandos que foram executados neste diretório (padrão: nenhum) |
+| `--exit`/`-e` | Filtrar por código de saída (padrão: nenhum) |
+| `--exclude-exit` | Não incluir comandos que saíram com este valor (padrão: nenhum) |
+| `--before` | Incluir apenas comandos executados antes deste horário (padrão: nenhum) |
+| `--after` | Incluir apenas comandos executados após este horário (padrão: nenhum) |
+| `--interactive`/`-i` | Abrir a interface de pesquisa interativa (padrão: falso) |
+| `--human` | Usar formatação legível para o carimbo de data/hora e duração (padrão: falso) |
+| `--limit` | Limitar o número de resultados (padrão: nenhum) |
+| `--offset` | Deslocamento do início dos resultados (padrão: nenhum) |
+| `--delete` | Excluir histórico que corresponda a esta consulta |
+| `--delete-it-all` | Excluir todo o histórico do shell |
+| `--reverse` | Inverter a ordem dos resultados da pesquisa, os mais antigos primeiro |
+| `--format`/`-f` | Variáveis disponíveis: {command}, {directory}, {duration}, {user}, {host}, {time}, {exit} e {relativetime}. Exemplo: --format "{time} - [{duration}] - {directory}$ {command}" |
+| `--inline-height` | Definir o número máximo de linhas que a interface do Atuin deve ocupar |
+| `--help`/`-h` | Imprimir ajuda |
+
+## `atuin search -i`
+
+A TUI de pesquisa interativa do Atuin permite que você pesquise de forma difusa em seu histórico.
+
+
+
+Você pode reproduzir o `n-ésimo` comando com `alt + #` onde `#` é o número da linha do comando que você gostaria de reproduzir.
+
+Nota: Isso ainda não é suportado no macOS.
+
+## Exemplos
+
+```bash
+# Abrir a TUI de pesquisa interativa
+atuin search -i
+
+# Abrir a TUI de pesquisa interativa pré-carregada com uma consulta
+atuin search -i atuin
+
+# Pesquisar todos os comandos, começando com cargo, que saíram com sucesso
+atuin search --exit 0 cargo
+
+# Pesquisar todos os comandos que falharam, do diretório atual, e foram executados antes de 1º de abril de 2021
+atuin search --exclude-exit 0 --before 01/04/2021 --cwd .
+
+# Pesquisar todos os comandos, começando com cargo, que saíram com sucesso, e foram executados depois de ontem às 15h
+atuin search --exit 0 --after "yesterday 3pm" cargo
+
+# Excluir todos os comandos, começando com cargo, que saíram com sucesso, e foram executados depois de ontem às 15h
+atuin search --delete --exit 0 --after "yesterday 3pm" cargo
+
+# Pesquisar um comando começando com cargo, retornar exatamente um resultado.
+atuin search --limit 1 cargo
+
+# Pesquisar um único resultado para um comando começando com cargo, pulando (deslocando) um resultado
+atuin search --offset 1 --limit 1 cargo
+
+# Encontrar o comando cargo mais antigo
+atuin search --limit 1 --reverse cargo
+```
diff --git a/src/content/docs/pt-br/reference/stats.mdx b/src/content/docs/pt-br/reference/stats.mdx
new file mode 100644
index 0000000..feebd3c
--- /dev/null
+++ b/src/content/docs/pt-br/reference/stats.mdx
@@ -0,0 +1,47 @@
+---
+title: estatísticas
+---
+
+O Atuin também pode calcular estatísticas com base no seu histórico - isso é atualmente um pouco básico, mas mais recursos virão.
+
+## Estatísticas de 1 dia
+
+Você fornece o ponto de partida, e o Atuin calcula as estatísticas para 24h a partir desse ponto. A análise de data é fornecida por `interim`, que suporta diferentes formatos para datas completas ou relativas. Certos formatos dependem da opção de dialeto em sua [configuração](/configuration/config#dialect) para diferenciar dia de mês. Consulte [a documentação do módulo](https://docs.rs/interim/0.1.0/interim/#supported-formats) para mais detalhes sobre os formatos de data suportados.
+
+```sh
+$ atuin stats last friday
+
++---------------------+------------+
+| Estatística | Valor |
++---------------------+------------+
+| Comando mais usado | git status |
++---------------------+------------+
+| Comandos executados | 450 |
++---------------------+------------+
+| Comandos únicos executados | 213 |
++---------------------+------------+
+
+# Mais alguns exemplos:
+$ atuin stats 2018-04-01
+$ atuin stats April 1
+$ atuin stats 01/04/22
+$ atuin stats last thursday 3pm # entre a última quinta-feira às 15:00 e a sexta-feira seguinte às 15:00
+```
+
+## Estatísticas de histórico completo
+
+```sh
+$ atuin stats
+# ou
+$ atuin stats all
+
++---------------------+-------+
+| Estatística | Valor |
++---------------------+-------+
+| Comando mais usado | ls |
++---------------------+-------+
+| Comandos executados | 8190 |
++---------------------+-------+
+| Comandos únicos executados | 2996 |
++---------------------+-------+
+```
diff --git a/src/content/docs/pt-br/reference/sync.mdx b/src/content/docs/pt-br/reference/sync.mdx
new file mode 100644
index 0000000..5a14f5b
--- /dev/null
+++ b/src/content/docs/pt-br/reference/sync.mdx
@@ -0,0 +1,67 @@
+---
+title: sincronizar
+---
+
+Atuin pode fazer backup do seu histórico para um servidor e usá-lo para garantir que várias máquinas tenham o mesmo histórico de shell. Tudo isso é criptografado de ponta a ponta, então o operador do servidor _nunca_ poderá ver seus dados!
+
+Qualquer um pode hospedar um servidor (tente `atuin server start`, mais documentos a seguir), mas eu hospedo um em https://api.atuin.sh. Este é o endereço do servidor padrão, que pode ser alterado na [configuração](/configuration/config#sync_address). Novamente, eu _não_ consigo ver seus dados e não quero.
+
+## Frequência de sincronização
+
+A sincronização acontecerá automaticamente, a menos que configurado de outra forma. A frequência de sincronização é configurável em [configuração](/configuration/config#sync_frequency).
+
+## Sincronizar
+
+Você pode acionar manualmente uma sincronização com `atuin sync`
+
+## Registrar
+
+Registre-se para uma conta de sincronização com
+
+```sh
+atuin register -u -e -p
+```
+
+Se você não quiser que sua senha seja incluída no histórico do shell, você pode omitir a flag de senha e será solicitado a fornecê-la via stdin.
+
+Os nomes de usuário devem ser únicos e conter apenas caracteres alfanuméricos ou hífens, e os e-mails devem ser usados apenas para notificações importantes (violações de segurança, alterações no serviço, etc.).
+
+Após o sucesso, você também está logado :) A sincronização deve acontecer automaticamente a partir daqui!
+
+## Excluir
+
+Você pode excluir sua conta de sincronização com
+
+```sh
+atuin account delete
+```
+
+Isso removerá sua conta e todo o histórico sincronizado do servidor. Os dados locais não serão tocados!
+
+## Chave
+
+Como todos os seus dados são criptografados, o Atuin gera uma chave para você. Ela é armazenada no diretório de dados do Atuin (`~/.local/share/atuin` no Linux).
+
+Você também pode obtê-la com
+
+```sh
+atuin key
+```
+
+Nunca compartilhe isso com ninguém!
+
+## Login
+
+Se você quiser fazer login em uma nova máquina, você precisará de sua chave de criptografia (`atuin key`).
+
+```sh
+atuin login -u -p -k
+```
+
+Se você não quiser que sua senha seja incluída no histórico do shell, você pode omitir a flag de senha e será solicitado a fornecê-la via stdin.
+
+## Logout
+
+```sh
+atuin logout
+```
diff --git a/src/content/docs/pt-br/self-hosting/docker.mdx b/src/content/docs/pt-br/self-hosting/docker.mdx
new file mode 100644
index 0000000..83ee30c
--- /dev/null
+++ b/src/content/docs/pt-br/self-hosting/docker.mdx
@@ -0,0 +1,132 @@
+---
+title: Docker
+---
+
+:::caution
+Se você está auto-hospedando, sugerimos fortemente que você se atenha às [versões marcadas](https://github.com/atuinsh/atuin/releases), e não siga `main` ou `latest`
+
+Siga os lançamentos do GitHub e leia as notas de cada lançamento. Na maioria das vezes, as atualizações podem ocorrer sem qualquer intervenção manual.
+
+Não podemos garantir que todas as atualizações serão aplicadas de forma limpa, e algumas podem exigir algumas etapas extras.
+:::
+
+Existe uma imagem docker fornecida para facilitar a implantação de um servidor como um contêiner. A "ÚLTIMA VERSÃO MARCADA" pode ser encontrada na [página de lançamentos](https://github.com/atuinsh/atuin/releases).
+
+```sh
+docker run -d -v "$HOME/.config/atuin:/config" ghcr.io/atuinsh/atuin: server start
+```
+
+# Docker Compose
+
+Usando a imagem docker já construída, hospedar seu próprio Atuin pode ser feito usando o arquivo docker-compose fornecido.
+
+Crie um arquivo `.env` ao lado de [`docker-compose.yml`](https://github.com/atuinsh/atuin/raw/main/docker-compose.yml) com conteúdo como este:
+
+```ini
+ATUIN_DB_NAME=atuin
+ATUIN_DB_USERNAME=atuin
+# Escolha sua própria senha segura
+ATUIN_DB_PASSWORD=really-insecure
+```
+
+Crie um `docker-compose.yml`:
+
+```yaml
+version: '3.5'
+services:
+ atuin:
+ restart: always
+ image: ghcr.io/atuinsh/atuin:
+ command: server start
+ volumes:
+ - "./config:/config"
+ links:
+ - postgresql:db
+ ports:
+ - 8888:8888
+ environment:
+ ATUIN_HOST: "0.0.0.0"
+ ATUIN_OPEN_REGISTRATION: "true"
+ ATUIN_DB_URI: postgres://$ATUIN_DB_USERNAME:$ATUIN_DB_PASSWORD@db/$ATUIN_DB_NAME
+ RUST_LOG: info,atuin_server=debug
+ db:
+ image: postgres:14
+ restart: unless-stopped
+ volumes: # Não remova o armazenamento permanente para arquivos de banco de dados de índice!
+ - "./database:/var/lib/postgresql/data/"
+ environment:
+ POSTGRES_USER: ${ATUIN_DB_USERNAME}
+ POSTGRES_PASSWORD: ${ATUIN_DB_PASSWORD}
+ POSTGRES_DB: ${ATUIN_DB_NAME}
+```
+
+Inicie os serviços usando `docker compose`:
+
+```sh
+docker compose up -d
+```
+
+## Usando systemd para gerenciar seu servidor atuin
+
+O seguinte arquivo de unidade `systemd` para gerenciar seu serviço gerenciado por `docker-compose`:
+
+```ini
+[Unit]
+Description=Docker Compose Atuin Service
+Requires=docker.service
+After=docker.service
+
+[Service]
+# Onde o arquivo docker-compose está localizado
+WorkingDirectory=/srv/atuin-server
+ExecStart=/usr/bin/docker compose up
+ExecStop=/usr/bin/docker compose down
+TimeoutStartSec=0
+Restart=on-failure
+StartLimitBurst=3
+
+[Install]
+WantedBy=multi-user.target
+```
+
+Inicie e habilite o serviço com:
+
+```sh
+systemctl enable --now atuin
+```
+
+Verifique se está em execução com:
+
+```sh
+systemctl status atuin
+```
+
+## Criando backups do banco de dados Postgres
+
+Você pode adicionar outro serviço ao seu arquivo `docker-compose.yml` para que ele execute backups diários. Deve ser assim:
+
+```yaml
+ backup:
+ container_name: atuin_db_dumper
+ image: prodrigestivill/postgres-backup-local
+ env_file:
+ - .env
+ environment:
+ POSTGRES_HOST: postgresql
+ POSTGRES_DB: ${ATUIN_DB_NAME}
+ POSTGRES_USER: ${ATUIN_DB_USERNAME}
+ POSTGRES_PASSWORD: ${ATUIN_DB_PASSWORD}
+ SCHEDULE: "@daily"
+ BACKUP_DIR: /db_dumps
+ volumes:
+ - ./db_dumps:/db_dumps
+ depends_on:
+ - postgresql
+```
+
+Isso criará backups diários do seu banco de dados para essa camada adicional de conforto.
+
+
+:::caution
+ATENÇÃO: A montagem `./db_dumps` DEVE ser um sistema de arquivos compatível com POSIX para armazenar os backups (principalmente com suporte para hardlinks e softlinks). Assim, sistemas de arquivos como VFAT, EXFAT, SMB/CIFS, ... não podem ser usados com esta imagem docker. Veja https://github.com/prodrigestivill/docker-postgres-backup-local para mais detalhes sobre como isso funciona. Existem configurações adicionais para o número de backups retidos, etc., tudo explicado na página vinculada.
+:::
diff --git a/src/content/docs/pt-br/self-hosting/kubernetes.mdx b/src/content/docs/pt-br/self-hosting/kubernetes.mdx
new file mode 100644
index 0000000..b092bd1
--- /dev/null
+++ b/src/content/docs/pt-br/self-hosting/kubernetes.mdx
@@ -0,0 +1,293 @@
+---
+title: Kubernetes
+---
+
+:::caution
+Se você está auto-hospedando, sugerimos fortemente que você se atenha às versões marcadas (tagged releases), e não siga `main` ou `latest`
+
+Siga os lançamentos do GitHub, e leia as notas para cada lançamento. Na maioria das vezes, as atualizações podem ocorrer sem qualquer intervenção manual.
+
+Não podemos garantir que todas as atualizações serão aplicadas de forma limpa, e algumas podem exigir algumas etapas extras.
+:::
+
+Você pode hospedar seu próprio servidor Atuin usando a plataforma Kubernetes.
+
+Crie um arquivo [`secrets.yaml`](https://github.com/atuinsh/atuin/blob/main/k8s/secrets.yaml) para as credenciais do banco de dados:
+
+```yaml
+apiVersion: v1
+kind: Secret
+metadata:
+ name: atuin-secrets
+type: Opaque
+stringData:
+ ATUIN_DB_USERNAME: atuin
+ ATUIN_DB_PASSWORD: seriously-insecure
+ ATUIN_HOST: "127.0.0.1"
+ ATUIN_PORT: "8888"
+ ATUIN_OPEN_REGISTRATION: "true"
+ ATUIN_DB_URI: "postgres://atuin:seriously-insecure@postgres/atuin"
+immutable: true
+```
+
+Crie um arquivo [`atuin.yaml`](https://github.com/atuinsh/atuin/blob/main/k8s/atuin.yaml) para o servidor Atuin:
+
+```yaml
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: postgres
+ namespace: atuin
+spec:
+ replicas: 1
+ strategy:
+ type: Recreate # Isso é importante para garantir que pods duplicados não sejam executados e causem corrupção
+ selector:
+ matchLabels:
+ io.kompose.service: postgres
+ template:
+ metadata:
+ labels:
+ io.kompose.service: postgres
+ spec:
+ containers:
+ - name: postgresql
+ image: postgres:14
+ ports:
+ - containerPort: 5432
+ env:
+ - name: POSTGRES_DB
+ value: atuin
+ - name: POSTGRES_PASSWORD
+ valueFrom:
+ secretKeyRef:
+ name: atuin-secrets
+ key: ATUIN_DB_PASSWORD
+ optional: false
+ - name: POSTGRES_USER
+ valueFrom:
+ secretKeyRef:
+ name: atuin-secrets
+ key: ATUIN_DB_USERNAME
+ optional: false
+ lifecycle:
+ preStop:
+ exec:
+ # Isso garante um desligamento gracioso, veja: https://stackoverflow.com/a/75829325/3437018
+ # Potencialmente considere usar um `StatefulSet` em vez de um `Deployment`
+ command: ["/usr/local/bin/pg_ctl stop -D /var/lib/postgresql/data -w -t 60 -m fast"]
+ resources:
+ requests:
+ cpu: 100m
+ memory: 100Mi
+ limits:
+ cpu: 250m
+ memory: 600Mi
+ volumeMounts:
+ - mountPath: /var/lib/postgresql/data/
+ name: database
+ volumes:
+ - name: database
+ persistentVolumeClaim:
+ claimName: database
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: atuin
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ io.kompose.service: atuin
+ template:
+ metadata:
+ labels:
+ io.kompose.service: atuin
+ spec:
+ containers:
+ - args:
+ - server
+ - start
+ env:
+ - name: ATUIN_DB_URI
+ valueFrom:
+ secretKeyRef:
+ name: atuin-secrets
+ key: ATUIN_DB_URI
+ optional: false
+ - name: ATUIN_HOST
+ value: 0.0.0.0
+ - name: ATUIN_PORT
+ value: "8888"
+ - name: ATUIN_OPEN_REGISTRATION
+ value: "true"
+ image: ghcr.io/atuinsh/atuin:latest
+ name: atuin
+ ports:
+ - containerPort: 8888
+ resources:
+ limits:
+ cpu: 250m
+ memory: 1Gi
+ requests:
+ cpu: 250m
+ memory: 1Gi
+ volumeMounts:
+ - mountPath: /config
+ name: atuin-claim0
+ volumes:
+ - name: atuin-claim0
+ persistentVolumeClaim:
+ claimName: atuin-claim0
+---
+apiVersion: v1
+kind: Service
+metadata:
+ labels:
+ io.kompose.service: atuin
+ name: atuin
+spec:
+ type: NodePort
+ ports:
+ - name: "8888"
+ port: 8888
+ nodePort: 30530
+ selector:
+ io.kompose.service: atuin
+---
+apiVersion: v1
+kind: Service
+metadata:
+ labels:
+ io.kompose.service: postgres
+ name: postgres
+spec:
+ type: ClusterIP
+ selector:
+ io.kompose.service: postgres
+ ports:
+ - protocol: TCP
+ port: 5432
+ targetPort: 5432
+---
+kind: PersistentVolume
+apiVersion: v1
+metadata:
+ name: database-pv
+ labels:
+ app: database
+ type: local
+spec:
+ storageClassName: manual
+ capacity:
+ storage: 300Mi
+ accessModes:
+ - ReadWriteOnce
+ hostPath:
+ path: "/Users/firstname.lastname/.kube/database"
+---
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+ labels:
+ io.kompose.service: database
+ name: database
+spec:
+ storageClassName: manual
+ accessModes:
+ - ReadWriteOnce
+ resources:
+ requests:
+ storage: 300Mi
+---
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+ labels:
+ io.kompose.service: atuin-claim0
+ name: atuin-claim0
+spec:
+ accessModes:
+ - ReadWriteOnce
+ resources:
+ requests:
+ storage: 10Mi
+```
+
+Finalmente, você pode querer usar um namespace separado para o atuin, criando um arquivo [`namespaces.yaml`](https://github.com/atuinsh/atuin/blob/main/k8s/namespaces.yaml):
+
+```yaml
+apiVersion: v1
+kind: Namespace
+metadata:
+ name: atuin-namespace
+ labels:
+ name: atuin
+```
+
+Observe que esta configuração armazenará a pasta do banco de dados _fora_ do cluster kubernetes, na pasta `/Users/firstname.lastname/.kube/database` do sistema host, configurando o `storageClassName` para ser `manual`. Em uma configuração empresarial real, você provavelmente desejaria armazenar o conteúdo do banco de dados permanentemente no cluster, e não no sistema host.
+
+Você também deve alterar a string da senha em `ATUIN_DB_PASSWORD` e `ATUIN_DB_URI` no arquivo `secrets.yaml` para uma mais segura.
+
+O serviço atuin na porta `30530` do sistema host. Isso é configurado pela propriedade `nodePort`. O Kubernetes tem uma regra estrita de que você não tem permissão para expor uma porta com número inferior a 30000. Para fazer os clientes funcionarem, você pode simplesmente definir a porta no seu arquivo `config.toml`, por exemplo, `sync_address = "http://192.168.1.10:30530"`.
+
+Implante o servidor Atuin usando `kubectl`:
+
+```shell
+ kubectl apply -f ./namespaces.yaml
+ kubectl apply -n atuin-namespace \
+ -f ./secrets.yaml \
+ -f ./atuin.yaml
+```
+
+Os arquivos de exemplo acima também estão na [pasta k8s](https://github.com/atuinsh/atuin/tree/main/k8s) do repositório atuin.
+
+## Criando backups do banco de dados Postgres
+
+Agora que você está funcionando, é um bom momento para pensar em backups.
+
+Você pode criar um [`CronJob`](https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/) que usa [`pg_dump`](https://www.postgresql.org/docs/current/app-pgdump.html) para criar um backup do banco de dados. Este exemplo é executado semanalmente e despeja no disco local no nó.
+
+```yaml
+apiVersion: batch/v1
+kind: CronJob
+metadata:
+ name: atuin-db-backup
+spec:
+ schedule: "0 0 * * 0" # Executar todo domingo à meia-noite
+ jobTemplate:
+ spec:
+ template:
+ spec:
+ containers:
+ - name: atuin-db-backup-pg-dump
+ image: postgres:14
+ command: [
+ "/bin/bash",
+ "-c",
+ "pg_dump --host=postgres --username=atuin --format=c --file=/backup/atuin-backup-$(date +'%Y-%m-%d').pg_dump",
+ ]
+ env:
+ - name: PGPASSWORD
+ valueFrom:
+ secretKeyRef:
+ name: atuin-secrets
+ key: ATUIN_DB_PASSWORD
+ optional: false
+ volumeMounts:
+ - name: backup-volume
+ mountPath: /backup
+ restartPolicy: OnFailure
+ volumes:
+ - name: backup-volume
+ hostPath:
+ path: /somewhere/on/node/for/database-backups
+ type: Directory
+```
+
+Configure/atualize o exemplo `yaml` com o seguinte:
+- Defina uma programação mais ou menos frequente com a propriedade `schedule`.
+- Substitua `/somewhere/on/node/for/database-backups` por um caminho no seu nó ou reconfigure para usar um `PersistentVolume` em vez de `hostPath`.
+- `--format=c` gera um formato que pode ser restaurado com `pg_restore`. Use [`plain`](https://www.postgresql.org/docs/current/app-pgdump.html) se você quiser arquivos `.sql` gerados em vez disso.
diff --git a/src/content/docs/pt-br/self-hosting/server-setup.mdx b/src/content/docs/pt-br/self-hosting/server-setup.mdx
new file mode 100644
index 0000000..6af5524
--- /dev/null
+++ b/src/content/docs/pt-br/self-hosting/server-setup.mdx
@@ -0,0 +1,55 @@
+---
+title: Configuração do servidor
+---
+
+Embora ofereçamos um servidor de sincronização público e não possamos ver seus dados (pois são criptografados), você ainda pode desejar auto-hospedar seu próprio servidor de sincronização Atuin.
+
+Os requisitos para isso são bem mínimos! Você precisa ser capaz de executar um binário ou contêiner docker e ter um banco de dados PostgreSQL configurado. O Atuin requer PostgreSQL 14 ou superior.
+
+Qualquer host com o binário `atuin` também pode executar um servidor, executando
+
+```shell
+atuin server start
+```
+
+## Configuração
+
+A configuração do servidor é mantida separada da configuração do cliente, embora sejam o mesmo binário. A configuração do servidor pode ser encontrada em `~/.config/atuin/server.toml`.
+
+Parece algo assim:
+
+```toml
+host = "0.0.0.0"
+port = 8888
+open_registration = true
+db_uri="postgres://user:password@hostname/database"
+```
+
+Alternativamente, a configuração também pode ser fornecida com variáveis de ambiente.
+
+```sh
+ATUIN_HOST="0.0.0.0"
+ATUIN_PORT=8888
+ATUIN_OPEN_REGISTRATION=true
+ATUIN_DB_URI="postgres://user:password@hostname/database"
+```
+
+
+| Parâmetro | Descrição |
+| ------------------- | ----------------------------------------------------------------------------- |
+| `host` | O host para escutar (padrão: 127.0.0.1) |
+| `port` | A porta TCP para escutar (padrão: 8888) |
+| `open_registration` | Se `true`, aceita novos registros de usuário (padrão: false) |
+| `db_uri` | Uma URI PostgreSQL válida, para salvar o histórico (padrão: false) |
+| `path` | Um caminho para preceder todas as rotas do servidor (padrão: false) |
+
+### TLS
+
+O servidor suporta TLS através da seção `[tls]`:
+
+```toml
+[tls]
+enable = true
+cert_path = "/path/to/letsencrypt/live/fully.qualified.domain/fullchain.pem"
+pkey_path = "/path/to/letsencrypt/live/fully.qualified.domain/privkey.pem"
+```
\ No newline at end of file
diff --git a/src/content/docs/pt-br/self-hosting/systemd.mdx b/src/content/docs/pt-br/self-hosting/systemd.mdx
new file mode 100644
index 0000000..e65fcad
--- /dev/null
+++ b/src/content/docs/pt-br/self-hosting/systemd.mdx
@@ -0,0 +1,66 @@
+---
+title: Systemd
+---
+
+Primeiro, crie o arquivo de unidade de serviço
+[`atuin-server.service`](https://github.com/atuinsh/atuin/raw/main/systemd/atuin-server.service) em
+`/etc/systemd/system/atuin-server.service` com conteúdo como este:
+
+```ini
+[Unit]
+Description=Start the Atuin server syncing service
+After=network-online.target
+Wants=network-online.target systemd-networkd-wait-online.service
+
+[Service]
+ExecStart=atuin server start
+Restart=on-failure
+User=atuin
+Group=atuin
+
+Environment=ATUIN_CONFIG_DIR=/etc/atuin
+ReadWritePaths=/etc/atuin
+
+# Hardening options
+CapabilityBoundingSet=
+AmbientCapabilities=
+NoNewPrivileges=true
+ProtectHome=true
+ProtectSystem=strict
+ProtectKernelTunables=true
+ProtectKernelModules=true
+ProtectControlGroups=true
+PrivateTmp=true
+PrivateDevices=true
+LockPersonality=true
+
+[Install]
+WantedBy=multi-user.target
+```
+
+Este é o arquivo oficial da unidade de serviço Atuin que inclui muitas opções de endurecimento para aumentar a segurança.
+
+Em seguida, crie [`atuin-server.conf`](https://github.com/atuinsh/atuin/raw/main/systemd/atuin-server.sysusers) em
+`/etc/sysusers.d/atuin-server.conf` com conteúdo como este:
+
+```
+u atuin - "Atuin synchronized shell history"
+```
+Este arquivo garantirá que um usuário do sistema seja criado da maneira correta.
+
+Depois, execute
+```sh
+systemctl restart systemd-sysusers
+```
+para garantir que o arquivo seja lido. Um novo usuário `atuin-server` deve então estar disponível.
+
+Agora, você pode tentar executar o servidor Atuin:
+```sh
+systemctl enable --now atuin-server
+```
+
+```sh
+systemctl status atuin-server
+```
+
+Se ele iniciou corretamente, ele deve ter criado a configuração padrão dentro de `/etc/atuin/`.
\ No newline at end of file
diff --git a/src/content/docs/pt-br/self-hosting/usage.mdx b/src/content/docs/pt-br/self-hosting/usage.mdx
new file mode 100644
index 0000000..954a7c3
--- /dev/null
+++ b/src/content/docs/pt-br/self-hosting/usage.mdx
@@ -0,0 +1,17 @@
+---
+title: Usando um servidor auto-hospedado
+---
+
+:::caution
+Se você está auto-hospedando, sugerimos fortemente que você se atenha às versões marcadas (tagged releases), e não siga `main` ou `latest`
+
+Siga os lançamentos do GitHub, e por favor leia as notas para cada lançamento. Na maioria das vezes, as atualizações podem ocorrer sem qualquer intervenção manual.
+
+Não podemos garantir que todas as atualizações serão aplicadas de forma limpa, e algumas podem exigir algumas etapas extras.
+:::
+
+## Configuração do cliente
+
+Para usar um servidor auto-hospedado com o Atuin, você precisará configurar o `sync_address` no arquivo de configuração em `~/.config/atuin/config.toml`. Consulte a página de [configuração](/configuration/config/#sync_address) para mais detalhes sobre como definir o `sync_address`.
+
+Alternativamente, você pode definir a variável de ambiente `ATUIN_SYNC_ADDRESS` para o host correto, por exemplo: `ATUIN_SYNC_ADDRESS=https://api.atuin.sh`.
\ No newline at end of file
diff --git a/src/content/docs/pt-br/sync-v2.mdx b/src/content/docs/pt-br/sync-v2.mdx
new file mode 100644
index 0000000..0fd1248
--- /dev/null
+++ b/src/content/docs/pt-br/sync-v2.mdx
@@ -0,0 +1,19 @@
+---
+title: Sincronização v2
+---
+
+Acabou de instalar o Atuin? Não se preocupe com esta página, tudo deve estar configurado para você.
+
+Se você usa o Atuin há algum tempo, talvez não esteja usando a melhor sincronização. Há muito tempo, lançamos a sincronização v1. Era "boa o suficiente", mas nunca foi destinada ao uso generalizado que acabou recebendo.
+
+Após avaliar problemas e feedback dos usuários, desenvolvemos a sincronização v2. Ela inclui uma série de mudanças sobre as quais escreverei em uma futura postagem de blog ou análise aprofundada, mas basta dizer que é:
+
+1. Mais rápida
+2. Mais confiável
+3. Usa menos largura de banda
+4. Suporta muito mais recursos
+5. Recupera-se de problemas de forma mais eficaz
+
+Realmente não há razão para não usá-la.
+
+Você pode optar por ela com a seguinte configuração
\ No newline at end of file
diff --git a/src/content/docs/pt-br/uninstall.md b/src/content/docs/pt-br/uninstall.md
new file mode 100644
index 0000000..2b6b05a
--- /dev/null
+++ b/src/content/docs/pt-br/uninstall.md
@@ -0,0 +1,21 @@
+---
+title: Desinstalando o Atuin
+---
+
+Lamentamos vê-lo partir!
+
+Se você usou o instalador do Atuin, pode excluí-lo completamente removendo o seguinte:
+
+1. Exclua o diretório ~/.atuin
+2. Exclua o diretório ~/.local/share/atuin
+3. Remova a linha que faz referência a "atuin init" da configuração do seu shell
+
+Caso contrário, a desinstalação do Atuin depende do seu sistema e de como você o instalou.
+
+Por exemplo, no macOS, você precisaria executar:
+
+```sh
+brew uninstall atuin
+```
+
+e então remover a integração com o shell.
diff --git a/src/i18n/en.json b/src/i18n/en.json
new file mode 100644
index 0000000..f0d73b4
--- /dev/null
+++ b/src/i18n/en.json
@@ -0,0 +1,5 @@
+{
+ "siteTitle": "Atuin Docs",
+ "home": "Home",
+ "docs": "Docs"
+}
\ No newline at end of file
diff --git a/src/i18n/pt-br.json b/src/i18n/pt-br.json
new file mode 100644
index 0000000..063bf55
--- /dev/null
+++ b/src/i18n/pt-br.json
@@ -0,0 +1,5 @@
+{
+ "siteTitle": "Documentação Atuin",
+ "home": "Início",
+ "docs": "Documentação"
+}
\ No newline at end of file
diff --git a/src/i18n/utils.ts b/src/i18n/utils.ts
new file mode 100644
index 0000000..14f6203
--- /dev/null
+++ b/src/i18n/utils.ts
@@ -0,0 +1,21 @@
+import en from './en.json';
+import ptBr from './pt-br.json';
+
+const languages = {
+ en,
+ 'pt-br': ptBr,
+};
+
+export function getLangFromUrl(url: URL) {
+ const parts = url.pathname.split('/');
+ if (parts[1] && Object.keys(languages).includes(parts[1])) {
+ return parts[1];
+ }
+ return 'en'; // Default language
+}
+
+export function useTranslations(lang: keyof typeof languages) {
+ return function t(key: keyof typeof languages['en']) {
+ return languages[lang][key] || key;
+ }
+}
\ No newline at end of file