# Development tools  ## AI assistant  The Gadget platform includes an AI assistant that can help you build your application. The assistant can help you with a variety of tasks, such as creating models, actions, and data generation, as well as writing code. The assistant can also help you debug your application by providing suggestions for how to fix errors. For more information, see the [AI assistant](https://docs.gadget.dev/guides/development-tools/ai-assistant) guide. ## Logger  Gadget has a built-in, scalable logging system available for use in every application. Gadget emits logs about important happenings within your application by default, like incoming HTTP requests, webhooks, and connection syncs. You can also emit your own logs. Logs are viewable and searchable in Gadget's built-in Log viewer. For more information, see the [logger](https://docs.gadget.dev/guides/development-tools/logger). ## CLI  Gadget's CLI, named `ggt`, is the command-line interface for the Gadget platform. `ggt` provides additional functionality for working with your Gadget applications using your existing tools on your machine. `ggt` isn't required for building end-to-end Gadget apps but supports syncing files locally (and more soon) for your preferred coding experience. For more information on how to use the [Gadget Cli check out our guide here](https://docs.gadget.dev/guides/development-tools/cli). ## Environment variables  Gadget offers built-in support for storing and accessing environment variables. For more information on how to manage your environment variables [read the guide here](https://docs.gadget.dev/guides/development-tools/environment-variables). ## Unit testing  You can use Gadget's to write and run unit tests for your Gadget application on your local machine. You can also set up a CI/CD pipeline that runs your unit test suite automatically when you push code to source control such as GitHub. For more information on setting up a unit test framework and CI/CD pipeline, see the [unit testing](https://docs.gadget.dev/guides/development-tools/unit-and-integration-testing) guide. ## Debugging  You can use Gadget's CLI, `ggt` to set up a backend debugger in VS Code or any of its forks. To get started, see the [debugging](https://docs.gadget.dev/guides/development-tools/debugging-and-profiling#debugging) guide. ## Profiling  You can use Node profiling tools like Google Chrome DevTools to profile your Gadget actions and routes. To get started, see the [profiling](https://docs.gadget.dev/guides/development-tools/debugging-and-profiling#profiling) guide. ## Operations dashboard  The operations dashboard provides visibility into your application's performance, errors, and resource usage through a collection of pre-built charts and tables. For more information, see the [ops dashboard](https://docs.gadget.dev/guides/development-tools/operations-dashboard) guide. ## Runtime environment  Gadget automatically manages a serverless runtime environment for your application. This environment is a Linux-based virtual machine that runs vanilla Node.js, and is optimized for running server-side Gadget code. Gadget manages all aspects of the environment, including starting and stopping workers, security upgrades, deployment, and handling requests. For more information, see the [Runtime Environment](https://docs.gadget.dev/guides/development-tools/runtime-environment) guide. ## Keyboard shortcuts  Gadget provides numerous keyboard shortcuts for use. For more information, see the [keyboard shortcuts](https://docs.gadget.dev/guides/development-tools/keyboard-shortcuts) guide.