To access the latest features keep your code editor plug-in up to date.
When you ask a question to Navie, it will search through all your AppMap Diagrams (if they exist) and your static source code for your project to pull in relevant traces, sequence diagrams, and code snippets for analysis. It will then send these code snippets and runtime code sequence diagrams to the Generative AI service along with your question. By sending this valuable context to the AI interface, your answers will be much more personal and specific to your codebase, files, and functions.
AppMap Navie AI is an AI assistant that enables you to ask architectural level questions about your code base. Navie is also able to help you generate new code that can span across your entire project. The primary user interface for Navie is within your VS Code or JetBrains code editor. Refer to the Navie docs to learn how to open Navie for your code editor.
The Navie user interface consists of 5 key areas.
Model: <Model Name> (<location>)
. When using the default Navie backend, the location will be listed as default
. When using your own OpenAI API key the location will be listed as via OpenAI
. When using Navie Bring Your Own Model
, the location will be the value of the OPENAI_BASE_URL
environment variable, for example via localhost
when using Ollama or LM Studio.
Navie supports a variety of @
prefixed commands you can use at the beginning of any question you ask. For example, you can use the @plan
command to focus the Navie AI response to build a detailed architecture plan for a new feature. You can use the @generate
command to create code to implement a Navie AI created plan. Navie supports a growing list of advanced commands which focus the AI responses towards completing the specific task requested.
For more detailed documentation about the available Navie prefix commands available, refer to the Navie Commands Documentation.
To generate the highest quality responses from Navie, we recommend the following approach.
We recommend creating maps that are most relevant to the question or area of the application you are going to be working with. For example, if i wanted to understand how my new user registration flow worked I could create a remote recording of a new user registration flow. Alternatively, I could run all the test cases related to new user creation, registration, and adjacent areas.
Depending on your language and framework there are up to 5 different ways that you can record AppMap Diagrams for your application.
Test Case Recording: This method is particularly useful for automated testing environments. AppMap integrates with numerous testing frameworks, creating individual AppMap Diagrams for each test case run. These AppMap Diagrams include detailed information such as the test framework, test case names, and their outcomes, enabling a comprehensive overview of test coverage and facilitating easier debugging and performance optimization.
Requests Recording: Ideal for web applications, this method records each HTTP request processed by your application. By simply running your application with the AppMap agent and interacting with it—either manually or through automated scripts—you can generate a rich dataset of AppMap Diagrams that capture the full scope of your application’s request handling.
Remote Recording: Similar to request recording but offering more control over the recording session. You initiate and stop recording via HTTP commands, allowing the inclusion of multiple requests and other non-HTTP activities within a single AppMap. This method is particularly suited for capturing detailed interactions within web applications, including background jobs and other processes.
Code Block Recording: Provides the highest level of control, enabling you to specify exactly which blocks of code to record by inserting simple code snippets. This method requires source code access and is a powerful option for targeting specific functionalities or debugging complex issues. (Code Block recording is language specific, refer to the language reference docs for examples).
Process Recording: A broader approach that records all activity within the configured scope of your application, from startup to shutdown. This method is useful when other methods are not applicable or when you need a comprehensive capture of your application’s behavior. (Process recording is language specific, refer to the language reference docs for examples).
Each of these methods generates AppMap Data in JSON format, which are then visualized through interactive diagrams in your code editor. This visualization supports a deep understanding of your application’s architecture, dependencies, and runtime behavior, facilitating enhanced code quality and performance optimization.
Navie, can address a wide range of questions about your application, extending beyond what static analysis AI assistants can provide, to understand dynamic interactions, dependencies, and performance bottlenecks to help your developers design and deliver solutions faster for a host of complex issues.
If you are not able to use the AppMap OpenAI proxy, you can bring your own OpenAI API key, or use an entirely different AI Model, hosted in your environment or hosted locally.
You can ask free formed questions, or refer to the Navie Reference docs to learn more about the advanced Navie chat commands you can use with your question.
Examples of good questions to ask Navie.
behavior X
happening in dev and not in production?feature x
return a 500 error?feature x
use the database more efficiently?Navie can do more than just provide code implementation details, you can talk to Navie about a variety of other topics as you are updating your application based on it’s recommendations.
Identifying Components: Navie can search through your AppMap Data to highlight the files, methods, and external services interacting during the registration process, offering runtime sequence diagrams for clarity.
Implementation Guidance: After identifying the areas of interest, you might need specific implementation advice. For instance, where and how to integrate third-party libraries into your existing codebase. Navie can provide detailed instructions on modifying settings files, updating URL configurations, and extending forms with new functionalities.
Debugging and Optimization: Beyond initial implementation, Navie can assist in debugging by pointing out potential sources of errors or inefficiencies in the code paths triggered during user interactions.
Comparative Analysis and Recommendations: By analyzing the runtime behavior and execution flow, Navie can offer recommendations to enhance performance, improve security, or reduce technical debt, backed by the rich data context of your application’s actual operations.
Custom Queries: Tailor your questions to fit unique development needs—whether you’re troubleshooting a specific error, seeking optimization opportunities, or curious about the interactions between various components of your application.
Continue to ask follow-up question to Navie as you are making code changes or when you need additional details or more specific advice. Additionally, as you make changes to your application, continue creating AppMap recordings of the updated code interactions and start new conversations with Navie to dive deeper into your feature implementation.