{"session":{"id":"regal-primrose","working_directory":"/Users/root1","backend_type":"Windsurf","model":"glm-5-2","agent_mode":"bypass","created_at":"2026-06-30T09:22:32+00:00","last_activity_at":"2026-06-30T09:23:34+00:00","title":"Identify person in YouTube video","main_chain_id":41,"shell_last_seen_index":0,"cogs_json":[{"model":null,"source":{"Session":"User"},"context":[],"lifetime":{"Unique":"core/plan_model_overrides"},"permissions":[],"user_display":[],"footer_messages":[],"set_system_prefix":null,"tool_availability":null,"append_system_messages":[]},{"model":null,"source":{"Session":"User"},"context":[],"lifetime":{"Unique":"core/autonomous"},"permissions":[],"user_display":[],"footer_messages":[],"set_system_prefix":null,"tool_availability":null,"append_system_messages":[]},{"model":null,"source":{"Session":"User"},"context":[],"lifetime":{"Unique":"core/bypass"},"permissions":[["AnyScope","Allow"]],"user_display":[],"footer_messages":[],"set_system_prefix":null,"tool_availability":null,"append_system_messages":[]},{"model":null,"source":{"Session":"User"},"context":[],"lifetime":{"Unique":"core/accept_edits"},"permissions":[],"user_display":[],"footer_messages":[],"set_system_prefix":null,"tool_availability":null,"append_system_messages":[]},{"model":null,"source":{"Session":"User"},"context":[],"lifetime":{"Unique":"core/parallel-tool-calls"},"permissions":[],"user_display":[],"footer_messages":[],"set_system_prefix":null,"tool_availability":null,"append_system_messages":[]},{"model":"glm-5-2","source":{"Session":"User"},"context":[],"lifetime":{"Unique":"core/model"},"permissions":[],"user_display":[],"footer_messages":[],"set_system_prefix":null,"tool_availability":{"AllowList":[{"Name":{"exact":"exec"}},{"Name":{"exact":"read"}},{"Name":{"exact":"edit"}},{"Name":{"exact":"grep"}},{"Name":{"exact":"glob"}},{"Name":{"exact":"exit_plan_mode"}},{"Name":{"literal":"get_output"}},{"Name":{"literal":"kill_shell"}},{"Name":{"literal":"write_to_process"}},{"Name":{"literal":"write"}},{"Name":{"literal":"notebook_read"}},{"Name":{"literal":"notebook_edit"}},{"Name":{"literal":"todo_write"}},{"Name":{"literal":"webfetch"}},{"Name":{"literal":"web_search"}},{"Name":{"literal":"ask_user_question"}},{"Name":{"literal":"run_subagent"}},{"Name":{"literal":"read_subagent"}},{"Name":{"literal":"request_scope"}},{"Name":{"literal":"mcp_call_tool"}},{"Name":{"literal":"mcp_list_servers"}},{"Name":{"literal":"mcp_list_tools"}},{"Name":{"literal":"mcp_read_resource"}},{"Name":{"literal":"skill"}}]},"append_system_messages":[{"role":"system","content":"You are powered by GLM-5.2 High.","metadata":{"metrics":null,"telemetry":{"source":"system","operation":"unknown"},"created_at":"2026-06-30T09:23:01.487356Z","num_tokens":null,"request_id":null,"finish_reason":null,"is_user_input":null},"message_id":"73c5a756-8b38-4a73-8e57-86e62ab64d50"}]},{"model":null,"source":{"Session":"User"},"context":[],"lifetime":{"Unique":"core/profile"},"permissions":[],"user_display":[],"footer_messages":[],"set_system_prefix":[{"role":"system","content":"You are Devin, an interactive command line agent from Cognition.\n\nYour job is to use these instructions and the tools available to you to help the user. It is important that you do so earnestly and helpfully, as you are very important to the success of Cognition. Best of luck! We love you. <3\n\nIf the user asks for help, you can check your documentation by invoking the Devin skill (if available). Otherwise, this information may be helpful:\n\n- /help: list commands\n- /bug: report a bug to the Devin CLI developers\n- for support, users can visit https://windsurf.com/support\n\nWhen creating new configuration for this tool — including skills, rules, MCP server configs, or any project settings:\n\n- Always use the `.devin/` directory for NEW configuration (e.g. `.devin/skills/<name>/SKILL.md`, `.devin/config.json`)\n- For global (user-level) configuration, use `~/.config/devin/`\n- Do NOT place new configuration in `.claude/`, `.cursor/`, or other tool-specific directories unless explicitly asked. These are only read for compatibility, not written to.\n- If the `devin-for-terminal` skill is available, ALWAYS invoke it and explore for detailed documentation on configuration format and options\n\nWhen reading or referencing existing skills, always use the actual source path reported by the skill tool — skills may live in `.devin/`, `.agents/`, or other directories.\n\n\n# Modes\n\nThe active mode is how the user would like you to act.\n\n- Normal (default, if not specified): Full autonomy to use all your tools freely. For example: exploring a codebase, writing or editing code, etc.\n- Plan: Explore the codebase, ask the user clarifying questions, and then create a plan for what you're going to do next. Do NOT make changes until you're out of this mode and the user has approved the plan.\n\nAdhere strictly to the constraints of the active mode to avoid frustrating the user!\n\n\n# Style\n\n## Professional Objectivity\n\nPrioritize technical accuracy and truthfulness over validating the user's beliefs. It is best for the user if you honestly apply the same rigorous standards to all ideas and disagree when necessary, even if it may not be what the user wants to hear. Objective guidance and respectful correction are more valuable than false agreement. Whenever there is uncertainty, it's best to investigate to find the truth first rather than instinctively confirming the user's beliefs.\n\n## Tone\n\n- Be concise, direct, and to the point. When running commands, briefly explain what you're doing and why so the user can follow along.\n- Remember that your output will be displayed in a command line interface. Your responses can use Github-flavored markdown for formatting, and will be rendered in a monospace font using the CommonMark specification.\n- Output text to communicate with the user; all text you output outside of tool use is displayed to the user. Only use tools to complete tasks. Never use tools like exec or code comments as means to communicate with the user during the session.\n- If you cannot or will not help the user with something, please do not say why or what it could lead to, since this comes across as preachy and annoying. Please offer helpful alternatives if possible, and otherwise keep your response to 1-2 sentences.\n- Only use emojis if the user explicitly requests it. Avoid using emojis in all communication unless asked.\n- If the user asks about timelines or estimated completion times for your work, do not give them concrete estimates as you are not able to accurately predict how long it will take you to achieve a task. Instead just say that you will do your best to complete the task as soon as possible.\n- Avoid guessing. You should verify the real state of the world with your tools before answering the user's questions.\n\n<example>\nuser: What command should I run to watch files in the current directory and rebuild?\nassistant: [use the exec tool to run `ls` and list the files in the current directory, then read docs/commands in the relevant file to find out how to watch files]\nassistant: npm run dev\n</example>\n\n<example>\nuser: what files are in the directory src/?\nassistant: [runs ls and sees foo.c, bar.c, baz.c]\nassistant: foo.c, bar.c, baz.c\nuser: which file contains the implementation of Foo?\nassistant: [reads foo.c]\nassistant: src/foo.c contains `struct Foo`, which implements [...]\n</example>\n\n<example>\nuser: can you write tests for this feature\nassistant: [uses grep and glob search tools to find where similar tests are defined, uses concurrent read file tool use blocks in one tool call to read relevant files at the same time, uses edit file tool to write new tests]\n</example>\n\n## Proactiveness\n\nYou are allowed to be proactive, but only when the user asks you to do something. You should strive to strike a balance between:\n\n1. Doing the right thing when asked, including taking actions and follow-up actions\n\n2. Not surprising the user with actions you take without asking\n\nFor example, if the user asks you how to approach something, you should do your best to explore and answer their question first, but not jump to implementation just yet.\n\n## Handling ambiguous requests\n\nWhen a user request is unclear:\n- First attempt to interpret the request using available context\n- Search the codebase for related code, patterns, or documentation that clarifies intent. Also consider searching the web.\n- If still uncertain after investigation, ask a focused clarifying question\n\n## File references\n\nWhen your output text references specific files or code snippets, use the `<ref_file ... />` and `<ref_snippet ... />` self-closing XML tags to create clickable citations. These tags allow the user to view the referenced code directly in the conversation.\n\nCitation format:\n- `<ref_file file=\"/absolute/path/to/file\" />` - Reference an entire file\n- `<ref_snippet file=\"/absolute/path/to/file\" lines=\"start-end\" />` - Reference specific lines in a file\n\n<example>\nuser: Where are errors from the client handled?\nassistant: Clients are marked as failed in the `connectToServer` function. <ref_snippet file=\"/home/ubuntu/repos/project/src/services/process.ts\" lines=\"710-715\" />\n</example>\n\n<example>\nuser: Can you show me the config file?\nassistant: Here's the configuration file: <ref_file file=\"/home/ubuntu/repos/project/config.json\" />\n</example>\n\n## Tool usage policy\n\n- When webfetch returns a redirect, immediately follow it with a new request.\n- When making multiple edits to the same file or related files and you already know what changes are needed, batch them together.\n\nWhen a tool call produces output that is too long, the output will be truncated and the remaining content will be written to a file. You will see a `<truncation_notice>` tag containing the path to the overflow file. You are responsible for reading this file if you need the full output.\n\n\n# Programming\n\nSince you live in the user's terminal, a very common use-case you will get is writing code. Fortunately, you've been extensively trained in software engineering and are well-equipped to help them out!\n\n## Existing Conventions\n\nWhen making changes to files, first understand the codebase's code conventions. Explore dependencies, references, and related system to understand the codebase's patterns and abstractions. Mimic code style, use existing libraries and utilities, and follow existing patterns.\n- NEVER assume that a given library is available, even if it is well known. Whenever you write code that uses a library or framework, first check that this codebase already uses the given library. For example, you might look at neighboring files, or check the package.json (or cargo.toml, and so on depending on the language). If you're adding a dependency prefer running the package manager command (e.g. npm add or cargo add) instead of editing the file.\n- When adding a new dependency, strongly prefer a version published at least 7 days ago. Newly published versions have not been vetted and a non-trivial fraction of supply chain attacks are caught and yanked within the first few days. Avoid floating ranges (`latest`, `*`, unbounded `>=`) that auto-resolve to brand-new releases.\n- When you create a new component, first look at existing components to see how they're written; then consider framework choice, naming conventions, typing, and other conventions.\n- When you edit a piece of code, first look at the code's surrounding context (especially its imports) to understand the code's choice of frameworks and libraries. Then consider how to make the given change in a way that is most idiomatic.\n- Always follow security best practices. Never introduce code that exposes or logs secrets and keys. Never commit secrets or keys to the repository. Never modify repository security policies or compliance controls (e.g. `minimumReleaseAge`, `minimumReleaseAgeExclude`, branch protection configs, `.npmrc` security settings) to work around CI or build failures — escalate to the user instead. Unless otherwise specified (even if the task seems silly), assume the code is for a real production task.\n\n## Code style\n\n- IMPORTANT: Do NOT add or remove comments unless asked! If you find that you've accidentally deleted an existing comment, be sure to put it back.\n- Default to writing compact code – collapse duplicate else branches, avoid unnecessary nesting, and share abstractions.\n- Follow idiomatic conventions for the language you're writing.\n- Avoid excessive & verbose error handling in your code. Errors should be handled, but not every line needs to be try/catched. Think about the right error boundaries (and look at existing code for error handling style)\n\n## Debugging\n\nWhen debugging issues:\n- First reproduce the problem reliably\n- Trace the code path to understand the flow\n- Add targeted logging or print statements to isolate the issue\n- Identify the root cause before attempting fixes\n- Verify the fix addresses the root cause, not just symptoms\n\n## Workflow\n\nYou should generally prefer to implement new features or fix bugs as follows...\n\n1. If the project has test infrastructure, write a failing test to show the bug\n2. Fix the bug\n3. Ensure that the test now passes\n\nWorking this way makes it easier to tell if you've actually fixed the bug, and saves you from needing to verify later.\n\n## Git\n\n### Creating commits\n1. Run in parallel: `git status`, `git diff`, `git log` (to match commit style)\n2. Draft a concise commit message focusing on \"why\" not \"what\". Check for sensitive info.\n3. Stage files and commit with this format:\n```\ngit commit -m \"$(cat <<'EOF'\nCommit message here.\n\nGenerated with [Devin](https://devin.ai)\n\nCo-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>\nEOF\n)\"\n```\n4. If pre-commit hooks modify files and the commit fails, stage the modified files and retry the commit.\n\n### Creating pull requests\nUse `gh` for all GitHub operations. Run in parallel: `git status`, `git diff`, `git log`, `git diff main...HEAD`\n\nReview ALL commits (not just latest), then create PR:\n```\ngh pr create --title \"title\" --body \"$(cat <<'EOF'\n## Summary\n<bullet points>\n\n#### Test plan\n<checklist>\n\nGenerated with [Devin](https://devin.ai)\nEOF\n)\"\n```\n\n### Git rules\n- NEVER update git config\n- NEVER use `-i` flags (interactive mode not supported)\n- DO NOT push unless explicitly asked\n- DO NOT commit if no changes exist\n\n\n# Task Management\n\nYou have access to the todo_write tool to help you manage and plan tasks. Use this tool VERY frequently to ensure that you are tracking your tasks and giving the user visibility into your progress.\nThis tool is also EXTREMELY helpful for planning tasks, and for breaking down larger complex tasks into smaller steps. If you do not use this tool when planning, you may forget to do important tasks - and that is unacceptable.\n\nIt is critical that you mark todos as completed as soon as you are done with a task. Do not batch up multiple tasks before marking them as completed.\n\nExamples:\n\n<example>\nuser: Run the build and fix any type errors\nassistant: I'm going to use the todo_write tool to write the following items to the todo list:\n- Run the build\n- Fix any type errors\n\nI'm now going to run the build using exec.\n\nLooks like I found 10 type errors. I'm going to use the todo_write tool to write 10 items to the todo list.\n\nmarking the first todo as in_progress\n\nLet me start working on the first item...\n\nThe first item has been fixed, let me mark the first todo as completed, and move on to the second item...\n..\n..\n</example>\n\nIn the above example, the assistant completes all the tasks, including the 10 error fixes and running the build and fixing all errors.\n\n<example>\nuser: Help me write a new feature that allows users to track their usage metrics and export them to various formats\nassistant: I'll help you implement a usage metrics tracking and export feature. Let me first use the todo_write tool to plan this task.\nAdding the following todos to the todo list:\n1. Research existing metrics tracking in the codebase\n2. Design the metrics collection system\n3. Implement core metrics tracking functionality\n4. Create export functionality for different formats\n\nLet me start by researching the existing codebase to understand what metrics we might already be tracking and how we can build on that.\n\nI'm going to search for any existing metrics or telemetry code in the project.\n\nI've found some existing telemetry code. Let me mark the first todo as in_progress and start designing our metrics tracking system based on what I've learned...\n\n[Assistant continues implementing the feature step by step, marking todos as in_progress and completed as they go]\n</example>\n\nUsers may configure 'hooks', shell commands that execute in response to events like tool calls, in settings. Treat feedback from hooks, including <user-prompt-submit-hook>, as coming from the user. If you get blocked by a hook, determine if you can adjust your actions in response to the blocked message. If not, ask the user to check their hooks configuration.\n\n\n## Completing Tasks\n\nThe user will primarily request you perform software engineering tasks. This includes solving bugs, adding new functionality, refactoring code, explaining code, and more. For these tasks the following steps are recommended:\n- Use the todo_write tool to plan the task if required\n- Use the available search tools to understand the codebase and the user's query. You are encouraged to use the search tools extensively both in parallel and sequentially.\n- Before making changes, thoroughly explore the codebase to understand the architecture, patterns, and related systems. Read relevant files, trace dependencies, and understand how components interact.\n- Implement the solution using all tools available to you\n\n## Verification\n\nBefore considering a task complete, verify your work. Use judgment based on what you changed - optimize for fast iteration:\n\n- Check for project-specific verification instructions in project rules files (`AGENTS.md`, or similar)\n- Run relevant verification steps based on the scope of changes (lint, typecheck, build, tests)\n- For isolated functionality, consider a temporary test file to verify behavior, then delete it\n- Self-critique: review changes for edge cases and refine as needed\n- If you cannot find verification commands, ask the user and suggest saving them to a project config file\n\n## Saving learned information\n\nIf you discover useful project information (build commands, test commands, verification steps, user preferences, ...) that isn't already documented:\n- If a rules file exists (`AGENTS.md`, etc.), append to it\n- Otherwise, create `AGENTS.md` in the current directory with the learned information\n\n## Error recovery\n\nWhen encountering errors (failed commands, build failures, test failures):\n- Keep trying different approaches to resolve the issue\n- Search for similar issues in the codebase or documentation\n- Only ask the user for help as a last resort after exhausting reasonable options\n- Exception: Always ask the user for help with authentication issues, project configuration changes, or permission problems\n\n## System Guidance\nYou may receive `<system_guidance>` messages containing hints, reminders, or contextual guidance before you take action. These notes are injected by the system to help you make better decisions. Pay attention to their content but do not acknowledge or respond to them directly—simply incorporate their guidance into your actions.\n\n\n\n# Tool Tips\n\n## Shell\nNEVER invoke `rg`, `grep`, or `find` as shell commands — use the provided search tools instead. They have been optimized for correct permissions and access.\n\n\n## File-related tools\n- read can read images (PNG, JPG, etc) - the contents are presented visually.\n- For Jupyter notebooks (.ipynb files), use notebook_read instead of read.\n- Speculatively read multiple files as a batch when potentially useful.\n- Do NOT create documentation files to describe your changes or plan. Exception: persistent project info files like `AGENTS.md` are allowed.\n\n\n# Safety\n\nIMPORTANT: Assist with defensive security tasks only. Refuse to create, modify, or improve code that may be used maliciously. Do not assist with credential discovery or harvesting, including bulk crawling for SSH keys, browser cookies, or cryptocurrency wallets. Allow security analysis, detection rules, vulnerability explanations, defensive tools, and security documentation.\n\nIMPORTANT: You must NEVER generate or guess URLs for the user unless you are confident that the URLs are for helping the user with programming. You may use URLs provided by the user in their messages or local files.\n\n## Destructive Operations\n\nNEVER perform irreversible destructive operations without explicit user confirmation for that specific action, even if you have permission to run the command. This includes:\n- Deleting or truncating database tables, dropping schemas, bulk-deleting rows\n- `rm -rf`, deleting directories, or removing files you did not just create\n- Force-pushing, rewriting git history, deleting branches, checking out over uncommitted changes, or bypassing commit hooks\n- Sending emails, making payments, or calling APIs with real-world side effects\n\nIf a destructive step is required, STOP and describe exactly what you are about to run and why, then wait for the user. Do not assume a previous approval extends to a new destructive operation. If you realize you have already caused data loss, say so immediately rather than attempting to hide or quietly repair it.\n\n\n\n## Available MCP Servers (for third-party tools)\n\n{\"servers\":[{\"name\":\"fff\",\"description\":\"FFF is a fast file finder with frecency-ranked results (frequent/recent files first, git-dirty files boosted).\\n\\n## Which Tool Should I Use?\\n\\n- **grep**: DEFAULT tool. Searches file CONTENTS -- definitions, usage, patterns. Use when you have a specific name or pattern.\\n- **find_files**: Explores which files/modules exist for a topic. Use when you DON'T have a specific identifier or LOOKING FOR A FILE.\\n- **multi_grep**: OR logic across multiple patterns. Use for case variants (e.g. ['PrepareUpload', 'prepare_upload']), or when you need to search 2+ different identifiers at once.\\n\\n## Core Rules\\n\\n### 1. Search BARE IDENTIFIERS only\\nGrep matches single lines. Search for ONE identifier per query:\\n  + 'InProgressQuote'           -> finds definition + all usages\\n  + 'ActorAuth'                 -> finds enum, struct, all call sites\\n  x 'load.*metadata.*InProgressQuote' -> regex spanning multiple tokens, 0 results\\n  x 'ctx.data::<ActorAuth>'     -> code syntax, too specific, 0 results\\n  x 'struct ActorAuth'          -> adding keywords narrows results, misses enums/traits/type aliases\\n  x 'TODO.*#\\\\d+'               -> complex regex, use simple 'TODO' then filter visually\\n\\n### 2. NEVER use regex unless you truly need alternation\\nPlain text search is faster and more reliable. Regex patterns like `.*`, `\\\\d+`, `\\\\s+` almost always return 0 results because they try to match complex patterns within single lines.\\nIf you need OR logic, use multi_grep with literal patterns instead of regex alternation.\\n\\n### 3. Stop searching after 2 greps -- READ the code\\nAfter 2 grep calls, you have enough file paths. Read the top result to understand the code.\\nDo NOT keep grepping with variations. More greps != better understanding.\\n\\n### 4. Use multi_grep for multiple identifiers\\nWhen you need to find different names (e.g. snake_case + PascalCase, or definition + usage patterns), use ONE multi_grep call instead of sequential greps:\\n  + multi_grep(['ActorAuth', 'PopulatedActorAuth', 'actor_auth'])\\n  x grep 'ActorAuth' -> grep 'PopulatedActorAuth' -> grep 'actor_auth'  (3 calls wasted)\\n\\n## Workflow\\n\\n**Have a specific name?** -> grep the bare identifier.\\n**Need multiple name variants?** -> multi_grep with all variants in one call.\\n**Exploring a topic / finding files?** -> find_files.\\n**Got results?** -> Read the top file. Don't grep again.\\n\\n## Constraint Syntax\\n\\nFor grep: constraints go INLINE, prepended before the search text.\\nFor multi_grep: constraints go in the separate 'constraints' parameter.\\n\\nConstraints MUST match one of these formats:\\n  Extension: '*.rs', '*.{ts,tsx}'\\n  Directory: 'src/', 'quotes/'\\n  Filename: 'schema.rs', 'src/main.rs'\\n  Exclude: '!test/', '!*.spec.ts'\\n\\n! Bare words without extensions are NOT constraints. 'quote TODO' does NOT filter to quote files -- it searches for 'quote TODO' as text.\\n  + 'schema.rs TODO'   -> searches for 'TODO' in files schema.rs\\n  + 'quotes/ TODO'     -> searches for 'TODO' in the quotes/ directory\\n  x 'quote TODO'       -> searches for literal text 'quote TODO', finds nothing\\n\\nPrefer broad constraints:\\n  + '*.rs query'           -> file type\\n  + 'quotes/ query'        -> top-level dir\\n  x 'quotes/storage/db/ query' -> too specific, misses results\\n\\n## Output Format\\n\\ngrep results auto-expand definitions with body context (struct fields, function signatures).\\nThis often provides enough information WITHOUT a follow-up Read call.\\nLines marked with | are definition body context. [def] marks definition files.\\n-> Read suggestions point to the most relevant file -- follow them when you need more context.\\n\\n## Default Exclusions\\n\\nIf results are cluttered with irrelevant files, exclude them:\\n  !tests/ - exclude tests directory\\n  !*.spec.ts - exclude test files\\n  !generated/ - exclude generated code\"},{\"name\":\"playwright\"}]}\n\nIMPORTANT: You MUST call `mcp_list_tools` for a server before calling `mcp_call_tool` on it. This is required to discover the available tools and their correct input schemas. Never guess tool names or arguments — always list tools first.\n","metadata":{"metrics":null,"telemetry":{"source":"sysprompt","operation":"normal"},"created_at":"2026-06-30T09:22:27.862628Z","num_tokens":null,"request_id":null,"finish_reason":null,"is_user_input":null},"message_id":"a855a7ac-eb8d-4584-93f2-783daf93f021"}],"tool_availability":{"BlockList":[{"Name":{"exact":"exit_plan_mode"}}]},"append_system_messages":[]},{"model":null,"source":"Subagent","context":[],"lifetime":{"Unique":"core/read_only_kinds"},"permissions":[[{"Tool":{"Kind":"read"}},"Allow"],[{"Tool":{"Kind":"search"}},"Allow"],[{"Tool":{"Kind":"think"}},"Allow"]],"user_display":[],"footer_messages":[],"set_system_prefix":null,"tool_availability":null,"append_system_messages":[]},{"model":null,"source":{"Session":"System"},"context":[],"lifetime":{"Unique":"core/subagent_profiles"},"permissions":[],"user_display":[],"footer_messages":[],"set_system_prefix":null,"tool_availability":null,"append_system_messages":[{"role":"system","content":"Available subagent profiles for the `run_subagent` tool. Choose the most appropriate profile based on whether the task requires write access:\n- `subagent_explore`: Read-only subagent for codebase exploration, research, and search. Use this when you need to find code, understand architecture, trace dependencies, or answer questions about the codebase. This profile has read-only access (grep, glob, read, web_search) and cannot edit files.\n- `subagent_general`: General-purpose subagent with full tool access (read, write, edit, exec). Use this when the subagent needs to make code changes, run commands with side effects, or perform any task that requires write access. In the foreground it can prompt for tool approval; in the background, unapproved tools are auto-denied.","metadata":{"metrics":null,"telemetry":{"source":"sysprompt","operation":"subagent_profiles"},"created_at":"2026-06-30T09:22:27.865195Z","num_tokens":null,"request_id":null,"finish_reason":null,"is_user_input":null},"message_id":"de29feb5-9afa-4a95-b1a7-74a51d915e63"}]},{"model":null,"source":"Managed","context":[],"lifetime":{"Unique":"workspace/config_protection"},"permissions":[[{"Scope":{"Write":{"glob":"/Users/root1/.config/devin/**/config*.json"}}},"ForceAsk"],[{"Scope":{"Write":{"glob":"/Users/root1/.config/devin/cli/**/config*.json"}}},"ForceAsk"],[{"Scope":{"Write":{"glob":"/Users/root1/.devin/**/config*.json"}}},"ForceAsk"],[{"Scope":{"Write":{"glob":"/Users/root1/.cognition/**/config*.json"}}},"ForceAsk"]],"user_display":[],"footer_messages":[],"set_system_prefix":null,"tool_availability":null,"append_system_messages":[]},{"model":null,"source":"Base","context":[],"lifetime":{"Unique":"workspace/read_permissions"},"permissions":[[{"Scope":{"Read":{"glob":"/Users/root1"}}},"Allow"],[{"Scope":{"Read":{"glob":"/var/folders/d9/mzhyr7lx6xbf236j5ll9v_300000gn/T/DEVIn-overflows-501"}}},"Allow"]],"user_display":[],"footer_messages":[],"set_system_prefix":null,"tool_availability":null,"append_system_messages":[]},{"model":null,"source":"UserOverride","context":[],"lifetime":{"Unique":"workspace/project_override_permissions"},"permissions":[[{"Scope":{"Command":{"matcher":{"Prefix":"brightness"}}}},"Allow"],[{"Scope":{"Command":{"matcher":{"Prefix":"osascript"}}}},"Allow"],[{"Scope":{"Command":{"matcher":{"Prefix":"pkill"}}}},"Allow"]],"user_display":[],"footer_messages":[],"set_system_prefix":null,"tool_availability":null,"append_system_messages":[]},{"model":null,"source":{"Session":"System"},"context":[],"lifetime":{"Unique":"workspace/context"},"permissions":[],"user_display":[],"footer_messages":[],"set_system_prefix":null,"tool_availability":null,"append_system_messages":[]}],"workspace_dirs":null,"hidden":false,"metadata":"{\"total_credit_cost\":0,\"total_acu_cost\":0.0}"},"message_count":20,"messages":[{"message_id":"a855a7ac-eb8d-4584-93f2-783daf93f021","node_id":16,"role":"system","content":"You are Devin, an interactive command line agent from Cognition.\n\nYour job is to use these instructions and the tools available to you to help the user. It is important that you do so earnestly and helpfully, as you are very important to the success of Cognition. Best of luck! We love you. <3\n\nIf the user asks for help, you can check your documentation by invoking the Devin skill (if available). Otherwise, this information may be helpful:\n\n- /help: list commands\n- /bug: report a bug to the Devin CLI developers\n- for support, users can visit https://windsurf.com/support\n\nWhen creating new configuration for this tool — including skills, rules, MCP server configs, or any project settings:\n\n- Always use the `.devin/` directory for NEW configuration (e.g. `.devin/skills/<name>/SKILL.md`, `.devin/config.json`)\n- For global (user-level) configuration, use `~/.config/devin/`\n- Do NOT place new configuration in `.claude/`, `.cursor/`, or other tool-specific directories unless explicitly asked. These are only read for compatibility, not written to.\n- If the `devin-for-terminal` skill is available, ALWAYS invoke it and explore for detailed documentation on configuration format and options\n\nWhen reading or referencing existing skills, always use the actual source path reported by the skill tool — skills may live in `.devin/`, `.agents/`, or other directories.\n\n\n# Modes\n\nThe active mode is how the user would like you to act.\n\n- Normal (default, if not specified): Full autonomy to use all your tools freely. For example: exploring a codebase, writing or editing code, etc.\n- Plan: Explore the codebase, ask the user clarifying questions, and then create a plan for what you're going to do next. Do NOT make changes until you're out of this mode and the user has approved the plan.\n\nAdhere strictly to the constraints of the active mode to avoid frustrating the user!\n\n\n# Style\n\n## Professional Objectivity\n\nPrioritize technical accuracy and truthfulness over validating the user's beliefs. It is best for the user if you honestly apply the same rigorous standards to all ideas and disagree when necessary, even if it may not be what the user wants to hear. Objective guidance and respectful correction are more valuable than false agreement. Whenever there is uncertainty, it's best to investigate to find the truth first rather than instinctively confirming the user's beliefs.\n\n## Tone\n\n- Be concise, direct, and to the point. When running commands, briefly explain what you're doing and why so the user can follow along.\n- Remember that your output will be displayed in a command line interface. Your responses can use Github-flavored markdown for formatting, and will be rendered in a monospace font using the CommonMark specification.\n- Output text to communicate with the user; all text you output outside of tool use is displayed to the user. Only use tools to complete tasks. Never use tools like exec or code comments as means to communicate with the user during the session.\n- If you cannot or will not help the user with something, please do not say why or what it could lead to, since this comes across as preachy and annoying. Please offer helpful alternatives if possible, and otherwise keep your response to 1-2 sentences.\n- Only use emojis if the user explicitly requests it. Avoid using emojis in all communication unless asked.\n- If the user asks about timelines or estimated completion times for your work, do not give them concrete estimates as you are not able to accurately predict how long it will take you to achieve a task. Instead just say that you will do your best to complete the task as soon as possible.\n- Avoid guessing. You should verify the real state of the world with your tools before answering the user's questions.\n\n<example>\nuser: What command should I run to watch files in the current directory and rebuild?\nassistant: [use the exec tool to run `ls` and list the files in the current directory, then read docs/commands in the relevant file to find out how to watch files]\nassistant: npm run dev\n</example>\n\n<example>\nuser: what files are in the directory src/?\nassistant: [runs ls and sees foo.c, bar.c, baz.c]\nassistant: foo.c, bar.c, baz.c\nuser: which file contains the implementation of Foo?\nassistant: [reads foo.c]\nassistant: src/foo.c contains `struct Foo`, which implements [...]\n</example>\n\n<example>\nuser: can you write tests for this feature\nassistant: [uses grep and glob search tools to find where similar tests are defined, uses concurrent read file tool use blocks in one tool call to read relevant files at the same time, uses edit file tool to write new tests]\n</example>\n\n## Proactiveness\n\nYou are allowed to be proactive, but only when the user asks you to do something. You should strive to strike a balance between:\n\n1. Doing the right thing when asked, including taking actions and follow-up actions\n\n2. Not surprising the user with actions you take without asking\n\nFor example, if the user asks you how to approach something, you should do your best to explore and answer their question first, but not jump to implementation just yet.\n\n## Handling ambiguous requests\n\nWhen a user request is unclear:\n- First attempt to interpret the request using available context\n- Search the codebase for related code, patterns, or documentation that clarifies intent. Also consider searching the web.\n- If still uncertain after investigation, ask a focused clarifying question\n\n## File references\n\nWhen your output text references specific files or code snippets, use the `<ref_file ... />` and `<ref_snippet ... />` self-closing XML tags to create clickable citations. These tags allow the user to view the referenced code directly in the conversation.\n\nCitation format:\n- `<ref_file file=\"/absolute/path/to/file\" />` - Reference an entire file\n- `<ref_snippet file=\"/absolute/path/to/file\" lines=\"start-end\" />` - Reference specific lines in a file\n\n<example>\nuser: Where are errors from the client handled?\nassistant: Clients are marked as failed in the `connectToServer` function. <ref_snippet file=\"/home/ubuntu/repos/project/src/services/process.ts\" lines=\"710-715\" />\n</example>\n\n<example>\nuser: Can you show me the config file?\nassistant: Here's the configuration file: <ref_file file=\"/home/ubuntu/repos/project/config.json\" />\n</example>\n\n## Tool usage policy\n\n- When webfetch returns a redirect, immediately follow it with a new request.\n- When making multiple edits to the same file or related files and you already know what changes are needed, batch them together.\n\nWhen a tool call produces output that is too long, the output will be truncated and the remaining content will be written to a file. You will see a `<truncation_notice>` tag containing the path to the overflow file. You are responsible for reading this file if you need the full output.\n\n\n# Programming\n\nSince you live in the user's terminal, a very common use-case you will get is writing code. Fortunately, you've been extensively trained in software engineering and are well-equipped to help them out!\n\n## Existing Conventions\n\nWhen making changes to files, first understand the codebase's code conventions. Explore dependencies, references, and related system to understand the codebase's patterns and abstractions. Mimic code style, use existing libraries and utilities, and follow existing patterns.\n- NEVER assume that a given library is available, even if it is well known. Whenever you write code that uses a library or framework, first check that this codebase already uses the given library. For example, you might look at neighboring files, or check the package.json (or cargo.toml, and so on depending on the language). If you're adding a dependency prefer running the package manager command (e.g. npm add or cargo add) instead of editing the file.\n- When adding a new dependency, strongly prefer a version published at least 7 days ago. Newly published versions have not been vetted and a non-trivial fraction of supply chain attacks are caught and yanked within the first few days. Avoid floating ranges (`latest`, `*`, unbounded `>=`) that auto-resolve to brand-new releases.\n- When you create a new component, first look at existing components to see how they're written; then consider framework choice, naming conventions, typing, and other conventions.\n- When you edit a piece of code, first look at the code's surrounding context (especially its imports) to understand the code's choice of frameworks and libraries. Then consider how to make the given change in a way that is most idiomatic.\n- Always follow security best practices. Never introduce code that exposes or logs secrets and keys. Never commit secrets or keys to the repository. Never modify repository security policies or compliance controls (e.g. `minimumReleaseAge`, `minimumReleaseAgeExclude`, branch protection configs, `.npmrc` security settings) to work around CI or build failures — escalate to the user instead. Unless otherwise specified (even if the task seems silly), assume the code is for a real production task.\n\n## Code style\n\n- IMPORTANT: Do NOT add or remove comments unless asked! If you find that you've accidentally deleted an existing comment, be sure to put it back.\n- Default to writing compact code – collapse duplicate else branches, avoid unnecessary nesting, and share abstractions.\n- Follow idiomatic conventions for the language you're writing.\n- Avoid excessive & verbose error handling in your code. Errors should be handled, but not every line needs to be try/catched. Think about the right error boundaries (and look at existing code for error handling style)\n\n## Debugging\n\nWhen debugging issues:\n- First reproduce the problem reliably\n- Trace the code path to understand the flow\n- Add targeted logging or print statements to isolate the issue\n- Identify the root cause before attempting fixes\n- Verify the fix addresses the root cause, not just symptoms\n\n## Workflow\n\nYou should generally prefer to implement new features or fix bugs as follows...\n\n1. If the project has test infrastructure, write a failing test to show the bug\n2. Fix the bug\n3. Ensure that the test now passes\n\nWorking this way makes it easier to tell if you've actually fixed the bug, and saves you from needing to verify later.\n\n## Git\n\n### Creating commits\n1. Run in parallel: `git status`, `git diff`, `git log` (to match commit style)\n2. Draft a concise commit message focusing on \"why\" not \"what\". Check for sensitive info.\n3. Stage files and commit with this format:\n```\ngit commit -m \"$(cat <<'EOF'\nCommit message here.\n\nGenerated with [Devin](https://devin.ai)\n\nCo-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>\nEOF\n)\"\n```\n4. If pre-commit hooks modify files and the commit fails, stage the modified files and retry the commit.\n\n### Creating pull requests\nUse `gh` for all GitHub operations. Run in parallel: `git status`, `git diff`, `git log`, `git diff main...HEAD`\n\nReview ALL commits (not just latest), then create PR:\n```\ngh pr create --title \"title\" --body \"$(cat <<'EOF'\n## Summary\n<bullet points>\n\n#### Test plan\n<checklist>\n\nGenerated with [Devin](https://devin.ai)\nEOF\n)\"\n```\n\n### Git rules\n- NEVER update git config\n- NEVER use `-i` flags (interactive mode not supported)\n- DO NOT push unless explicitly asked\n- DO NOT commit if no changes exist\n\n\n# Task Management\n\nYou have access to the todo_write tool to help you manage and plan tasks. Use this tool VERY frequently to ensure that you are tracking your tasks and giving the user visibility into your progress.\nThis tool is also EXTREMELY helpful for planning tasks, and for breaking down larger complex tasks into smaller steps. If you do not use this tool when planning, you may forget to do important tasks - and that is unacceptable.\n\nIt is critical that you mark todos as completed as soon as you are done with a task. Do not batch up multiple tasks before marking them as completed.\n\nExamples:\n\n<example>\nuser: Run the build and fix any type errors\nassistant: I'm going to use the todo_write tool to write the following items to the todo list:\n- Run the build\n- Fix any type errors\n\nI'm now going to run the build using exec.\n\nLooks like I found 10 type errors. I'm going to use the todo_write tool to write 10 items to the todo list.\n\nmarking the first todo as in_progress\n\nLet me start working on the first item...\n\nThe first item has been fixed, let me mark the first todo as completed, and move on to the second item...\n..\n..\n</example>\n\nIn the above example, the assistant completes all the tasks, including the 10 error fixes and running the build and fixing all errors.\n\n<example>\nuser: Help me write a new feature that allows users to track their usage metrics and export them to various formats\nassistant: I'll help you implement a usage metrics tracking and export feature. Let me first use the todo_write tool to plan this task.\nAdding the following todos to the todo list:\n1. Research existing metrics tracking in the codebase\n2. Design the metrics collection system\n3. Implement core metrics tracking functionality\n4. Create export functionality for different formats\n\nLet me start by researching the existing codebase to understand what metrics we might already be tracking and how we can build on that.\n\nI'm going to search for any existing metrics or telemetry code in the project.\n\nI've found some existing telemetry code. Let me mark the first todo as in_progress and start designing our metrics tracking system based on what I've learned...\n\n[Assistant continues implementing the feature step by step, marking todos as in_progress and completed as they go]\n</example>\n\nUsers may configure 'hooks', shell commands that execute in response to events like tool calls, in settings. Treat feedback from hooks, including <user-prompt-submit-hook>, as coming from the user. If you get blocked by a hook, determine if you can adjust your actions in response to the blocked message. If not, ask the user to check their hooks configuration.\n\n\n## Completing Tasks\n\nThe user will primarily request you perform software engineering tasks. This includes solving bugs, adding new functionality, refactoring code, explaining code, and more. For these tasks the following steps are recommended:\n- Use the todo_write tool to plan the task if required\n- Use the available search tools to understand the codebase and the user's query. You are encouraged to use the search tools extensively both in parallel and sequentially.\n- Before making changes, thoroughly explore the codebase to understand the architecture, patterns, and related systems. Read relevant files, trace dependencies, and understand how components interact.\n- Implement the solution using all tools available to you\n\n## Verification\n\nBefore considering a task complete, verify your work. Use judgment based on what you changed - optimize for fast iteration:\n\n- Check for project-specific verification instructions in project rules files (`AGENTS.md`, or similar)\n- Run relevant verification steps based on the scope of changes (lint, typecheck, build, tests)\n- For isolated functionality, consider a temporary test file to verify behavior, then delete it\n- Self-critique: review changes for edge cases and refine as needed\n- If you cannot find verification commands, ask the user and suggest saving them to a project config file\n\n## Saving learned information\n\nIf you discover useful project information (build commands, test commands, verification steps, user preferences, ...) that isn't already documented:\n- If a rules file exists (`AGENTS.md`, etc.), append to it\n- Otherwise, create `AGENTS.md` in the current directory with the learned information\n\n## Error recovery\n\nWhen encountering errors (failed commands, build failures, test failures):\n- Keep trying different approaches to resolve the issue\n- Search for similar issues in the codebase or documentation\n- Only ask the user for help as a last resort after exhausting reasonable options\n- Exception: Always ask the user for help with authentication issues, project configuration changes, or permission problems\n\n## System Guidance\nYou may receive `<system_guidance>` messages containing hints, reminders, or contextual guidance before you take action. These notes are injected by the system to help you make better decisions. Pay attention to their content but do not acknowledge or respond to them directly—simply incorporate their guidance into your actions.\n\n\n\n# Tool Tips\n\n## Shell\nNEVER invoke `rg`, `grep`, or `find` as shell commands — use the provided search tools instead. They have been optimized for correct permissions and access.\n\n\n## File-related tools\n- read can read images (PNG, JPG, etc) - the contents are presented visually.\n- For Jupyter notebooks (.ipynb files), use notebook_read instead of read.\n- Speculatively read multiple files as a batch when potentially useful.\n- Do NOT create documentation files to describe your changes or plan. Exception: persistent project info files like `AGENTS.md` are allowed.\n\n\n# Safety\n\nIMPORTANT: Assist with defensive security tasks only. Refuse to create, modify, or improve code that may be used maliciously. Do not assist with credential discovery or harvesting, including bulk crawling for SSH keys, browser cookies, or cryptocurrency wallets. Allow security analysis, detection rules, vulnerability explanations, defensive tools, and security documentation.\n\nIMPORTANT: You must NEVER generate or guess URLs for the user unless you are confident that the URLs are for helping the user with programming. You may use URLs provided by the user in their messages or local files.\n\n## Destructive Operations\n\nNEVER perform irreversible destructive operations without explicit user confirmation for that specific action, even if you have permission to run the command. This includes:\n- Deleting or truncating database tables, dropping schemas, bulk-deleting rows\n- `rm -rf`, deleting directories, or removing files you did not just create\n- Force-pushing, rewriting git history, deleting branches, checking out over uncommitted changes, or bypassing commit hooks\n- Sending emails, making payments, or calling APIs with real-world side effects\n\nIf a destructive step is required, STOP and describe exactly what you are about to run and why, then wait for the user. Do not assume a previous approval extends to a new destructive operation. If you realize you have already caused data loss, say so immediately rather than attempting to hide or quietly repair it.\n\n\n\n## Available MCP Servers (for third-party tools)\n\n{\"servers\":[{\"name\":\"fff\",\"description\":\"FFF is a fast file finder with frecency-ranked results (frequent/recent files first, git-dirty files boosted).\\n\\n## Which Tool Should I Use?\\n\\n- **grep**: DEFAULT tool. Searches file CONTENTS -- definitions, usage, patterns. Use when you have a specific name or pattern.\\n- **find_files**: Explores which files/modules exist for a topic. Use when you DON'T have a specific identifier or LOOKING FOR A FILE.\\n- **multi_grep**: OR logic across multiple patterns. Use for case variants (e.g. ['PrepareUpload', 'prepare_upload']), or when you need to search 2+ different identifiers at once.\\n\\n## Core Rules\\n\\n### 1. Search BARE IDENTIFIERS only\\nGrep matches single lines. Search for ONE identifier per query:\\n  + 'InProgressQuote'           -> finds definition + all usages\\n  + 'ActorAuth'                 -> finds enum, struct, all call sites\\n  x 'load.*metadata.*InProgressQuote' -> regex spanning multiple tokens, 0 results\\n  x 'ctx.data::<ActorAuth>'     -> code syntax, too specific, 0 results\\n  x 'struct ActorAuth'          -> adding keywords narrows results, misses enums/traits/type aliases\\n  x 'TODO.*#\\\\d+'               -> complex regex, use simple 'TODO' then filter visually\\n\\n### 2. NEVER use regex unless you truly need alternation\\nPlain text search is faster and more reliable. Regex patterns like `.*`, `\\\\d+`, `\\\\s+` almost always return 0 results because they try to match complex patterns within single lines.\\nIf you need OR logic, use multi_grep with literal patterns instead of regex alternation.\\n\\n### 3. Stop searching after 2 greps -- READ the code\\nAfter 2 grep calls, you have enough file paths. Read the top result to understand the code.\\nDo NOT keep grepping with variations. More greps != better understanding.\\n\\n### 4. Use multi_grep for multiple identifiers\\nWhen you need to find different names (e.g. snake_case + PascalCase, or definition + usage patterns), use ONE multi_grep call instead of sequential greps:\\n  + multi_grep(['ActorAuth', 'PopulatedActorAuth', 'actor_auth'])\\n  x grep 'ActorAuth' -> grep 'PopulatedActorAuth' -> grep 'actor_auth'  (3 calls wasted)\\n\\n## Workflow\\n\\n**Have a specific name?** -> grep the bare identifier.\\n**Need multiple name variants?** -> multi_grep with all variants in one call.\\n**Exploring a topic / finding files?** -> find_files.\\n**Got results?** -> Read the top file. Don't grep again.\\n\\n## Constraint Syntax\\n\\nFor grep: constraints go INLINE, prepended before the search text.\\nFor multi_grep: constraints go in the separate 'constraints' parameter.\\n\\nConstraints MUST match one of these formats:\\n  Extension: '*.rs', '*.{ts,tsx}'\\n  Directory: 'src/', 'quotes/'\\n  Filename: 'schema.rs', 'src/main.rs'\\n  Exclude: '!test/', '!*.spec.ts'\\n\\n! Bare words without extensions are NOT constraints. 'quote TODO' does NOT filter to quote files -- it searches for 'quote TODO' as text.\\n  + 'schema.rs TODO'   -> searches for 'TODO' in files schema.rs\\n  + 'quotes/ TODO'     -> searches for 'TODO' in the quotes/ directory\\n  x 'quote TODO'       -> searches for literal text 'quote TODO', finds nothing\\n\\nPrefer broad constraints:\\n  + '*.rs query'           -> file type\\n  + 'quotes/ query'        -> top-level dir\\n  x 'quotes/storage/db/ query' -> too specific, misses results\\n\\n## Output Format\\n\\ngrep results auto-expand definitions with body context (struct fields, function signatures).\\nThis often provides enough information WITHOUT a follow-up Read call.\\nLines marked with | are definition body context. [def] marks definition files.\\n-> Read suggestions point to the most relevant file -- follow them when you need more context.\\n\\n## Default Exclusions\\n\\nIf results are cluttered with irrelevant files, exclude them:\\n  !tests/ - exclude tests directory\\n  !*.spec.ts - exclude test files\\n  !generated/ - exclude generated code\"},{\"name\":\"playwright\"}]}\n\nIMPORTANT: You MUST call `mcp_list_tools` for a server before calling `mcp_call_tool` on it. This is required to discover the available tools and their correct input schemas. Never guess tool names or arguments — always list tools first.\n","created_at":"2026-06-30T09:22:27.862628Z","finish_reason":null,"metrics":null},{"message_id":"de29feb5-9afa-4a95-b1a7-74a51d915e63","node_id":17,"role":"system","content":"Available subagent profiles for the `run_subagent` tool. Choose the most appropriate profile based on whether the task requires write access:\n- `subagent_explore`: Read-only subagent for codebase exploration, research, and search. Use this when you need to find code, understand architecture, trace dependencies, or answer questions about the codebase. This profile has read-only access (grep, glob, read, web_search) and cannot edit files.\n- `subagent_general`: General-purpose subagent with full tool access (read, write, edit, exec). Use this when the subagent needs to make code changes, run commands with side effects, or perform any task that requires write access. In the foreground it can prompt for tool approval; in the background, unapproved tools are auto-denied.","created_at":"2026-06-30T09:22:27.865195Z","finish_reason":null,"metrics":null},{"message_id":"a7af5f35-127e-4078-aed5-ed56101f56ac","node_id":18,"role":"system","content":"You are powered by GLM-5.2 High.","created_at":"2026-06-30T09:22:27.864019Z","finish_reason":null,"metrics":null},{"message_id":"04826246-6067-4d6b-b39b-9bd152f74e28","node_id":19,"role":"system","content":"<system_info>\nThe following information is automatically generated context about your current environment.\nCurrent workspace directories:\n  /Users/root1 (cwd)\n\nPlatform: macos\nOS Version: Darwin 25.6.0\nToday's date: Tuesday, 2026-06-30\n\n</system_info>","created_at":"2026-06-30T09:22:27.405133Z","finish_reason":null,"metrics":null},{"message_id":"200a38fd-4b4d-494c-b462-f289246a844b","node_id":20,"role":"system","content":"<rules type=\"always-on\">\n<rule name=\"AGENTS\" path=\"/Users/root1/AGENTS.md\">\n# Agent Preferences\n\n- If I ever paste in a YouTube link, use yt-dlp to summarize the video.\n- get the autogenerrated captions to do this\n- for testing that involves urls, start with example.com rather than about:blank\n- For tasks that may benefit from computer use (controlling macOS apps, windows, clicking, typing, etc.), use the background-computer-use skill to control local macOS apps through the BackgroundComputerUse API\n- Secrets/tokens live in `~/.env` (e.g. `HF_TOKEN` for Hugging Face). Source it before use: `set -a; . ~/.env; set +a`\n\n## File search via fff MCP\n\nFor any file search or grep in the current git-indexed project directory, prefer the **fff** MCP tools\n(`mcp__fff__grep`, `mcp__fff__find_files`, `mcp__fff__multi_grep`) over the built-in grep/glob tools.\nfff is frecency-ranked, git-aware, and more token-efficient.\n\nRules the fff server enforces (follow them to avoid 0-result queries):\n- Search BARE IDENTIFIERS only — one identifier per `grep` query. No `load.*metadata.*Foo` style regex.\n- Don't use regex unless you truly need alternation; `.*`, `\\d+`, `\\s+` almost always return 0 results.\n- After 2 grep calls, stop and READ the top result instead of grepping with more variations.\n- Use `multi_grep` for OR logic across multiple identifiers (e.g. snake_case + PascalCase variants) in one call.\n- Have a specific name → `grep`. Exploring a topic / finding files → `find_files`.\n\nThe `fff-mcp` binary lives at `/Users/root1/.local/bin/fff-mcp` and is registered at user scope\nin `~/.config/devin/config.json`. It refuses to run in `$HOME` or `/` — it must be launched from a\nproject directory (Devin does this automatically based on cwd). Update with:\n`curl -fsSL https://raw.githubusercontent.com/dmtrKovalenko/fff.nvim/main/install-mcp.sh | bash`\n\n## X/Twitter scraping via logged-in browser session\n\nWhen I need to scrape X/Twitter data (following, followers, tweets, user info, etc.),\nthe cleanest path is to use the **Playwright MCP** browser session with my own logged-in\nx.com account, rather than spinning up twscrape's account-pool flow. twscrape needs the\n`auth_token` HttpOnly cookie which JS cannot read from `document.cookie`; the browser\nsession attaches all cookies automatically.\n\n### Flow\n1. `mcp_list_tools` on the `playwright` server, then `browser_navigate` to `https://x.com`.\n2. If not logged in, ask me to log in manually in the opened window (don't handle my password).\n3. Once on `https://x.com/home`, read `ct0` from `document.cookie`:\n   `document.cookie.match(/ct0=([^;]+)/)[1]`\n4. Call X's GraphQL endpoints directly via `fetch()` inside `browser_evaluate`. Required headers:\n   - `authorization: Bearer AAAAAAAAAAAAAAAAAAAAANRILgAAAAAAnNwIzUejRCOuH5E6I8xnZz4puTs%3D1Zv7ttfk8LF81IUq16cHjhLTvJu4FA33AGWWjCpTnA` (the public web-app bearer token)\n   - `x-csrf-token: <ct0>`\n   - `x-twitter-auth-type: OAuth2Session`\n   - `x-twitter-active-user: yes`\n   - `content-type: application/json`\n5. Paginate timelines by reading `content.cursorType === \"Bottom\"` entries and passing\n   the value back as `variables.cursor` until it stops changing.\n\n### Key endpoints (queryId/OperationName)\n- `UserByScreenName` → `681MIj51w00Aj6dY0GXnHw`  (resolve @handle → numeric rest_id)\n- `Following`        → `OLm4oHZBfqWx8jbcEhWoFw`\n- `Followers`        → `9jsVJ9l2uXUIKslHvJqIhw`\n- `UserTweets`       → `RyDU3I9VJtPF-Pnl6vrRlw`\n- `SearchTimeline`   → `yIphfmxUO-hddQHKIOk9tA`\n- `TweetDetail`      → `meGUdoK_ryVZ0daBK-HJ2g`\nURL pattern: `https://x.com/i/api/graphql/<queryId>/<OpName>?variables=<enc>&features=<enc>`\n\n### Response schema notes (current X web build)\n- User objects now put `screen_name` / `name` under `core`, NOT `legacy.screen_name`.\n  twscrape's parser still reads `legacy.screen_name` and returns empty — needs updating.\n- The user `id` field is base64-encoded like `VXNlcjoxNDYwMjgzOTI1` (= `User:1460283925`).\n  Decode with `atob(u.id).split(':')[1]` to get the numeric rest_id. `u.rest_id` may also\n  be present directly.\n- `is_blue_verified` is the verified flag. `legacy.followers_count`, `legacy.description`\n  still exist under `legacy`.\n- Filter timeline entries by `content.entryType === \"TimelineTimelineItem\"` and skip\n  `cursor-`, `messageprompt-`, `module-`, `who-to-follow-` entryIds.\n\n### Features dict\nUse the full `GQL_FEATURES` block from twscrape's `api.py` — without it X returns\n`(336) The following features cannot be null`. Pass it URL-encoded as the `features` param.\n\n### Where things live\n- Output CSV:  `~/Downloads/utilities/sdand_following.csv`  (1613 rows: #, id, screen_name, name, verified, followers, bio)\n- Output JSON: `~/Downloads/utilities/sdand_following_final.json` (double-encoded JSON string; parse with `json.loads(json.loads(raw))`)\n- twscrape repo was cloned to `~/Downloads/utilities/twscrape/` for reference, then deleted after the flow was reverse-engineered. Re-clone from https://github.com/vladkens/twscrape.git if needed.\n\n## Fast Whisper transcription on Modal (A10G)\n\nFor transcribing long-form audio/video (interviews, podcasts, X/Twitter videos), use the\nutility at `~/Downloads/utilities/whisper_x/whisper_transcribe.py`. It does the full\npipeline: URL → yt-dlp download → ffmpeg audio extract → Modal volume upload →\nfaster-whisper on A10G → JSON + TXT output. Validated at **2.3 min wall clock for 65 min\nof audio** (no caching at any layer).\n\n### Usage\nShell alias (defined in `~/.zshrc`): `whisper`\n```bash\n# Transcribe an X/Twitter video (picks first playlist item)\nwhisper \"https://x.com/.../status/123\"\n\n# Pick a specific playlist item, use a smaller model\nwhisper \"https://x.com/...\" --playlist-item 2 --model-size medium\n\n# Transcribe a local audio file\nwhisper /path/to/audio.mp3 --name my-podcast\n\n# Custom output dir + keep downloaded source\nwhisper \"https://...\" --outdir ./transcripts --keep-source\n```\nTranscript text goes to stdout (pipe with `| pbcopy`); structured JSON + readable TXT\nsaved to `<outdir>/<name>.json` and `<outdir>/<name>.txt`.\n\n### Key optimizations (vs naive T4 run that took 11.7 min)\n- **A10G GPU** (~8x fp16 throughput vs T4; Modal ~$0.60/hr vs ~$0.16/hr — pennies for short jobs)\n- **`BatchedInferencePipeline`** with `batch_size=16` — batches encoder/decoder across chunks (2-4x)\n- **`beam_size=1`** (greedy) — ~2x faster, negligible WER increase for conversational speech\n- **`vad_filter=True`** — skips silence segments\n- **`compute_type=\"float16\"`** — halves memory bandwidth\n- **No caching**: `force_build=True` on apt/pip steps + unique `download_root` per run forces\n  fresh image rebuild + fresh HF model download every time\n\n### Pinned versions (must match)\n- `faster-whisper==1.1.1` (provides `BatchedInferencePipeline`)\n- `ctranslate2==4.8.0`\n- Base image: `nvidia/cuda:12.6.3-cudnn-runtime-ubuntu22.04` (provides `libcublas.so.12`;\n  `debian_slim` fails with `RuntimeError: Library libcublas.so.12 is not found`)\n\n### Audio prep (done automatically by the utility)\n```bash\nffmpeg -y -i input.mp4 -vn -ac 1 -ar 16000 -c:a aac -b:a 64k audio.m4a\n```\nMono 16kHz 64kbps AAC — a 65-min video (151 MB stream) becomes ~35 MB audio.\n\n### X/Twitter download notes\n- Tweet URLs can contain **playlists** (multiple videos). Use `--playlist-item N` to pick one.\n- Always use `-f bestaudio/best` to avoid downloading multi-GB high-bitrate video streams.\n- A 65-min interview's video variant can be 2.8+ GB; audio-only is ~63 MB (128 kbps).\n\n### Where things live\n- Utility: `~/Downloads/utilities/whisper_x/whisper_transcribe.py`\n- Strategy doc: `~/Downloads/utilities/whisper_x/STRATEGY.md` (full optimization breakdown)\n- Modal app (standalone): `~/Downloads/utilities/whisper_x/transcribe_fast.py`\n- Modal volume: `whisper-audio` (created automatically; holds uploaded audio files)\n- Modal profile: `aidenhuang-personal` (workspace with GPU access)\n\n</rule>\n\n<rule name=\"global_rules\" path=\"/Users/root1/.codeium/windsurf/memories/global_rules.md\">\n\n</rule>\n</rules>","created_at":"2026-06-30T09:22:27.873517Z","finish_reason":null,"metrics":null},{"message_id":"a198b39c-0ddc-4beb-bc93-19ac27fd2870","node_id":21,"role":"user","content":"https://www.youtube.com/watch?v=gtNz4UKNWzE&pp=ugUEEgJlbg%3D%3D then research who this guy is","created_at":"2026-06-30T09:22:32.452866Z","finish_reason":null,"metrics":null},{"message_id":"e3fec987-39a1-47bd-9430-9ddde37d392d","node_id":22,"role":"system","content":"<available_skills>\nThe following skills can be invoked using the `skill` tool. When a built-in skill clearly matches the user's request, invoke it immediately at the start of the session.\n\n- **background-computer-use**: Launch and use the local BackgroundComputerUse macOS runtime through its self-documenting loopback API. Use when Codex needs to control local macOS apps or windows, inspect screenshots and Accessibility state, click/type/scroll/press keys, use the visible cursor, or help install/start the BackgroundComputerUse API from a skill. (source: /Users/root1/.devin/skills/background-computer-use/SKILL.md)\n- **devin-for-terminal**: Look up Devin CLI documentation (skills, extensibility, configuration, commands, models, troubleshooting) (source: /Users/root1/.local/share/devin/cli/_versions/2026.8.18/share/devin/docs)\n- **declarative-repo-setup**: Generate and verify a working environment.yaml (Devin snapshot-setup blueprint) for a repo (source: builtin:drs)\n</available_skills>","created_at":"2026-06-30T09:22:32.455383Z","finish_reason":null,"metrics":null},{"message_id":"87237a31-1746-42bf-beb0-8431ee3b80df","node_id":24,"role":"assistant","content":"I'll summarize the YouTube video using yt-dlp to get the auto-generated captions, then research who the person is.","tool_calls":[{"id":"chatcmpl-tool-930f03ee5c2badf7","name":"exec","arguments":{"command":"cd /tmp && yt-dlp --skip-download --write-auto-sub --sub-lang en --sub-format vtt -o \"%(title)s.%(ext)s\" \"https://www.youtube.com/watch?v=gtNz4UKNWzE\" 2>&1 | tail -30"}},{"id":"chatcmpl-tool-95695ae9241e104b","name":"exec","arguments":{"command":"cd /tmp && yt-dlp --skip-download --print \"title:%(title)s\" --print \"uploader:%(uploader)s\" --print \"channel:%(channel)s\" --print \"duration:%(duration)s\" --print \"description:%(description)s\" \"https://www.youtube.com/watch?v=gtNz4UKNWzE\" 2>&1 | head -50"}}],"thinking":"The user pasted a YouTube link and wants me to summarize the video using yt-dlp (per AGENTS.md), then research who the person is.\n\nLet me start by using yt-dlp to get the auto-generated captions and video info.","created_at":"2026-06-30T09:22:36.862270Z","finish_reason":"tool_calls","metrics":{"ttft_ms":1308,"total_time_ms":4373,"input_tokens":15451,"output_tokens":234,"cache_read_tokens":204,"cache_creation_tokens":null,"tpot_ms":13.098290598290598,"tokens_per_sec":76.34584013050572}},{"message_id":"e8a41952-ac94-473f-afbd-f3ac5d847b31","node_id":25,"role":"tool","content":"Output from command in shell ef7b19:\nWARNING: Your yt-dlp version (2025.12.08) is older than 90 days!\n         It is strongly recommended to always use the latest version.\n         You installed yt-dlp with pip or using the wheel from PyPi; Use that to update.\n         To suppress this warning, add --no-update to your command/config.\n[youtube] Extracting URL: https://www.youtube.com/watch?v=gtNz4UKNWzE\n[youtube] gtNz4UKNWzE: Downloading webpage\n[youtube] gtNz4UKNWzE: Downloading tv client config\n[youtube] gtNz4UKNWzE: Downloading player 7a37f05b-main\n[youtube] gtNz4UKNWzE: Downloading tv player API JSON\n[youtube] gtNz4UKNWzE: Downloading android sdkless player API JSON\n[youtube] [jsc:deno] Solving JS challenges using deno\nWARNING: [youtube] [jsc] Remote components challenge solver script (deno) and NPM package (deno) were skipped. These may be required to solve JS challenges. You can enable these downloads with  --remote-components ejs:github  (recommended) or  --remote-components ejs:npm , respectively. For more information and alternatives, refer to  https://github.com/yt-dlp/yt-dlp/wiki/EJS\nWARNING: [youtube] gtNz4UKNWzE: n challenge solving failed: Some formats may be missing. Ensure you have a supported JavaScript runtime and challenge solver script distribution installed. Review any warnings presented before this message. For more details, refer to  https://github.com/yt-dlp/yt-dlp/wiki/EJS\n[info] gtNz4UKNWzE: Downloading subtitles: en\n[info] gtNz4UKNWzE: Downloading 1 format(s): 139-20\n[info] Writing video subtitles to: My Ultimate Luxury Tech Everyday Carry 2026.en.vtt\n[download] Destination: My Ultimate Luxury Tech Everyday Carry 2026.en.vtt\n\r[download]    1.00KiB at  Unknown B/s (00:00:00)\r[download]    3.00KiB at  Unknown B/s (00:00:00)\r[download]    7.00KiB at  Unknown B/s (00:00:00)\r[download]   15.00KiB at    6.99MiB/s (00:00:00)\r[download]   31.00KiB at    2.14MiB/s (00:00:00)\r[download]   63.00KiB at    3.08MiB/s (00:00:00)\r[download]  127.00KiB at    3.62MiB/s (00:00:00)\r[download]  226.18KiB at    4.96MiB/s (00:00:00)\r[download] 100% of  226.18KiB in 00:00:00 at 1.52MiB/s\n\nExit code: 0","created_at":"2026-06-30T09:22:44.851882Z","finish_reason":null,"metrics":null},{"message_id":"ac63912c-7c3a-4a44-a6b1-58e6c27f1b9f","node_id":26,"role":"tool","content":"Output from command in shell 19f749:\nWARNING: Your yt-dlp version (2025.12.08) is older than 90 days!\n         It is strongly recommended to always use the latest version.\n         You installed yt-dlp with pip or using the wheel from PyPi; Use that to update.\n         To suppress this warning, add --no-update to your command/config.\nWARNING: [youtube] [jsc] Remote components challenge solver script (deno) and NPM package (deno) were skipped. These may be required to solve JS challenges. You can enable these downloads with  --remote-components ejs:github  (recommended) or  --remote-components ejs:npm , respectively. For more information and alternatives, refer to  https://github.com/yt-dlp/yt-dlp/wiki/EJS\nWARNING: [youtube] gtNz4UKNWzE: n challenge solving failed: Some formats may be missing. Ensure you have a supported JavaScript runtime and challenge solver script distribution installed. Review any warnings presented before this message. For more details, refer to  https://github.com/yt-dlp/yt-dlp/wiki/EJS\ntitle:My Ultimate Luxury Tech Everyday Carry 2026\nuploader:Shevon Salmon\nchannel:Shevon Salmon\nduration:1470\ndescription:In today's video I will show you my current luxury tech EDC for 2026.\n\nBuy on Anker soundcore official web: https://soundcore.tech/D120304_LDP_launch_ShevonSalmon_9_708207\n\nBuy Liberty 5 Pro on Amazon: https://soundcore.tech/D1203_product_launch_ShevonSalmon_4_765772\n\nBuy Liberty 5 Pro Max on Amazon: https://soundcore.tech/D1204_product_launch_ShevonSalmon_4_894536\nBuy on Bestbuy: https://www.bestbuy.com/product/anker-soundcore-liberty-5-pro-max-noise-cancelling-earbuds-with-ai-note-taker-case-black/JJ858RS8GQ\n\n\n\nGet my LUTs, Presets & SFX here: https://shevonsalmon.gumroad.com/l/s7onLUTs\n\nRest of products:\nGRAMS28 x MV Agusta 151 Stealth Backpack: https://geni.us/SrpzXg\nSony FX3: https://geni.us/HDx5Ukg\nSony A7IV: https://geni.us/HR5UcE\nSony 24-70mm f/2.8 G Master: https://geni.us/iais2qZ\nTamron 17-28mm: https://geni.us/qYikkt\nMacBook Pro 14\" M5 Max: https://geni.us/2hlJQu\n11” iPad Pro M4: https://geni.us/9jBth\nAnker Power Bank 25,000mAh: https://geni.us/jYBBR\nSamsung Galaxy S26 Ultra: https://geni.us/MptDJvB\niPhone 17 Pro Max: https://geni.us/RKc1Qa1\nGoyard Saint-Sulpice Card Holder (Grey): https://geni.us/77JBe\nOrbitkey: https://geni.us/IWAh\nYubiKey: https://geni.us/Bx176\nCarmex Lip Balm Cherry: https://geni.us/SnU60uX\nUnboxing Knife \nRolex Cosmograph Daytona Oysterflex: https://geni.us/Nf86i\nLoewe Esencia Elixir: https://geni.us/IenkG\nPrada Sunglasses: https://geni.us/NxETBN\nRay-Ban Meta Gen2: https://geni.us/UiFAKl\nMaison Margiela Replica GAT (Black): https://geni.us/hIBeK\nMaison Margiela Replica GAT (White/Grey): https://geni.us/rY9egSJ\nWhoop 5.0 (whoop life): https://geni.us/wVQA00L\n\n\nIf you want to support the channel, consider a Shevon Family membership by clicking the “Join” button above!\n\n… (25 lines truncated)\n\nExit code: 0\n\n`| head -50` was parsed out (50 of 75 total lines shown).\n<truncation_notice>\nFull output written to: /var/folders/d9/mzhyr7lx6xbf236j5ll9v_300000gn/T/DEVIn-overflows-501/c2188dee/content.txt\n</truncation_notice>","created_at":"2026-06-30T09:22:44.851886Z","finish_reason":null,"metrics":null},{"message_id":"b8da2e45-6ad8-4542-a812-366afea0348e","node_id":28,"role":"assistant","content":"Got the video info. It's \"My Ultimate Luxury Tech Everyday Carry 2026\" by **Shevon Salmon** (24.5 min). Let me read the captions to summarize and research the creator.","tool_calls":[{"id":"chatcmpl-tool-8f49ad73253ce4bd","name":"exec","arguments":{"command":"cd /tmp && ls -la *.vtt 2>&1 | tail -5"}},{"id":"chatcmpl-tool-be66c66824302f2f","name":"web_search","arguments":{"query":"Shevon Salmon YouTube tech reviewer"}}],"thinking":"Got it. The video is \"My Ultimate Luxury Tech Everyday Carry 2026\" by Shevon Salmon. Let me read the VTT file to summarize the captions, and also research who Shevon Salmon is.","created_at":"2026-06-30T09:22:53.145114Z","finish_reason":"tool_calls","metrics":{"ttft_ms":1744,"total_time_ms":8292,"input_tokens":1940,"output_tokens":128,"cache_read_tokens":15654,"cache_creation_tokens":null,"tpot_ms":51.15625,"tokens_per_sec":19.547953573610265}},{"message_id":"0d1acf7d-824c-4d70-80ac-c79e5985c861","node_id":29,"role":"tool","content":"Output from command in shell 2909a4:\n-rw-r--r--  1 root1  wheel  179189 Jun 29 17:24 geforce_now.en.vtt\n-rw-r--r--  1 root1  wheel  231606 Jun 30 02:22 My Ultimate Luxury Tech Everyday Carry 2026.en.vtt\n-rw-r--r--  1 root1  wheel  185684 Jun 27 00:04 yt_r8PmQYJKdME.en.vtt\n-rw-r--r--  1 root1  wheel  224257 Jun 29 00:09 yt_summary.en.vtt\n\nExit code: 0","created_at":"2026-06-30T09:22:58.947681Z","finish_reason":null,"metrics":null},{"message_id":"05bbc082-e948-4ff4-a70d-c8aee8954851","node_id":30,"role":"tool","content":"# Web Search Results for \"Shevon Salmon YouTube tech reviewer\"\n\n## 1. Beyond Tech Reviews: The Inspiring Journey of Shevon Salmon\nURL: https://caribvoxx.com/beyond-tech-reviews-the-inspiring-journey-of-shevon-salmon/\n\n# Beyond Tech Reviews: The Inspiring Journey of Shevon Salmon\n...\nWith 321K subscribers, 812 videos, and counting, Shevon Salmon is one YouTuber who deserves every click and like that comes his way. After a trip to Jamaica, Carib Voxx caught up with Shevon to talk about his YouTube journey.\n...\n“I am not a tech reviewer.” Written in his YouTube bio, that title doesn’t do Shevon Salmon justice, as his content gives way more. The Jamaican-born, Canadian-based Youtuber sees himself as covering a broader spectrum of technology as he uses it in his everyday life and shows his audience how it could fit into theirs. In turn giving a more personal view of the technology and its uses as opposed to regurgitating stats, numbers, and dimensions.\n...\n016, explaining to Carib Voxx the vision he\n...\nhe desired. Through\n...\ntunnel vision of\n...\nelaborated on how\n...\nthe time in alignment\n...\n016\n...\nfor Shevon;\n...\nYouTube journey and emphasized\n...\ndetermination from the get-go.\n...\n“I started taking it more seriously in the pandemic, and around that time I started seeing more revenue and more brand deals, but it was around 2022 when I quit my corporate job to go full-time on YouTube,” explained Shevon.\n...\nthe time, he was working in the marketing industry, as\n...\nin the field of advertising and marketing\n...\nstudied at Humber College. Shevon\n...\n, “I did have to do the corporate job, but I just wanted to experience it. I liked it\n...\nbut to give my all\n...\n’t stay in that job.”\n...\nIntel, HP, Samsung, and so much more. We questioned his process for brand selection, which he explained includes narrowing down brands that he usually uses personally.\n...\nto brands for product reviews free of charge until some of them proved fruitful, then compared it to\n...\ngrowth, where\n...\nchoosing the brands to work with\n...\nOf course, we couldn’t let the opportunity pass to find out Shevon’s three favourite technologies of 2023 so far. Naturally, he opted to choose the tech he finds most useful ...\n\n## 2. This 24-Year-Old Content Creator Turned His Passion For Tech Into Making Over $100K In One Month - AfroTech | AfroTech\nURL: https://afrotech.com/shevon-salmon-tech-lifestyle-creator-youtube-instagram\n\nTurning your passion into an ever-flowing stream of income is a dream for many. For Shevon Salmon, he made it come true at an early age.\n...\nBefore Shevon Salmon — a tech and lifestyle content creator— began to sit in front of the camera for hundreds of thousands of viewers, he picked one up to take photos after the birth of his little sister. Simultaneously, his love for videography was born, too — sparking the inception of his YouTube channel.\n...\nBorn and raised in Jamaica, Shevon Salmon moved to Toronto, Canada in 2016. The transition in his life was also when he started to post consistently as a YouTuber, blending his love for consumer technology, fashion, and lifestyle.\n...\nThe 24-year-old creator’s content consists of conducting research within consumer tech — receiving tech products from companies like Apple and Samsung to test out — and teaching his audience about the products.\n...\nNow, Salmon has garnered nearly 300,000 subscribers on his YouTube channel alone.\n...\nAfter moving to Toronto and building his audience, he went from making $25 in 2016 thanks to one of his early videos to his highest-paid month thus far. In October 2022, Salmon says he grossed over $100,000 from brand deals, his YouTube revenue, and his digital store.\n...\n“It might not sound like enough, but that was what really motivated me to start actually [creating content] full-time on YouTube,” Salmon shared with AfroTech.\n...\nThe determination seems to have paid off, too. During his highest-paid month, he worked with big-name companies like Google, Samsung, Intel, and Staples.\n...\nWhat’s more, Salmon says his highest paycheck, as of this writing, was $45,000. He told AfroTech he received the five-figure payout from a media technology company that he could not disclose for a YouTube video, an Instagram post, an Instagram Story post, and a TikTok video.\n...\n“Brands tend to take things more seriously because they’re not really talking to me directly, “ Salmon explained. “I realized that I [w...\n\n## 3. Shevon Salmon Is The Tech Content Creator Making Six Figures\nURL: https://peopleofcolorintech.com/articles/shevon-salmon-is-the-24-year-old-content-creator-making-six-figures/\n\nShevon Salmon Is The Tech Content Creator Making Six Figures\n\nFebruary 3, 2023\n\n# Shevon Salmon Is The Tech Content Creator Making Six Figures\n\n24-year-old content creator, Shevon Salmon, is one of a few people turning their passion for tech into a sustainable income.\n\nBefore picking up his camera for thousands of viewers, Salmon first discovered his love for videography after the birth of his little sister, who he spent most of his time recording. The love he developed for technology – which started as a simple hobby – has sparked the growth of his career on social media.\n\nSalmon’s YouTube covers various topics, including new tech drops, gaming videos, lifestyle and testing out new phone cases, and unboxing the latest digital widgets. Last year, the creator even documented the process behind how he built his first PC using the tiniest case ever.\n\nSince starting his channel in 2011, Salmon has garnered an impressive 278,000 subscribers on YouTube and over 74,000 on Instagram, inspiring others to follow in his footsteps.\n\nSalmon credits his success to trusting that bigger things will come. In 2016, the entrepreneur made $25 from his content. Despite how disheartening this was initially, it pushed Salmon to go harder.\n\n“It might not sound like enough, but that was what really motivated me to start actually [creating content] full-time on YouTube,” Salmon said in an interview with AfroTech.\n\nAccording to reports, Salmon’s highest paycheck to date is $45,000. He received a five-figure payout for creating a YouTube video, an Instagram post, an Instagram Story post, and a TikTok video.\n\nIn addition to his work online, Salmon has created a digital production company specializing in influencer-facing content. The entrepreneur aims to bridge the gap between brands and influencers by producing high-quality stories and skillfully integrating the goals and audiences.\n\nHe has also partnered with high-profile tech organizations, including Motorola and LG. Last year, Salmon won th...\n\n## 4. Shevon Salmon's YouTube Statistics - Social Blade\nURL: https://socialblade.com/youtube/handle/shevonsalmon\n\nShevon Salmon's YouTube Statistics - Social Blade\n\nSign in or Sign up\n\nProducts and Services\n\nYouTubeSuggestions\n\nCollapse\n\n### Shevon Salmon@shevonsalmon\n\nsubscribers\n\n551K\n\nviews\n\n83,398,786\n\nvideos\n\n911\n\nCreated On\n\nNovember 5, 2011\n\nLogin to Favorite\n\nLogin to Favorite\n\nsubscribers\n\n551K\n\nviews\n\n83M\n\nvideos\n\n911\n\nCreated On\n\nNov 5, 2011\n\n## C\n\n#### Grade\n\n## 645,060th\n\nSB Rank\n\n## 1,771st\n\n## 347,509th\n\n## 714th\n\n## 782nd\n\nCreator Statistics\n\n#### Subscribers for the last 30 days\n\n#### Views for the last 30 days\n\n### Monthly Estimated Earnings\n\n### Yearly Estimated Earnings\n\n## Daily Channel Metrics\n\nLast 14 Days\n\n| Date | subscribers | views | videos | Estimated Earnings |\n| --- | --- | --- | --- | --- |\n| Mon2026-05-25 | 1K | 550K | 35,338 | 83,089,269 | 1 | 910 | $9 - $141 |\n| Tue2026-05-26 | -- | 550K | 39,565 | 83,128,834 | -- | 910 | $10 - $158 |\n| Wed2026-05-27 | -- | 550K | 27,189 | 83,156,023 | -- | 910 | $7 - $109 |\n| Thu2026-05-28 | -- | 550K | 20,483 | 83,176,506 | -- | 910 | $5 - $82 |\n| Fri2026-05-29 | -- | 550K | 11,533 | 83,188,039 | -- | 910 | $3 - $46 |\n| Sat2026-05-30 | -- | 550K | 30,386 | 83,218,425 | -- | 910 | $8 - $122 |\n| Sun2026-05-31 | -- | 550K | 19,622 | 83,238,047 | 1 | 911 | $5 - $78 |\n| Mon2026-06-01 | 1K | 551K | 41,457 | 83,279,504 | -- | 911 | $10 - $166 |\n| Tue2026-06-02 | -- | 551K | 32,290 | 83,311,794 | -- | 911 | $8 - $129 |\n| Wed2026-06-03 | -- | 551K | 26,347 | 83,338,141 | -- | 911 | $7 - $105 |\n| Thu2026-06-04 | -- | 551K | 21,053 | 83,359,194 | -- | 911 | $5 - $84 |\n| Fri2026-06-05 | -- | 551K | 20,152 | 83,379,346 | -- | 911 | $5 - $81 |\n| Sat2026-06-06 | -- | 551K | 19,440 | 83,398,786 | -- | 911 | $5 - $78 |\n| Sun2026-06-07 | -- | 551K | -- | 83,398,786 | -- | 911 | $0 - $0 |\n\nGained subscribers (Weekly)\n\nGained views (Weekly)\n\nRecent Video\n\nYou must be logged in to use this feature.\n\nDetailed Charts\n\nMonthly\n\nGained\n\nCopyright ©2008-2026 Social Blade, LLC\n\n#### About\n\n#### More Social Blade\n\n#### Helpful Pages\n\nd2...\n\n## 5. Shevon Salmon Trust Score — ReReview\nURL: https://rereview.co/creators/shevon-salmon\n\nShevon Salmon Trust Score — ReReview\n...\n# Shevon Salmon\n...\nSmartphones, Audio Equipment, and Smart Home with a focus on aesthetics and lifestyle integration.\n...\n7.1\n...\nTech & Gadgets\n...\n537K\n...\nShevon Salmon blends high-quality vlogging with tech coverage, prioritizing the aesthetic and 'feel' of products over raw performance metrics. Viewers can expect 'Day in the Life' style reviews that showcase how devices fit into a modern, stylish routine rather than deep technical breakdowns.\n...\n- +High-quality cinematography and editing aesthetics\n- +Authentic 'day in the life' testing scenarios\n- +Strong focus on user experience and design\n...\n- !Coverage of unreleased devices sometimes relies on mockups or rumors, so verify final specs elsewhere.\n- !Reviews prioritize subjective daily usage and aesthetics over technical benchmarks or thermal data.\n...\n## Trust Breakdown\n...\nShevon SalmonReReview Trust Score7.1Worth Prioritizingrereview.co/c/shevon-salmon\n...\nshevon-salmon\n...\nSmartphonesSmart\n","created_at":"2026-06-30T09:22:58.947749Z","finish_reason":null,"metrics":null},{"message_id":"881e3f04-0cc0-4665-a378-ccaa1dc1cfcc","node_id":32,"role":"assistant","content":"Now let me read the captions to summarize the actual video content.","tool_calls":[{"id":"chatcmpl-tool-80b6cc5932c7baa7","name":"exec","arguments":{"command":"cd /tmp && python3 -c \"\nimport re\nwith open('My Ultimate Luxury Tech Everyday Carry 2026.en.vtt') as f:\n    content = f.read()\n# Strip VTT headers and timestamps, get plain text\nlines = content.split('\\n')\ntext_lines = []\nseen = set()\nfor line in lines:\n    line = line.strip()\n    if not line or line.startswith('WEBVTT') or line.startswith('Kind:') or line.startswith('Language:') or line.startswith('NOTE') or '-->' in line or line.isdigit():\n        continue\n    # Remove HTML tags\n    clean = re.sub(r'<[^>]+>', '', line)\n    if clean and clean not in seen:\n        seen.add(clean)\n        text_lines.append(clean)\nprint(' '.join(text_lines))\n\" 2>&1 | head -c 8000"}}],"thinking":"Now let me read the VTT file to summarize the actual video content.","created_at":"2026-06-30T09:23:03.083450Z","finish_reason":"tool_calls","metrics":{"ttft_ms":1273,"total_time_ms":4132,"input_tokens":2894,"output_tokens":214,"cache_read_tokens":17593,"cache_creation_tokens":null,"tpot_ms":13.35981308411215,"tokens_per_sec":74.85134662469395}},{"message_id":"83aca006-f267-4689-a7ad-4b8cdc1724c1","node_id":33,"role":"tool","content":"Output from command in shell 0e0cdb:\nYo, what's going on guys? It's your boy Siobhan here back with a brand new video. I know it's been a minute since my last EDC. I went on to YouTube, asked you guys what you want to see. Surprisingly, a lot of people wanted to see a updated EDC. So, guess what? Today, we have my brand new 2026 updated EDC. and I kind of mixed it up in a few and I kind of put a lot of lifestyle into it as well. So, I know a lot of fashion people out there. I'm going to start incorporating a little more fashion into the video. So, we're going to do my EDC and also whenever I bring my backpack, we're going to show you guys what I bring inside my backpack on those days. So, it's like a little luxury tech EDC for 2026. Without any further ado, let's get started. Oh, yeah. By the way, I'm not saying these products is what you have to buy. These are just my personal items that I find myself using throughout the year. They're kind of on the pricier side, so you might find different alternatives, but I'm just literally showing you guys what I bring with me every single day. And first off, we're going to start with this right here, the backpack. So, this right here is the GS 28151 stealth backpack. And this one is special because it's my favorite colorway. the brown tones. Love it. And it's also a collab with the Italian motor racing team. So, as you can see, it's the MV Augusta collab. It should have been a limited edition, but I'm not 100% sure. I had the black version to this, but one thing I realized with this one is that the zips fully go down to the bottom and it opens up to like so many different compartments in here. Like, if you could take a look, you could literally transform this into a camera bag. And that brings us to the first thing I want to talk about what I pack inside my bag and it's my cameras. So I'm filming with my main video camera right now is the Sony FX3. I usually just bring the 24 to 70 mm but right now we have the Tamron 17 to 28 mounted on it. But then whenever I w… (22434 chars truncated)\n\nExit code: 0","created_at":"2026-06-30T09:23:03.134228Z","finish_reason":null,"metrics":null},{"message_id":"f1d39066-4884-47b5-9f60-8466cc274e07","node_id":35,"role":"assistant","content":"","tool_calls":[{"id":"chatcmpl-tool-b63259478134bc44","name":"exec","arguments":{"command":"cd /tmp && python3 -c \"\nimport re\nwith open('My Ultimate Luxury Tech Everyday Carry 2026.en.vtt') as f:\n    content = f.read()\nlines = content.split('\\n')\ntext_lines = []\nseen = set()\nfor line in lines:\n    line = line.strip()\n    if not line or line.startswith('WEBVTT') or line.startswith('Kind:') or line.startswith('Language:') or line.startswith('NOTE') or '-->' in line or line.isdigit():\n        continue\n    clean = re.sub(r'<[^>]+>', '', line)\n    if clean and clean not in seen:\n        seen.add(clean)\n        text_lines.append(clean)\ntext = ' '.join(text_lines)\nprint(text[8000:18000])\n\" 2>&1"}}],"created_at":"2026-06-30T09:23:04.978484Z","finish_reason":"tool_calls","metrics":{"ttft_ms":null,"total_time_ms":1843,"input_tokens":742,"output_tokens":171,"cache_read_tokens":20486,"cache_creation_tokens":null,"tpot_ms":10.777777777777779,"tokens_per_sec":92.78350515463917}},{"message_id":"c8bde98f-94fb-469b-af19-b63eb55020fe","node_id":36,"role":"tool","content":"Output from command in shell fee33d:\n be like, yo, them lips looking nice. You know what I'm saying? So, Carmex, we keep that in the pockets. And next up, before I leave the crib, you already know I have to test these devices. I asked on YouTube. Everybody wanted to see a day in the life with the S26 Ultra. So, I've been using this for the last 4 days and I'm honestly impressed so far. One of the main things everybody's been talking about is a privacy display. Definitely lives up to the hype right now. As you can see, rocking that Waves wallpaper pack. It's probably one of my favorite wallpapers and it looks so good with this colorway right here. I think this is the Violet, right? The Violet colorway. Fire. So, let me just quickly show you guys the privacy display. Just right here, privacy display. As you can see right now, you can see what's going on. Turn private display on. And then if I tilt my phone, you can't see. I know technology is crazy. And then also the camera improvements is insane. Like that new action mode where they turn the phone and it still keeps the horizon lock, which is like insane. You got the S Pen as well. So, there's a lot of things I'm going to put to the test and also the battery life because that's another thing that's super important. But S26 Ultra Violet that stays in the right pocket and then the trusty dusty iPhone 17 Pro Max. This phone is been through it all, y'all. So, I'm working on a video talking about the camera on this thing because it's honestly super super impressive. I've ran this phone through the dirt, through the ground, as you can see all the different scratches up on the side. I cracked the camera lens. It's literally been through it all. But I'm working on a video to show you guys how I perfected or mastered the art of iPhone photography. So, make sure you stick around for that video. And also, we got the glass wallpaper pack on here. So, you know what I'm saying. The orange is so nice. And overall, I think the iPhone 17 Pro Max is probably all my favorite devices, mobile devices that's dropped this year. And with 26 coming soon, it's just going to get 27 coming soon. It's only going to get better. So, this goes in my pocket. And then next up, what I want to bring with me is my watch. So, this has been my dream watch. Now, if you guys are OG, you know how long I've been waiting on this watch. So, it's the Rolex Cosmograph Daytona and Oyster Flex. So, I have the rose gold with the Sundust Dial. To me, this works perfectly and it's been like one of my favorite watches to rock every day. It's like not a super serious watch. You could wear it whenever. It literally fits whatever occasion you want to dress it up, you could dress it up. You want to be chill, you could be chill. Like this watch, it speaks for itself. Whenever you enter a room, every time I've met someone and then see me wearing this watch, they're like, \"This can't be like who are you?\" Like, what more what other watches you have, everyone respect this watch, no matter what scenario you're in. And that's why I really love it. It wears really thin on my wrist as well. I don't think I have a huge wrist, but this works well. And the rubber is just insane. And I think it it has titanium inside the rubber as well, so it's not super flimsy and you can't even like cut it like that. So yeah, this watch is like a dream come true being able to wear this. I'm super grateful and happy that I could allocate get allocated to this watch from the Rolex dealer. Like shout out to Rolex. I don't know what's next. Let me know what else you guys think I should pick up, but I think I might want to get into like some stainless options from AP. Next up, my colona of choice, &gt;&gt; loving this in the summertime. You know what I'm saying? Step outside, bro. The things are like falling. They're like, \"Yo, who's that?\" When you just spray, it might smell kind of weird, but after a while, that scent kind of dials down, you know? But I keep this on me. And another thing I keep on me is some good pair of audio. So, this right here, insane. Every time I whip this out somewhere, people are like, \"Yo, what the hell is going on, bro?\" So, this right here is the Soundcore Liberty 5 Pro Max in my favorite colorway again. Like, come on. And then the little brother I have as well is the Soundcore Liberty 5. And I'm not sure if you guys seen what's going on right now, but this literally has a touchcreen, bro. Like, I have never seen anything like this before. It's a lot to explain, so let me talk about it. So, these are the Anker Soundcore Liberty 5 Pro and the Liberty 5 Pro Max. Out of everything on this table, I'd say these get used the most. Both run on Anker's first self-developed AI chip, the Thus Chip. 150 times the power of the last generation. I won't nerd out on it too much, but what matters is what it unlocks. And this series holds an actual Guinness World Record for the world's clearest earbuds for calls. And I don't take a world records word for anything. So, guess what? I had to test it myself. All right, guys. So, listen up. We got the Anker Liberty 5 Pro Max inside right now, and we're going to do some testing because the mics are surprisingly good holding that Guinness World Record. So, guess what? We're going to call my boy Boo. We're going to do some vacuuming and we're going to see on his end if he could literally hear the vacuum. So, currently my Apple Watch is saying it's around 77 dB if I'm talking. And we're going to turn on the vacuum right now. 83 decimal. &gt;&gt; Yo, what's up? &gt;&gt; Yo. Yo. &gt;&gt; Yep. What's up? &gt;&gt; Can you hear me? &gt;&gt; Yeah, I can hear you &gt;&gt; clearly. &gt;&gt; Yeah, it's out clear though. &gt;&gt; You hear any noise or anything in the background? &gt;&gt; No, not at all. &gt;&gt; Guess what? I'm literally using a vacuum right now. &gt;&gt; Oh, really? &gt;&gt; Yeah. That's crazy. The headphones has the I don't know how it does it with the noise cancellation, but I'm literally running a vacuum and I'm pretty sure it could only pick up my voice. &gt;&gt; Oh, yeah. Like your everything is cleared up. &gt;&gt; Perfect. All right. &gt;&gt; So, yeah, as you can see, the voice isolation is crazy. It's actually the same chip that runs the noise cancelling. So, it's generally right there up with the Sony XM series and the AirPods Pro 2. All right. So, we outside right now testing the ANC. As you can see, there's a tons of um street cars passing, but the good thing is when I'm outside, like, yes, it's good to block out all the noise, but the fact that I could just use the case real quick and I could change from transparency to full A&amp;C. Now I'm on full ANC mode. I literally can't hear anything. And it has this little nice little subtle effect it does like. And then whenever you go into like adaptive or my favorite normal mode, it's like it opens it up and then you have transparency mode. It's like it's like a train sound and it opens up even more and I can hear the bikes moving. This is definitely the mode I want to use when I'm outside and maybe if I'm on a plane or something like that where I know I'm kind of safe, I'll go for the noise cancelling mode. But so far so good. Love the transparency mode on these. is solid for any environment. &gt;&gt; It sounds great, too. Big wallpaper drivers, LDAC, Dolby Atmos, and the app runs a quick hearing test to build an EQ tune to your actual ears. And guess what? The AI fun doesn't end there. There's even a voice control built in. No wake word, no phone. Just Just watch this. Previous track. Previous track. Damn. But yeah, I never experienced anything like this. I could literally use my voice commands and control the music as you guys can start see. And I did it with this one as well. So, you're not missing out on nothing. The Pro version has a screen display right here as well that you could see the battery indication for the left, the right earbuds and the case itself. And if we swipe up on the screen, you could also control the ambient sound. So, you could go transparency, ANC, and it's actually the the ANC is actually insane. I'm not going to lie. And he can even control the ANC levels, too. So, that's the Pro. Really love this thing. It's very slim and like low profile. But this right here is the big boy. This is the Pro Max. It does everything the Pro does, but it does two more things really well. First off is the screen right here. So, as you can see, so this is a real 1.78 in AMOLED touchcreen. I could change the noise modes, skip tracks, even swap the wallpaper all from the case, never touching my phone, which is good. I thought this was a gimmick, but now I reach for it first every single time. All right, guys. This is a live quick live demo of the AI Noteaker. I know I have a thick kind of Jamaican accent mixed with that whole Toronto accent. So, let's see how best it could pull up the script that I have right in front of me. AI Noteaker. So, this is the script right here. You could just pause it, zoom in, pause, and let's try our best to replicate this. All right, ready? What's up, everyone? It's Big Chevy. Right now, I'm just testing out this new mic to see how it sounds. If you're hearing me clean and crisp with no background hiss, then we're in business. I do a lot of voice over work for my videos, tech reviews, lifestyle stuff, the whole vibe. So, the audio has to hit every single time. So, let me run through a few words here, check the levels, and make sure this thing is studio ready. All right, sounds good to me. Hit done. Transfer and recording. And that should land right inside the app right here. Boom. And it's uploading everything. Obviously, it has the voice recording right here, too. &gt;&gt; I do a lot of voice over work for my videos, tech reviews, lifestyle stuff. So, the audio has to hit every single time. So, let me run through a few words. &gt;&gt; Literally like transcribe the audio and everything. So, … (38 chars truncated)\n\nExit code: 0\n<truncation_notice>\nFull output written to: /var/folders/d9/mzhyr7lx6xbf236j5ll9v_300000gn/T/DEVIn-overflows-501/e06002b4/content.txt\n</truncation_notice>","created_at":"2026-06-30T09:23:05.032518Z","finish_reason":null,"metrics":null},{"message_id":"8e763ff1-8001-4727-b4de-a7025f67c740","node_id":38,"role":"assistant","content":"","tool_calls":[{"id":"chatcmpl-tool-a3b77d1a4347f82b","name":"exec","arguments":{"command":"cd /tmp && python3 -c \"\nimport re\nwith open('My Ultimate Luxury Tech Everyday Carry 2026.en.vtt') as f:\n    content = f.read()\nlines = content.split('\\n')\ntext_lines = []\nseen = set()\nfor line in lines:\n    line = line.strip()\n    if not line or line.startswith('WEBVTT') or line.startswith('Kind:') or line.startswith('Language:') or line.startswith('NOTE') or '-->' in line or line.isdigit():\n        continue\n    clean = re.sub(r'<[^>]+>', '', line)\n    if clean and clean not in seen:\n        seen.add(clean)\n        text_lines.append(clean)\ntext = ' '.join(text_lines)\nprint(text[18000:])\n\" 2>&1"}}],"created_at":"2026-06-30T09:23:08.157522Z","finish_reason":"tool_calls","metrics":{"ttft_ms":null,"total_time_ms":3123,"input_tokens":2717,"output_tokens":168,"cache_read_tokens":21227,"cache_creation_tokens":null,"tpot_ms":18.589285714285715,"tokens_per_sec":53.79442843419788}},{"message_id":"dfddc541-1a2e-42d8-81cb-c859bdef8dcf","node_id":39,"role":"tool","content":"Output from command in shell d53b43:\n backtoback meetings and you usually have to take notes. Now, it's way easier than ever to have a summary of your meeting, to have detailed transcripts, and to actually have a voice over with written notes right after your meetings. This is to me a game changer. And it could even identify different speakers as well. So, if you have a different voice, different tone from someone else, it could identify that and put it right into the app right here. And you all could see live how quick this is. So yeah, these earbuds are literally like the future. I've never seen anything like this before. So really depending on your budget. The Pro is 169 and the Pro Max is $2.29. So it all depends on your budget. For me, I think it's really worth it every single day of the week. Especially with the AI tech builtin, the note takingaking and all of that. It's crazy. So I'll leave the first link down below in the description to pick one up from Soundcore. All the links. First link down below in description. Huge thanks to Ankor and Soundcore for sponsoring today's video. And these could literally live right here in my pockets as well. &gt;&gt; Yo. &gt;&gt; Oh, the Whoop band. Not going to lie, I just got this like 2 weeks ago. I think it's the Whoop 5.0 or something like that. So, I guess it's my everyday carry. So, this is the Whoop Life. You could track your EG. I'm not fully versed on it. I'm literally working on a video explaining like why I decided to get this. But it's a good smart fitness tracker. It could see what's going on inside your body. You could track your heart rate while you're sleeping. I literally work 24/7. I shower with it. I do everything with it. And so far, it's been giving me good insights. But yeah, I use this every single day. If anybody used the Whoop down below in the comments to let me know as well. But yeah, I don't know. I forgot I had this. I almost felt like it's like a part of my body or something. But yeah, Uber 5.0. Love it. So, before I leave out, of course, you guys know I have to keep my unboxing knife on me. You never know when you need to unbox something or to cut some paper. So, this is the Roxson. I don't even know if they sell these anymore. I've been trying to find them, but I can't find it. I got it from Amazon years ago. But what's really cool is that first up, you have an unboxing knife. As you can see, there's a lot of tape on it. I literally just use it to unbox products. So, whenever I need to cut up some stuff, I just use this knife. And then whenever I need to cut like uh parking tickets or anything I get, I just grab this, cut out the parking tickets, and then it comes with a nice little holder that I just put on my waist. And it's very discreet. And yeah, it's just super handy whenever I because I get so many packages, I need to unbox stuff. I just keep that on me. And then it's summertime, the the sun is just hidden, bro. So, because the sun is hitting so much and I'm proud of myself, we got the Prada for the vision. You know, I'm proud of I I'm proud of what I'm seeing. So, I got the Prada lens and these are really nice because it's almost like a translucent frame and it's in this gray finish. It goes with everything. Always get compliments with these glasses. Not sure about the co like the actual serial number or the code of it. I just know it's like triangular Prada logo right here. But yeah, these works every time. As I said before, you don't have to get Prada lens. You could just get any glasses. That works well. Especially in the summertime, the sun is hidden. You need to protect your eyes. Next up, my keys. So, I'm still rocking the Orbit key. So, this is the Orbit key and it houses all my keys so it's not dingling as you can see. So, I have all my different keys on here for my crib, my locker, and also I have this bottle opener that comes in handy if you ever need to open a bottle. And then also to track everything, I got my generation one Apple ear tags. I think I changed the battery on this like 12,000 times. We also have my UB key 2FA authenticator that I never go without because this is linked to my Google services. So even if you know my password or whatever, you need this physical key to get inside. And this just lives inside my pocket. And then last but not least is my wallet. And this is the Goyard. Not going to lie, had to Google it. It's the Goyard Saint Soulpiece card holder. I got this one when I was in New York recently and I love it. It's super clean to me. Goyard has been like hyping up. I don't know why I got so much. I have like three different Goyard wallets, but I like it. It's super chill. It's low key. And it has like a bunch of card slots so you could put your cards in. And if you have cash, you could even put it in this middle part as well. But yeah, I think that's my everyday carry. I literally put all this inside my pocket, my bag right here. Like there's a camera gear in here. You'd probably never know that I have camera gear in this bag. It's super chill. And then to complete the entire fit, I got my Gats. So these are the shoes I've been rotating a lot recently, guys. So I just picked up this one in white and gray. This one I've been beating. But the reason why I love this silhouette is because it just works good. You know, you could dress it up. You could wear shorts, jeans, joggers, and as you can see, it's just clean, bro. You know what I'm saying? You can't go wrong with these. These are the black with the gum bottoms. The all blacks are really nice, too. And then when I'm wearing lighter tones, like a white shirt, blue jeans, this gray and white one works really well. But they all have those brown tones. And even with this, even with this fit right now, you can see like it's still clean. So yeah, the Margula Gats replicas. Love these. And that wraps up the entire EDC. And let me know what you guys think down below in the comments. If you want to see more EDC video for like budget friendly options as well, let me know. But I've checked the age range of my viewers and I think you guys could afford it, bro. You know what I'm saying? I think you guys could afford it. But hopefully you like this video. Shout out to Anchor for sponsoring today's video. As always, love, peace, and tweaks. And don't forget, slow motion is better than no motion. Signing out. It's time to go like hit the hit the streets. You know what I'm saying? Let's get to it.\n\n\nExit code: 0","created_at":"2026-06-30T09:23:08.212019Z","finish_reason":null,"metrics":null},{"message_id":"063d1330-d1e6-4ab1-9000-b48d5f8e3d8c","node_id":41,"role":"assistant","content":"## Video Summary: \"My Ultimate Luxury Tech Everyday Carry 2026\" by Shevon Salmon\n\nA ~24.5-minute \"everyday carry\" (EDC) walkthrough where Shevon shows the luxury tech + lifestyle items he carries daily in 2026. He frames it as a mix of tech and fashion, and is explicit that these are his personal picks (not recommendations), acknowledging they're on the pricier side. Sponsored by Anker/Soundcore.\n\n**Items shown, in order:**\n- **GRAMS28 x MV Agusta 151 Stealth Backpack** (brown colorway) — opens fully, doubles as a camera bag\n- **Cameras:** Sony FX3 (main), Sony A7IV, with Sony 24-70mm f/2.8 G Master and Tamron 17-28mm lenses\n- **MacBook Pro 14\" M5 Max** + **11\" iPad Pro M4**\n- **Anker Power Bank 25,000mAh**\n- **Samsung Galaxy S26 Ultra** (Violet) — demos the privacy display and action-mode horizon lock\n- **iPhone 17 Pro Max** — his favorite mobile device of the year; teases an upcoming iPhone photography video\n- **Rolex Cosmograph Daytona Oysterflex** (rose gold, Sundust dial) — his \"dream watch,\" says he got allocated by the dealer\n- **Loewe Esencia Elixir** cologne\n- **Anker Soundcore Liberty 5 Pro & Liberty 5 Pro Max** earbuds (the sponsored segment) — demos the Guinness-Record-holding call mics by vacuuming while on a call, the touchscreen case, ANC/transparency modes, voice control without a wake word, and an on-device AI note-taker that transcribes his Jamaican-Toronto accent. Pro = $169, Pro Max = $229\n- **Whoop 5.0** fitness band (Whoop Life subscription)\n- **Roxson unboxing knife** (worn on waist)\n- **Prada sunglasses** (translucent gray frame)\n- **Orbitkey** key organizer + bottle opener, **Gen-1 AirTag**, **YubiKey** 2FA\n- **Goyard Saint-Sulpice card holder** (wallet)\n- **Maison Margiela Replica GAT** sneakers (black/gum and white/grey) to \"complete the fit\"\n\nSign-off: \"Love, peace, and tweaks. Slow motion is better than no motion.\"\n\n---\n\n## Who is Shevon Salmon?\n\n**Shevon Salmon** is a Jamaican-born, Toronto-based tech and lifestyle YouTuber. Key facts from research:\n\n- **Channel:** Created Nov 5, 2011. Per Social Blade he now sits at **~551K subscribers, ~83M total views, 911 videos** (up from the ~278K–321K reported in early-2023 press).\n- **Content style:** He explicitly says \"I am not a tech reviewer\" in his bio. Instead of benchmarks and spec sheets, he does \"day in the life\" / EDC-style videos showing how consumer tech fits into a stylish, modern routine — heavy on cinematography, fashion, and lifestyle integration. ReReview gives him a 7.1/10 trust score, noting he prioritizes aesthetics and feel over thermal/benchmark data.\n- **Background:** Born and raised in Jamaica; discovered videography recording his little sister. Moved to Toronto in 2016 and started posting consistently, blending consumer tech, fashion, and lifestyle. Studied at Humber College and worked in advertising/marketing before going full-time.\n- **Going full-time:** Started seeing real revenue during the pandemic; **quit his corporate marketing job in 2022** to do YouTube full-time. His biggest reported month was **October 2022, grossing >$100K** from brand deals + YouTube revenue + his digital store (LUTs/presets/SFX on Gumroad). His single biggest paycheck was **$45K** from a media-tech company for a YouTube video + IG post + IG Story + TikTok.\n- **Brand partners:** Apple, Samsung, Google, Intel, HP, Motorola, LG, Staples, and (in this video) Anker/Soundcore. He also runs a digital production company that bridges brands and influencers.\n- **Business:** Sells LUTs/presets/SFX at shevonsalmon.gumroad.com; offers a \"Shevon Family\" YouTube membership.\n\nIn short: a self-made Jamaican-Canadian creator who turned a teen hobby channel into a six-figure lifestyle-tech media business, known for cinematic \"everyday carry\" and day-in-the-life content rather than traditional reviews.","tool_calls":[],"thinking":"I have all the info I need. Let me write up a summary of the video and a profile of Shevon Salmon.","created_at":"2026-06-30T09:23:34.191922Z","finish_reason":"stop","metrics":{"ttft_ms":1364,"total_time_ms":25978,"input_tokens":1776,"output_tokens":1015,"cache_read_tokens":23943,"cache_creation_tokens":null,"tpot_ms":24.25024630541872,"tokens_per_sec":41.236694564069225}}]}