CodeAir

Smartphone based Remote Control for VS Code

Seamlessly transfer code, images, and files between your devices and VS Code. Control VS Code instances running on your desktop, right from your phone using both text and voice. With AI support, transcribe images to code, have QnA sessions against transferred files and more!

Get Started

See CodeAir in Action

This demo showcases the powerful features of CodeAir, including seamless file transfer, voice commands, and real-time collaboration between your mobile device and VS Code.

Features

Easy File Transfer + AI

Quickly send files, images, and code snippets from your mobile device to VS Code.

Voice Commands

Use voice recognition to send commands and interact with your VS Code environment.

AFK mode

Monitor whatever is happening on your screen when you go AFK by requesting screenshots!

Installation

Installing the VS Code Extension

Install the CodeAir VS Code Extension from here: VS Code Marketplace Link

Alternatively:

  1. Open VS Code and follow the instructions below
  2. Go to the Extensions view (Ctrl+Shift+X)
  3. Search for "CodeAir"
  4. Click Install
  5. Reload VS Code when prompted

How to Use CodeAir

Running the Apps End-to-End

  1. Open VS Code and ensure the CodeAir extension is installed and activated.
  2. In VS Code, use the command palette (Ctrl+Shift+P) and run "CodeAir: Start Server".
  3. Note the IP address and port displayed in the VS Code output.
  4. Open the CodeAir mobile app on your device.
  5. Enter the IP address and port from step 3 into the mobile app.
  6. Tap "Connect" in the mobile app to establish a connection with VS Code.
  7. You can now send files, images, or commands from your mobile device to VS Code.
  8. Use the camera, gallery, or document picker in the mobile app to select files for transfer.

Tips for Best Use

  • Ensure both devices are on the same Wi-Fi network for optimal performance.
  • Use voice commands for quick actions like "open file" or "go to line".
  • Utilize the "get screenshot" command to quickly share your VS Code screen with the mobile app.
  • Regularly update both the VS Code extension and mobile app for the latest features and improvements.

Supported VS Code Commands

Command
Exit Zen Mode
Close Reference Search
Close Test Peek
Cancel Selection
Move Cursor to Bottom
Select Text to Bottom
Column Select Down
Column Select Left
Column Select Page Down
Column Select Page Up
Column Select Right
Column Select Up
Move Cursor Down
Select Text Down
Move Cursor to End
Select Text to End
Move Cursor to Home
Select Text to Home
Move Cursor Left
Select Text Left
Move Cursor to Line End
Select Text to Line End
Move Cursor to Line Start
Select Text to Line Start
Move Cursor Page Down
Select Text Page Down
Move Cursor Page Up
Select Text Page Up
Move Cursor Right
Select Text Right
Move Cursor to Top
Select Text to Top
Move Cursor Up
Select Text Up
Delete Left
Delete Right
Select All
Copy
Cut
Paste
Expand Line Selection
Inline Chat Arrow Out Down
Inline Chat Arrow Out Up
Insert Line Break
Outdent
Redo
Scroll Line Down
Scroll Line Up
Scroll Page Down
Scroll Page Up
Tab
Undo
Remove Secondary Cursors
Notebook Cell Chat Arrow Out Down
Notebook Cell Chat Arrow Out Up
Focus Chat Widget
Focus Next Chat Widget
Inline Chat Focus
Accept Notebook Cell Chat Changes
Next From Notebook Cell Chat History
Previous From Notebook Cell Chat History
Go To Next Reference
Go To Previous Reference
Apply Refactor Preview
Edit Focused Test
Quit Notebook Cell Edit
Discard Inline Chat
Find
Find With Selection
Accept Breakpoint Widget Input
Focus Chat Action
Close Breakpoint Widget
Cursor Undo
Cursor Word End Right
Select Word End Right
Cursor Word Left
Select Word Left
Cursor Word Part Left
Select Word Part Left
Cursor Word Part Right
Select Word Part Right
Delete All Left
Delete All Right
Delete Word Left
Delete Word Part Left
Delete Word Part Right
Delete Word Right
Next Accessible Diff Viewer
Previous Accessible Diff Viewer
Add Comment Line
Add Selection To Next Find Match
Auto Fix
Block Comment
Cancel Selection Anchor
Change All
Clipboard Copy Action
Clipboard Cut Action
Clipboard Paste Action
Comment Line
Copy Lines Down Action
Copy Lines Up Action
Delete Lines
Next Dirty Diff
Previous Dirty Diff
Find Next in Extension Editor
Find Previous in Extension Editor
Show Find in Extension Editor
Format Document
Format Selection
Go To Bottom Hover
Go To Focused Sticky Scroll Line
Go To Implementation
Go To References
Go To Top Hover
Hide Color Picker
In Place Replace Down
In Place Replace Up
Indent Lines
Reject Inline Edit
Hide Inline Edits
Show Next Inline Edits
Show Previous Inline Edits
Hide Inline Suggest
Show Next Inline Suggest
Show Previous Inline Suggest
Insert Color With Standalone Color Picker
Insert Cursor Above
Insert Cursor At End Of Each Line Selected
Insert Cursor Below
Insert Line After
Insert Line Before
Join Lines
Jump To Bracket
Linked Editing
Next Marker
Next Marker In Files
Previous Marker
Previous Marker In Files
Move Lines Down Action
Move Lines Up Action
Move Selection To Next Find Match
Next Comment Thread Action
Next Commenting Range
Next Match Find Action
Next Selection Match Find Action
Organize Imports
Outdent Lines
Page Down Hover
Page Up Hover
Peek Definition
Peek Implementation
Previous Comment Thread Action
Previous Commenting Range
Previous Match Find Action
Previous Selection Match Find Action
Quick Fix
Refactor
Remove Brackets
Remove Comment Line
Rename
Reveal Definition
Reveal definition
Reveal definition aside
Scroll down hover
Scroll left hover
Scroll right hover
Scroll up hover
Select editor
Select from anchor to cursor
Select highlights
Select next sticky scroll line
Select previous sticky scroll line
Set selection anchor
Show context menu
Show hover
Expand smart select
Shrink smart select
Start find replace action
Submit comment
Toggle tab focus mode
Toggle word wrap
Transpose letters
Trigger parameter hints
Trigger suggest
Trim trailing whitespace
Find next in webview editor
Find previous in webview editor
Hide find in webview editor
Show find in webview editor
Go to next word highlight
Go to previous word highlight
Cancel operation
Change drop type
Change paste type
Create folding range from selection
Close exception widget in debug action
Show debug hover in debug action
Toggle breakpoint in debug action
Expand abbreviation in emmet action
Fold editor
Fold all in editor
Fold all block comments in editor
Fold all except in editor
Fold all marker regions in editor
Fold level 1 in editor
Fold level 2 in editor
Fold level 3 in editor
Fold level 4 in editor
Fold level 5 in editor
Fold level 6 in editor
Fold level 7 in editor
Fold recursively in editor
Go to next symbol from result
Cancel go to next symbol from result
Hide drop widget
Hide paste widget
Remove manual folding ranges
Toggle fold in editor
Toggle fold recursively in editor
Unfold editor
Unfold all in editor
Unfold all except in editor
Unfold all marker regions in editor
Unfold recursively in editor
Stop reading line with hint
Insert snippet
Execute in interactive
Discard cell chat in notebook
Cursor page down in notebook cell
Cursor page down select in notebook cell
Cursor page up in notebook cell
Cursor page up select in notebook cell
Execute notebook cell
Execute and insert below notebook cell
Execute and select below notebook cell
Paste above notebook cell
Focus next editor in notebook
Focus previous editor in notebook
Format cell in notebook
Open reference to side
Accept input in repl action
Filter in repl action
Find in repl action
Execute in repl
Rerun search editor search
Focus query editor widget in search action
Delete file results in search editor action
Clear search results in settings action
Focus settings file in settings action
Search in settings action
Toggle explain mode
Toggle peek widget focus
Go back in welcome
Add comment in workbench action
Attach context in chat workbench action
Run in terminal in chat workbench action
Submit in chat workbench action
Submit secondary agent in chat workbench action
Go to next change in editor
Go to previous change in editor
Hide comment in workbench action
Accept inline edit in editor
Jump to inline edit in editor
Trigger inline edit in editor
Accept next word in inline suggest
Go to next message in testing
Go to previous message in testing
Close find widget
Replace all in editor
Replace one in editor
Select all matches in editor
Toggle find case sensitive
Toggle find in selection
Toggle find regex
Toggle find whole word
Toggle preserve case
Jump back in inline edit
Accept changes in notebook cell chat
Jump to next snippet placeholder
Jump to previous snippet placeholder
Leave editor message
Leave snippet
Close dirty diff
Close markers navigation
Hide notifications toasts
Close parameter hints
Show next parameter hint
Show previous parameter hint
Accept alternative selected suggestion
Accept selected suggestion
Focus suggestion
Hide suggest widget
Insert best completion
Insert next suggestion
Insert previous suggestion
Select next page suggestion
Select next suggestion
Select previous page suggestion
Select previous suggestion
Toggle suggestion details
Toggle suggestion focus
Accept rename input
Accept rename input with preview
Cancel linked editing input
Cancel rename input
Focus next rename suggestion
Focus previous rename suggestion
Add cursors at search results
Focus breadcrumbs
Focus and select breadcrumbs
Focus next breadcrumb
Focus previous breadcrumb
Reveal focused breadcrumb
Reveal focused breadcrumb from tree aside
Select focused breadcrumb
Toggle breadcrumbs to on
Close replace in files widget
Clear filter text in comments
Focus on comments filter
Focus on view from comments filter
Copy file path
Copy relative file path
Open breakpoint to side in debug mode
Open debug view
Remove breakpoint in debug mode
Remove watch expression in debug mode
Decrease search editor context lines
Open accessibility help
Configure assigned keybindings for accessibility help
Configure keybindings for accessibility help
Open help link for accessibility help
Open accessible view
Accept inline completion in accessible view
Disable hint in accessible view
Move to next in accessible view
Move to next code block in accessible view
Move to previous in accessible view
Move to previous code block in accessible view
Define keybinding in editor
Commit inline suggestion in editor
Toggle inline breakpoint in debug editor
Detect language in editor
Refocus call hierarchy in editor
Refocus type hierarchy in editor
Show call hierarchy in editor
Show incoming calls in editor
Show outgoing calls in editor
Show subtypes in editor
Show supertypes in editor
Open to side in explorer
Find in folder in files explorer
Show next in history
Show previous in history
Focus down in icon select box
Focus next in icon select box
Focus previous in icon select box
Focus up in icon select box
Select focused in icon select box
Increase search editor context lines
Close inline chat
Discard hunk change in inline chat
Hold for speech in inline chat
Move to next hunk in inline chat
Move to previous hunk in inline chat
Regenerate in inline chat
Start inline chat
Unstash in inline chat
View in chat in inline chat
Show next in interactive history
Show previous in interactive history
Scroll to bottom in interactive
Scroll to top in interactive
Accept when expression in keybindings editor
Add keybinding in keybindings editor
Clear search results in keybindings editor
Copy keybinding entry in keybindings editor
Define keybinding in keybindings editor
Define when expression in keybindings editor
Focus keybindings in keybindings editor
Record search keys in keybindings editor
Reject when expression in keybindings editor
Remove keybinding in keybindings editor
Search keybindings in keybindings editor
Toggle sort by precedence in keybindings editor
Clear list
Close find in list
Collapse list
Collapse all in list
Expand list
Expand selection down in list
Expand selection up in list
Find in list
Focus any down in list
Focus any first in list
Focus any last in list
Focus any up in list
Focus down in list
Focus first in list
Focus last in list
Focus page down in list
Focus page up in list
Focus up in list
Scroll down in list
Scroll up in list
Select in list
Select all in list
Show hover in list
Toggle expand in list
Toggle selection in list
Delete left in note multi cursor
Exit note multi cursor
Add find match to selection in notebook
Change to code in notebook cell
Change to markdown in notebook cell
Accept chat in notebook cell
Focus in notebook cell chat
Focus next cell in notebook cell chat
Focus previous cell in notebook cell chat
Start notebook cell chat
Clear outputs in notebook cell
Collapse cell input in notebook cell
Collapse cell output in notebook cell
Copy down in notebook cell
Copy up in notebook cell
Delete notebook cell
Detect language in notebook cell
Edit notebook cell
Expand cell input in notebook cell
Expand cell output in notebook cell
Focus in output in notebook cell
Focus out output in notebook cell
Insert code cell above in notebook cell
Insert code cell below in notebook cell
Join above in notebook cell
Join below in notebook cell
Move down in notebook cell
Move up in notebook cell
Open failure actions in notebook cell
Split notebook cell
Toggle output scrolling in notebook cell
Center active cell in notebook
Comment selected cells in notebook
Move to next action in notebook diff
Move to previous action in notebook diff
Find in notebook
Focus bottom in notebook
Focus top in notebook
Fold in notebook
Format in notebook
Hide find in notebook
Unfold in notebook
Accept primary action in notification
Clear notification
Collapse notification
Expand notification
Toggle notification
Focus first toast in notifications
Focus last toast in notifications
Focus next toast in notifications
Focus previous toast in notifications
Show list in notifications
Clear filter text in problems action
Copy in problems action
Focus filter in problems action
Focus problems from filter in problems action
Open in problems action
Open to side in problems action
Show quick fixes in problems action
Move to first in quick input
Move to last in quick input
Move to next in quick input
Move to next separator in quick input
Move to next separator with quick access fallback in quick input
Page next in quick input
Go to next page in quick input
Go to previous page in quick input
Go to previous item in quick input
Go to previous separator in quick input
Toggle checked state in refactor preview
Reveal file in operating system
Reveal reference
Save all files
Accept input in source control
Clear input in source control
Force view next commit in source control
Force view previous commit in source control
View next commit in source control
View previous commit in source control
Cancel search
Copy match in search
Copy path in search
Focus next search result
Focus previous search result
Focus search from results
Open in editor from search
Open search result
Open search result to side
Remove from search
Replace in search
Replace all in search
Replace all in file from search
Replace all in folder from search
Restrict search to folder
Focus next input box in search
Focus previous input box in search
Select all matches in search editor
Focus level up in settings
Focus setting control in settings
Focus settings from search
Focus settings list in settings
Focus table of contents in settings
Show context menu in settings
Cancel test run
Cover all tests
Cover tests at cursor
Cover current file tests
Cover last run tests
Debug all tests
Debug tests at cursor
Debug current file tests
Debug failed tests
Debug last run tests
Open output peek in tests
Re-run failed tests
Re-run last run tests
Refresh tests
Run all tests
Run tests at cursor
Run current file tests
Show most recent output in tests
Toggle inline coverage in tests
Toggle inline test output in tests
Toggle testing peek history
Toggle search case sensitivity
Toggle search editor case sensitivity
Toggle search editor context lines
Toggle search editor regex
Toggle search editor whole word
Toggle search preserve case
Toggle search regex
Toggle search whole word
Show new file entries in welcome
Focus next widget
Focus previous widget
Cancel chat in workbench
Focus input in chat
Hold to voice chat in chat view
Start new chat
Go to next code block in chat
Go to next file tree in chat
Open chat
Go to previous code block in chat
Go to previous file tree in chat
Remove from chat
Send to new chat
Start voice chat
Stop listening and submit in chat
Close active editor
Close all editors
Close all groups
Close editors in group
Close folder
Close group
Close other editors
Close quick open
Close unmodified editors
Close window
Go to next change in compare editor
Open side in compare editor
Go to previous change in compare editor
Copy editor to new window
Disconnect debug
Restart debug
Run debug
Start debug
Step into target in debug
Step out in debug
Step over in debug
Stop debug
Change language mode in editor
Start dictation in editor
Copy path of active file
Create new untitled file
Open file
Open file or folder
Open folder via workspace
Open local file or folder
Reveal active file in windows
Save file
Save file as
Save local file
Save file without formatting
Find in files
Focus above group
Focus below group
Focus eighth editor group
Focus fifth editor group
Focus first editor group
Focus fourth editor group
Focus left group
Focus next part
Focus previous part
Focus right group
Focus second editor group
Focus seventh editor group
Focus side bar
Focus sixth editor group
Focus third editor group
Go to line
Go to symbol
Arrow down in interactive playground
Arrow up in interactive playground
Page down in interactive playground
Page up in interactive playground
Join editor in group
Keep editor
Open keybindings reference
Go to last editor in group
Move active editor group down
Move active editor group left
Move active editor group right
Move active editor group up
Move editor left in group
Move editor right in group
Move editor to first group
Move editor to last group
Move editor to next group
Move editor to previous group
Navigate back
Navigate forward
Navigate to last edit location
Open new window
Go to next editor
Go to next editor in group
Open editor at index 1
Open editor at index 2
Open editor at index 3
Open editor at index 4
Open editor at index 5
Open editor at index 6
Open editor at index 7
Open editor at index 8
Open editor at index 9
Open global keybindings
Open recent
Open settings
Toggle output
Pin editor
Go to previous editor
Switch to previous editor in group
Quick open file
Open least recently used editor in group
Open previous recently used editor in group
Quick open view
Toggle quick chat
Quit VS Code
Show remote menu
Reopen closed editor
Replace in files
Toggle search query details
Select theme
Show all editors
Show all symbols
Show commands
Split editor
Split editor down
Split editor in group
Split editor left
Split editor orthogonal
Split editor right
Split editor up
Switch window
Build tasks
Close terminal chat
Focus terminal chat input
Focus terminal chat response
Insert command in terminal chat
Insert first command in terminal chat
Make request in terminal chat
Next from history in terminal chat
Previous from history in terminal chat
Run command in terminal chat
Run first command in terminal chat
Clear terminal selection
Copy terminal selection
Find next in terminal
Find previous in terminal
Focus terminal
Focus accessible buffer in terminal
Focus find in terminal
Focus hover in terminal
Focus next in terminal
Focus next pane in terminal
Focus previous in terminal
Focus previous pane in terminal
Focus tabs in terminal
Go to recent directory in terminal
Hide find in terminal
Kill active tab in terminal
Kill editor in terminal
New terminal
Open native console in terminal
Paste in terminal
Rename active tab in terminal
Resize pane down in terminal
Resize pane left in terminal
Resize pane right in terminal
Resize pane up in terminal
Run recent command in terminal
Scroll down in terminal
Scroll down page in terminal
Scroll to bottom in terminal
Scroll to bottom accessible view in terminal
Scroll to next command in terminal
Scroll to previous command in terminal
Scroll to top in terminal
Scroll to top accessible view in terminal
Scroll up in terminal
Scroll up page in terminal
Select all in terminal
Select to next command in terminal
Select to previous command in terminal
Send sequence in terminal
Show quick fixes in terminal
Size to content width in terminal
Split terminal
Split active tab in terminal
Toggle find case sensitive in terminal
Toggle find regex in terminal
Toggle find whole word in terminal
Toggle terminal
Toggle auxiliary bar
Toggle editor group layout
Toggle full screen
Toggle maximize editor group
Toggle panel
Toggle sidebar visibility
Toggle Zen mode
Unpin editor
Zoom in
Zoom out
Reset zoom
View problems
Focus banner
Focus next action in banner
Focus previous action in banner
Toggle REPL in debug
Compare with clipboard
Compare with saved
Focus open editors view
Clear focus in status bar
Focus first in status bar
Focus last in status bar
Focus next in status bar
Focus previous in status bar
View debug
View explorer
View extensions
View scm
View search
Focus next with picker in breadcrumbs
Focus previous with picker in breadcrumbs
Select editor in breadcrumbs
Find repl input focus in list
Null action in notebook cell
Select all in notebook cell output
Move view down
Move view left
Move view right
Move view up
Next console in debug
Previous console in debug
Accept selected suggestion in terminal
Accept selected suggestion enter in terminal
Clear terminal
Hide suggest widget in terminal
Open detected link in terminal
Select next page suggestion in terminal
Select next suggestion in terminal
Select previous page suggestion in terminal
Select previous suggestion in terminal
Clear REPL action in debug
Pause debug
Go to next command in terminal accessible buffer
Go to previous command in terminal accessible buffer
Rename watch expression in debug
Set variable in debug
Toggle breakpoint in debug
Quit edit in notebook cell
Paste in files explorer
Delete file
Go to symbol in editor
Toggle screen reader accessibility mode in editor
Close call hierarchy in editor
Close type hierarchy in editor
Open and pass focus in explorer
Cancel cut in files explorer
Copy in files explorer
Cut in files explorer
Open file in explorer without losing focus
Go to first compressed folder
Accept changes in inline chat
Go to last compressed folder
Move file to trash
Go to next compressed folder
Go to previous compressed folder
Close inline remote tunnel
Copy inline remote tunnel address
Label remote tunnel
Rename file
Continue debugging
Step into debugging
Close reference search
Collapse sticky scroll list
Select in sticky scroll list
Toggle expand in sticky scroll list
Hide notifications list
Accept quick input in background
Go back in quick input
Navigate to next in editor picker
Navigate to next in file picker
Navigate to next in recent files picker
Navigate to next in view picker
Navigate to previous in editor picker
Navigate to previous in file picker
Navigate to previous in recent files picker
Navigate to previous in view picker
Select next in quick open
Select previous in quick open
Reload window
Search workspace in terminal
Toggle developer tools
Hide notifications
Stop listening to chat
Stop reading chat item aloud
Stop dictation in editor
Stop reading aloud
Start debugging with stop on entry
Stage selected ranges in git
Show markdown preview
Find references
Unstage selected ranges in git
Show markdown preview to side
Go to next reference
Revert selected ranges in git
Go to previous reference
Show call hierarchy
Generate with Github Copilot
Apply chat in editor
Insert code block in chat
Start terminal chat
Accept Github Copilot cursor panel solution
Go to previous Github Copilot panel solution
Go to next Github Copilot panel solution
Trigger inline suggestion
Accept selected code action
Hide code action widget
Preview selected code action
Select next code action
Select previous code action
Exit compare move in diff editor
Accept inline edits
Toggle Minimap
Toggle Line Numbers
Toggle Indent Guides
Toggle Render Whitespace
Toggle Activity Bar Visibility
Toggle Status Bar Visibility
Toggle Tabs Visibility
Toggle Centered Layout
Toggle Breadcrumbs
Increase Font Size
Decrease Font Size
Reset Font Size
Reveal in Explorer
Go to Next Error
Go to Previous Error
Duplicate Line
Add Cursor Above
Add Cursor Below
Add Cursor to Line Ends
Select All Occurrences
Go to Matching Bracket
Fold All
Unfold All
Toggle Fold
Open Recent
Reopen Closed Editor
Close Editor
Navigate Forward
Navigate Back
Select All Occurrences of Find Match
Shrink Selection
Expand Selection
Toggle Panel
Toggle Side Bar
Open Extensions View
Show Keyboard Shortcuts
Toggle Full Screen
Open New Window
Close Window
Reload Window
Open User Settings
Toggle Activity Bar
Toggle Status Bar
Toggle Tabs
Go to Next Editor
Go to Previous Editor
Close Other Editors
Close Saved Editors
Close Editors to the Left
Close Editors to the Right
Focus on Editor Group Above
Focus on Editor Group Below
Focus on Editor Group Left
Focus on Editor Group Right
Move Editor Left
Move Editor Right
Open File in New Window
Split Editor Left
Split Editor Right
Split Editor Up
Split Editor Down
Navigate to Last Edit Location
Select Current Line
Insert Cursor at End of Line
Insert Cursor at Start of Line
Add Selection to Next Find Match
Add Selection to Previous Find Match
Switch Window
Toggle Terminal Panel
Create New Terminal
Run Task
Configure Task
Show Problems Panel
Go to Next Problem
Go to Previous Problem
get screenshot
type [text]
type [text] and enter
keytap enter
keytap tab
keytap escape
keytap backspace
keytap delete
keytap space
keytap up
keytap down
keytap left
keytap right
go to line [number]
open file [filename]
search [text]
replace [text] with [text]

Special Custom Commands

get screenshot

Captures and sends a screenshot of your VS Code window to your mobile device.

type [text]

Types the specified text at the current cursor position in VS Code.

type [text] and enter

Types the specified text and presses Enter, useful for quick command execution.

keytap [key]

Simulates pressing a specific key (e.g., enter, tab, escape, backspace, delete, space, up, down, left, right).

go to line [number]

Moves the cursor to the specified line number in the current file.

open file [filename]

Opens the specified file in VS Code.

search [text]

Initiates a search for the specified text in the current file or project.

replace [text] with [text]

Replaces all occurrences of the first text with the second text in the current file.