{
  "markdown": "# Activity Tracker\n\n> [English documentation available in docs/README.md](docs/README.md)\n\nDaemon em Rust que captura atividades do sistema (terminal, janelas abertas, abas do Chrome/Brave, repositórios Git) e gera resumos inteligentes via LLM. Suporta Ollama (local), OpenAI, Anthropic, Groq, Gemini e OpenRouter. Opcionalmente envia o resumo para o [Notion](https://notion.so) ou para um canal do [Slack](https://slack.com) via webhook.\n\n## Instalação\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/omauriciomaciel/activity-tracker/main/install.sh | sh\n```\n\nO script detecta o OS/arquitetura, baixa o binário pré-compilado da última release do GitHub, instala em `~/.local/bin`, configura o autostart e adiciona aliases ao shell:\n\n- **macOS** — cria um LaunchAgent em `~/Library/LaunchAgents/` e abre as telas de permissão necessárias\n- **Linux (systemd)** — cria e ativa um serviço systemd de usuário\n\nApós a instalação, dois aliases ficam disponíveis:\n\n```\nat   →  activity-tracker\nats  →  activity-tracker summary\n```\n\nInstalar em diretório customizado:\n\n```bash\nINSTALL_DIR=/usr/local/bin curl -fsSL https://raw.githubusercontent.com/omauriciomaciel/activity-tracker/main/install.sh | sh\n```\n\nOu compilar a partir do fonte:\n\n```bash\ncargo build --release\n./target/release/activity-tracker --version\n```\n\n**Pré-requisitos:**\n- **LLM** — Ollama local (`ollama serve`) ou API key de um provider cloud\n- Opcional: `wmctrl` para captura de janelas X11 (`sudo apt install wmctrl`)\n\n## Providers de LLM\n\n| Provider | Modelos exemplo | Requer |\n|---|---|---|\n| `ollama` | llama3.1, mistral, gemma2 | Ollama rodando localmente |\n| `openai` | gpt-4o, gpt-4o-mini | API key OpenAI |\n| `anthropic` | claude-sonnet-4-6, claude-haiku-4-5-20251001 | API key Anthropic |\n| `groq` | llama-3.1-8b-instant, mixtral-8x7b | API key Groq |\n| `gemini` | gemini-2.0-flash, gemini-1.5-pro | API key Google |\n| `openrouter` | qualquer modelo disponível | API key OpenRouter |\n\nO padrão é `ollama`. Para usar outro provider:\n\n```bash\nat config set-provider openai\nat config set-api-key sk-...\nat config set-model gpt-4o-mini\n```\n\n## Uso\n\n```bash\n# Daemon em background\nat start                     # inicia em background\nat start --interval 10       # intervalo customizado em minutos\nat stop                      # para o daemon\nat status                    # verifica se está rodando\n\n# Coleta manual única\nat collect\n\n# Resumo dos últimos N dias\nats\nats --days 7\nats --today                  # atalho para o dia de hoje\nats --week                   # atalho para --days 7\nats --month                  # atalho para --days 30\nats --model gpt-4o-mini\nats --lang en\nats --verbose                # exibe dados brutos antes do resumo\n\n# Busca por termo nos logs antes de resumir\nats --search docker           # filtra tudo que contém \"docker\" e resume\nats --search \"cargo build\"\n\n# Resumo de uma data específica (formato YYYY-DD-MM)\nats --date 2026-06-06\n\n# Override de provider por sessão (sem alterar config)\nats --provider anthropic --api-key sk-ant-... --model claude-haiku-4-5-20251001\nats --provider groq --model llama-3.1-8b-instant\n\n# Enviar resumo ao Notion\nats --today --send-notion\n\n# Enviar resumo ao Slack\nats --today --send-slack\n\n# Enviar para ambos ao mesmo tempo\nats --week --send-notion --send-slack\n\n# TUI interativa\nat tui                       # abre a interface, hoje como data inicial\nat tui --provider openai --model gpt-4o-mini\n\n# Anotações manuais\nat tag \"reunião de planning\"     # adiciona nota ao log de hoje\nat tag \"revisão de código\"\nat tag                           # lista as notas de hoje\nat tag --list --date 2026-10-06  # lista notas de data específica\nat tag \"sprint planning\" --date 2026-10-06  # nota em data específica\n\n# Exportar logs em CSV ou JSON\nat export                    # hoje em CSV (stdout)\nat export --days 7           # últimos 7 dias\nat export --format json      # formato JSON\nat export --days 7 -o semana.csv  # salvar em arquivo\nat export --date 2026-06-10  # data específica\n\n# Configuração persistente\nat config set-provider ollama       # ollama | openai | anthropic | groq | gemini | openrouter\nat config set-model llama3.1\nat config set-api-key <key>         # API key para providers cloud\nat config set-url http://localhost:11434  # URL do Ollama (provider=ollama)\nat config set-lang pt-br            # pt-br | en | es\nat config set-notion-token secret_xxx\nat config set-notion-page <page_id>\nat config set-slack-webhook https://hooks.slack.com/services/...\nat config set-machine-name \"MacBook Pro\"  # opcional, usa hostname se omitido\nat config set-prompt \"Você é um gerente de produto. {lang}\\n\\n{context}\\n\\nFaça um relatório em bullet points.\"\nat config clear-prompt              # volta ao prompt padrão\nat config show\n```\n\n## TUI interativa\n\n`at tui` abre uma interface de terminal completa:\n\n```\n┌──────────────────── ◄ 2026-06-12 (hoje) ► ────────────────────┐\n│  Atividades  │  Resumo  │  Projetos  │  Config                │\n├───────────────────────────────────────────────────────────────┤\n│ ■ SHELL  (42 comandos)                                        │\n│ ─────────────────────────────────────────────────────────     │\n│   $ cargo build --release                                     │\n│   $ git commit -m \"feat: tui interativa\"                      │\n│   $ vim src/tui.rs                                            │\n│   ...                                                         │\n│                                                               │\n│ ■ GIT  (2 repos, 5 commits)                                   │\n│ ─────────────────────────────────────────────────────────     │\n│   activity-tracker                                            │\n│     ↳ 2026-06-12 feat: tui interativa                        │\n├───────────────────────────────────────────────────────────────┤\n│ ←/→ dia  Tab aba  ↑↓ scroll  r resumo  q sair                │\n└───────────────────────────────────────────────────────────────┘\n```\n\nA aba **Projetos** exibe distribuição de tempo por repositório:\n\n```\n  activity-tracker  ████████████████░░░░░░░░   67.3%  (12c, 5d)\n  meu-projeto       ████████░░░░░░░░░░░░░░░░   32.7%  ( 6c, 3d)\n```\n\nA aba **Config** permite editar todas as configurações sem sair da TUI. Campos de provider e idioma ciclan com `←`/`→`; demais campos abrem modo de edição de texto. Padrões de privacidade podem ser adicionados e removidos diretamente.\n\n| Tecla | Ação |\n|---|---|\n| `←` / `→` ou `h` / `l` | Navegar entre dias |\n| `Tab` / `1` / `2` / `3` / `4` | Alternar entre abas Atividades, Resumo, Projetos e Config |\n| `↑` / `↓` ou `j` / `k` | Rolar conteúdo / navegar campos (Config) |\n| `PgUp` / `PgDn` | Rolar rápido |\n| `Home` | Ir ao topo |\n| `r` | Gerar resumo via LLM (muda para aba Resumo) |\n| `s` | Na aba Projetos: janela de 7 dias |\n| `m` | Na aba Projetos: janela de 30 dias |\n| `Enter` / `e` | Na aba Config: editar campo selecionado |\n| `←` / `→` | Na aba Config: ciclar provider ou idioma |\n| `d` / `Delete` | Na aba Config: remover padrão de privacidade |\n| `R` | Na aba Config: recarregar configuração do disco |\n| `q` / `Esc` | Sair (ou cancelar edição na aba Config) |\n\nAceita os mesmos flags de provider que o `summary` (`--provider`, `--model`, `--api-key`, `--lang`).\n\n## Autostart no login\n\n### macOS\n\nO `install.sh` cria e carrega um LaunchAgent automaticamente:\n\n```bash\nlaunchctl list | grep activity-tracker     # status\nlaunchctl unload ~/Library/LaunchAgents/com.activity-tracker.plist  # parar\nlaunchctl load -w ~/Library/LaunchAgents/com.activity-tracker.plist # iniciar\n\ntail -f ~/.local/share/activity-tracker/daemon.log  # logs\n```\n\n### Linux (systemd)\n\n```bash\nsystemctl --user status activity-tracker   # status\nsystemctl --user stop activity-tracker     # parar\nsystemctl --user start activity-tracker    # iniciar\nsystemctl --user disable activity-tracker  # remover do autostart\n\njournalctl --user -u activity-tracker -f   # logs em tempo real\n```\n\n> Para o autostart funcionar após reinicialização sem sessão gráfica ativa (Linux):\n> ```bash\n> loginctl enable-linger $USER\n> ```\n\n## Permissões no macOS\n\nO `install.sh` abre as telas automaticamente. Caso precise configurar manualmente, adicione o binário (`~/.local/bin/activity-tracker`) em:\n\n- **System Settings → Privacy & Security → Full Disk Access** — para ler o histórico do Chrome/Brave\n- **System Settings → Privacy & Security → Accessibility** — para capturar títulos de janelas via `osascript`\n\n## Integração com Notion\n\nCrie uma [Internal Integration](https://www.notion.so/my-integrations) no Notion, compartilhe uma página com ela e configure:\n\n```bash\nat config set-notion-token secret_xxx\nat config set-notion-page <page_id>   # ID após o último / na URL da página\n```\n\nA partir daí, qualquer resumo pode ser enviado com `--send-notion`:\n\n```bash\nats --today --send-notion\n```\n\nO resumo é criado como subpágina da página configurada. O título usa a data e o nome da máquina, ex: `2026-06-12 — MacBook Pro`.\n\n## Integração com Slack\n\nCrie um [Incoming Webhook](https://api.slack.com/messaging/webhooks) no Slack (em **api.slack.com/apps → seu app → Incoming Webhooks**) e configure:\n\n```bash\nat config set-slack-webhook https://hooks.slack.com/services/T.../B.../...\n```\n\nA partir daí, qualquer resumo pode ser enviado com `--send-slack`:\n\n```bash\nats --today --send-slack\nats --week --send-slack\n```\n\nO resumo é enviado como mensagem formatada com Block Kit (header + seções). Funciona com qualquer canal ao qual o webhook tenha acesso. Pode ser usado junto com `--send-notion`:\n\n```bash\nats --today --send-notion --send-slack\n```\n\n## O que é capturado\n\n| Fonte | Detalhes |\n|---|---|\n| **Shell history** | Bash, Zsh e Fish — leitura incremental (só novos comandos desde a última coleta) |\n| **Janelas abertas** | `wmctrl` (X11) → `xdotool` → `osascript` (macOS) → `ps` (fallback Linux) |\n| **Chrome / Brave** | DevTools Protocol (porta 9222) ou SQLite history DB (últimas 2 horas) |\n| **Git** | Todos os commits do dia por repo, encontrados até 4 níveis abaixo do home (máx. 15 repos) |\n\nComandos triviais são filtrados automaticamente (`ls`, `cd`, `clear`, `pwd`, etc.).\n\n## Armazenamento\n\n| Arquivo | Caminho |\n|---|---|\n| Logs diários (JSONL) | `~/.local/share/activity-tracker/logs/YYYY-MM-DD.jsonl` |\n| PID do daemon | `~/.local/share/activity-tracker/daemon.pid` |\n| Configuração | `~/.config/activity-tracker/config.toml` |\n\nCada linha do `.jsonl` é uma entrada tipada (`shell`, `apps`, `chrome_tabs` ou `context`).\n\n## Configuração padrão\n\n```toml\nprovider   = \"ollama\"\nmodel      = \"llama3.1\"\nollama_url = \"http://localhost:11434\"\nlang       = \"pt-br\"\n# api_key         = \"sk-...\"                              # opcional, para providers cloud\n# notion_token    = \"secret_xxx\"                          # opcional\n# notion_page_id  = \"abc123...\"                           # opcional\n# slack_webhook   = \"https://hooks.slack.com/services/...\"  # opcional\n# machine_name    = \"MacBook Pro\"                         # opcional, padrão: hostname do sistema\n```\n\n## Resumo gerado\n\n1. **Resumo Geral** — o que foi feito, em 2-3 parágrafos\n2. **Projetos Identificados** — tarefas em andamento detectadas\n3. **Ferramentas Mais Usadas** — apps e CLIs mais frequentes\n4. **Sites e Pesquisas** — o que foi lido ou pesquisado online\n5. **Sugestões** — observações de produtividade\n\n## Chrome com DevTools Protocol\n\nPara capturar abas em tempo real (sem depender do histórico SQLite), inicie o Chrome com:\n\n```bash\ngoogle-chrome --remote-debugging-port=9222\n```\n",
  "bytes": 11529,
  "sha": "8a804d61adfc654a3be21feb9474b9de3e75a486194d936a749c3f05db6766e4",
  "repo_slug": "omauriciomaciel/activity-tracker",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/okf_omauriciomaciel_activity_tracker_docs_in_1dad7666/readme"
}