# Welcome to Devin 👋

Devin is a DevOps Platform for version control, testing and advanced deployment and data migration workflows — specifically built for Claris FileMaker

Devin gives you a safe, structured, and collaborative workspace for FileMaker development. It not only supports reliable deployments and data migrations, but also helps you track every change, document progress transparently for the whole team, test updates in isolation before release, and manage deployments across different server environments—all in one easy-to-use platform.

Whether you are a solo developer managing critical systems or part of a larger team, Devin introduces a new way of working that prioritizes safety and stability. By taking advanced software engineering practices and adapting them specifically for the FileMaker environment, Devin empowers you to structure your workflow, keep every change visible and well-documented, and move solutions from development to production with clarity and confidence—eliminating the stress of manual file transfers.

This documentation will guide you through using Devin, from your first setup to mastering workflows that will make your development process smoother and more secure.

{% embed url="<https://vimeo.com/1049408556>" %}
Master full Application Lifecycle Management for a FileMaker project with Devin
{% endembed %}


# What is DevOps?

An introduction to DevOps in the FileMaker world

At its core, DevOps is about making the process of building, testing, and releasing software safer, faster, and more reliable. The goal of DevOps is to automate as many of the phases in your software's lifecycle, from development (Dev) to operations (Ops), as possible.&#x20;

With these practices in place, it's easy to implement short, fast and documented development iterations and You'll have peace of mind when rolling out changes to your clients. And if a bug fix or new feature breaks existing functionality, you have a standard, safe and automated workflow for rolling back to a previous version of your software.

Think of it like cooking a complex dish. DevOps is your master recipe and a well-organized kitchen workflow.

Before you add a new ingredient or try a new technique (making a change to your app), you first jot it down on your recipe card (version control). Then, you taste that small change separately to make sure it complements the dish without ruining it (testing). Once you're sure it works, you stir it into the main pot (deployment).

This process ensures you know exactly what's in your dish at all times. If an ingredient tastes off, you can easily trace it back and remove it, reverting to the last delicious version (rollbacks). This structured, quality-focused approach is what DevOps brings to software development, making the process more reliable and less risky.

For many FileMaker developers, this way of working has been out of reach.

## The DevOps Challenge in FileMaker

Implementing DevOps in FileMaker is a little more challenging than in other development ecosystems and programming languages. Even though there exists tons of great DevOps tools for version control, testing and deployment automation (for instance, GitHub), they all rely on the software files being easily readable (code stored as text). Because the `fmp12` file format is binary and unreadable, these common tools cannot interpret and manage our FileMaker software for us.

This gap often leads to less ideal development workflows that carry unnecessary risk:

* **Live Development:** Making changes directly on a live, production system introduces risks of breaking things with no way of reverting back if things break.&#x20;
* **Manual Deployments:** Moving files by hand and manually using the Claris FileMaker Data Migration Tool often relies on checklists and memory to make sure you didn't miss a step.&#x20;
* **Unclear History:** Having no definitive record of who changed what, when, or why makes troubleshooting difficult and rollback impossible.&#x20;

However, as Claris provides more and better developer tools (APIs and CLIs) it allows the community to build special DevOps tools that understands FileMaker's proprietary format.&#x20;

{% hint style="info" %}
If you're interested in learning more about this, this [Developing a DevOps Tool for FileMaker, using FileMaker](https://assets-global.website-files.com/62d1430f752de40906dd904e/62d660821701302d41c60879_dwol_thesis_compressed.pdf) thesis provides in-depth research into implementing DevOps in FileMaker.
{% endhint %}


# DevOps Tools for FileMaker

An overview of established DevOps tools for FileMaker

## OttoFMS and 360Deploy

Tools such as OttoFMS and 360Deploy have played a key role in bringing reliable deployment automation to the FileMaker platform. By handling essential operations like backups, server-to-server file transfers, and data migration using the FileMaker Data Migration Tool, these solutions have helped many developers reduce risk when moving files between development and production servers. For many teams, tools like OttoFMS and 360Deploy marked the first real step toward a more structured and repeatable deployment process. Even now, they remain established options for developers focused on system stability and efficient deployment workflows.

## Introducing Devin

Devin extends automation beyond deployment and into the development and testing phases of the application lifecycle. While its deployment and data migration features are robust, they don’t offer the same level of flexibility and complexity as OttoFMS. However, Devin introduces structured versioning, branching, and detailed change tracking—allowing teams to save versions with clear notes about what was changed and who made them. It also offers features to compare changes between the saved versions, such as seeing code diffs for scripts and custom functions, and provides a simple way to organize and run tests to ensure everything works as expected before and/or after deployment. By supporting every stage from development to deployment, and offering a modern and best practice development workflow, Devin gives teams great control, reliability, and peace of mind.&#x20;

<figure><img src="/files/vjrI9EoNocMA3yWQgVMe" alt=""><figcaption><p>Devin's integrated DevOps workflow</p></figcaption></figure>

With Devin, your team can:

* **Know Your History:** Maintain a clear, searchable record of every change made to your application.
* **Work Safely:** Develop and test new features in isolated workspaces, so your live system stays stable and secure.
* **Automate with Confidence:** Reduce manual errors by automating testing and deployment steps, making your releases more predictable.
* **Collaborate Effectively:** Provide everyone on your team with visibility into the process, making it easier to coordinate changes—whether you work alone or as part of a larger group.


# Devin vs Otto

Beyond Deployments: Full App Lifecycle Management for FileMaker

If you’ve been working with FileMaker for a while, you know OttoFMS raised the bar for deployment automation. They made deployments and data migrations a lot safer, faster, and less stressful—something that changed the way a lot of us work. OttoFMS still shines when it comes to flexibility and handling more complex deployment workflows, which is a big win if you have unique project needs or need something beyond the basics.

Devin builds on that foundation and takes things further by bringing every stage—development, testing, and delivery—together in one workflow. You still get the reliable deployment and data migration features, but you also get an isolated workspace where you and your team can safely develop and experiment. Saving versions with clear, helpful notes is easy, so everyone can see what changed and who did what. You can track changes in files down to actual code changes in scripts and custom functions, try out ideas on separate branches, and run test scripts right from within Devin before you put anything live. It all adds up to a smooth, modern way to manage the entire lifecycle of your FileMaker apps, whether you’re working on your own or as part of a bigger team.

<figure><img src="/files/Tczu0H4RIrNJnQrFCSD7" alt=""><figcaption><p>Otto vs Devin in DevOps coverage</p></figcaption></figure>


# Version Control

Introduction to Version Control in FileMaker

## The Essence of Version Control in FileMaker

Version control is the practice of tracking and managing changes to your FileMaker solutions—scripts, custom functions, tables, layouts and more. It’s essential in modern FileMaker development and creates a safe space for experimentation, knowing that any unwanted changes or deployments can be quickly and reliably rolled back.

## Why Version Control Matters

* **History and Accountability**: It keeps a history of who made which changes and when, adding a layer of accountability and transparency to the development process.
* **Collaboration**: Enables multiple developers to work on either individual or shared development files.
* **Risk Mitigation**: Offers the ability to quickly roll back to a previous version, reducing the risk of disruptions or significant setbacks in development.

## Devin's approach to Version Control

For years, version control has been a missing piece in the FileMaker development toolkit. Devin changes that. As the first platform to offer integrated version control for FileMaker, Devin makes managing versions and branches not only possible, but seamless.

With our recent releases, we’ve taken things even further. Our new [Compare Versions](/guides/versions/compare-versions) feature—powered by our XML Analysis API—lets developers instantly see what’s changed between their saved .fmp12 versions, with fast, GitHub-style code diffs for Scripts and Custom Functions. It’s version control built for how FileMaker developers actually work—integrated with deployment automation features you expect from tools like OttoFMS.&#x20;

### Branches

A branch in Devin acts as an isolated copy of a development file, named in the format `<filename>_<branch>.fmp12`. Each project has a default branch that we call `main` and the basic idea is that instead of making modifications directly to the `main` file, we create new branches for different purposes. For instance, a branch for development could be called `dev`.

<figure><img src="/files/PysN8WymFAH9u1de9YRf" alt=""><figcaption><p>Branching a File in Devin</p></figcaption></figure>

Then, whenever we feel the `dev` file is stable and tested enough (see [Regression Testing](/features/regression-testing)), we can [release](#releases) it back to `main` (or another branch). This way, `main` will always represent **the latest stable version of our development file**.

In the Project Workspace's Modules tab, developers can see an overview of all files that are part of a project. Clicking on a file will show a visual graph of branch, version and release history performed by all team members.

<figure><img src="/files/RHa3mVxDzoKETybCfXwV" alt=""><figcaption><p>Overview of a Module's Branches and associated Versions</p></figcaption></figure>

{% hint style="info" %}
Once you add a development file to a project (see [Adding .fmp12 files to a project](https://docs.devin.fm/getting-started/adding-.fmp12-files-to-a-project)), a copy of the file will automatically be placed on the `main` branch, named `<filename>_main.fmp12`. The original development file without the branch name will not be used by Devin and can be deleted manually.&#x20;
{% endhint %}

### Versions

Devin manages version control by allowing developers to save versions of the branched `fmp12` files as snapshots at various stages of development. These snapshots are the equivalent to **git commits**, except they are either **clones or full backups** of the branched file. The idea is that they act as key milestones or backups of stable stages of the file, offering a straightforward way to save backups, document progress and revert back to an earlier version if needed.

<figure><img src="/files/p3L4SLhOSwzGXwrPi05O" alt=""><figcaption><p>Saving a Version in Devin</p></figcaption></figure>

The Project Workspace's Branches view shows all versions for the selected branch.

<figure><img src="/files/r9OC8OkPuBcBbSb9A4Ii" alt=""><figcaption><p>Version history for selected branch</p></figcaption></figure>

### Releases

The release process in Devin offers a method to integrate changes from any branch into another. Traditional merging, common in other development ecosystems where code changes from multiple branches are combined (like with git), isn't currently possible in FileMaker due to limitations in Claris technologies. Instead, Devin's release function simply replaces the target branch file with the file from the source branch.&#x20;

<figure><img src="/files/l34n6XKM2WSGBMfj8msX" alt=""><figcaption><p>Releasing a Version in Devin</p></figcaption></figure>

In the Branches view, selecting a version opens a sidebar with more information about the snapshot and buttons to perform actions such as releasing the version to another branch.

<figure><img src="/files/G79BVbfAz1GKnxckmWto" alt=""><figcaption><p>Releasing 1.3 on <code>dev</code> to <code>main</code></p></figcaption></figure>

While this approach does not yet support merging of branches, and thus the idea of working on parallel branches simultaneously, we're committed to enhancing these capabilities as soon as Claris technologies allow it. Until these capabilities are in place, it's recommended to designate a primary development branch as the central source of truth for your projects and use other branches for more temporary use cases such as testing or experimentation.


# Advanced Version Control

Unlocking Powerful Change Tracking in Your FileMaker Projects

## Overview

Devin 1.2+ introduces a groundbreaking new capability for FileMaker developers: Advanced Version Control. At the core of this is the [Compare Versions](/guides/versions/compare-versions) feature, powered by our new XML Analysis API. This innovative API enables fast and efficient comparison of two fmp12 files. Think of it as GitHub-style code diffs, designed specifically for FileMaker files.

<figure><img src="/files/Dd6yKizAcaKW7xOXnuR8" alt=""><figcaption><p>Advanced Version Control in Devin 1.2+</p></figcaption></figure>

{% content-ref url="/pages/FJcGOosA0ecwcOrNpuRS" %}
[Compare Versions](/guides/versions/compare-versions)
{% endcontent-ref %}

## What is the XML Analysis API?

The XML Analysis API is Devin Server’s newest and most intelligent component. Leveraging the XML representation of fmp12 files, it computes differences in the matter of seconds. The API highlights a summary of changes, including detailed diffs for Scripts and Custom Functions, making it perfect for near real-time change tracking.

## What’s Next?

Future updates will expand the [Compare Versions](/guides/versions/compare-versions) feature to allow comparisons beyond the active branch and introduce more granular tracking for schema changes. Stay tuned for more updates as we continue enhancing this powerful tool.


# Regression Testing

Introduction to Regression Testing with Devin

## Embracing Regression Testing

In the dynamic world of software development, ensuring the reliability and functionality of your application through updates and enhancements is important. This is where regression testing comes into play, a concept that, though widely recognized in general software development, is very new within the Claris FileMaker community. Regression testing involves systematically checking that recent scripts or schema changes haven’t affected or broken existing features, ensuring that your application continues to operate as expected before shipping new versions to your clients.

## Why Regression Testing Matters

* **Maintain Integrity**: As your FileMaker project evolves, regression testing helps maintain the integrity of existing functionalities, ensuring new changes don't introduce errors.
* **Enhance Quality**: It's a proactive measure to enhance the overall quality of your application, contributing to a more stable and reliable software product.
* **Boost Confidence**: Knowing that changes won't break existing functionalities boosts confidence among developers and stakeholders regarding the continuous improvement of the application.

## Testing Methodology

With regression testing, we want to validate both individual components ("**units**") and their interactions with external dependencies ("**integrations**"). This ensures your application's robustness before **releasing changes to a branch** or before **updates are** **deployed between environments**.&#x20;

### Unit Tests

These tests focus on individual components or functions within your application, isolating each piece to verify its correctness. An example could be testing a script that calculates the total price in an invoice. By writing a Test Script that feeds predefined inputs into this function and checks if the output matches expectations, developers can ensure that even the smallest units of the application perform correctly.

### Integration Tests

While unit tests examine the pieces, integration tests check how those pieces work together. An example might involve testing the entire invoicing process, from adding line items to generating the final invoice. Another example could be to validate that you get an expected http code back from an API, given a certain json payload. This ensures that when individual components interact, they do so as expected, and the end-to-end process is error-free.

## Implementing Regression Testing using Devin

Devin introduces a simple testing framework that seamlessly integrates with your FileMaker Script Workspace, allowing you to write **Test Scripts**.

* **Organized Test Scripts**: In your file’s script workspace, create a folder for your tests. By default, Devin will look for a `Tests` folder, but you can specify a custom name in the [Project Settings](/guides/projects/project-settings). Devin will interpret all scripts in this and any sub-folders as test scripts.&#x20;
* **Defining Success**: Utilize the `Exit Script [True]` command within your test scripts to signify success. If a test script does not return `True`, Devin will interpret the test as `FAILED`.

<figure><img src="/files/gxFkDKjRHkE8Y6TdBfgW" alt=""><figcaption><p>Example of a Script Workspace with three Test Scripts</p></figcaption></figure>

Then, access the Modules -> Tests tab in Devin's Project Workspace to [Load Test Scripts](/guides/tests/load-test-scripts) and [Run Test Scripts](/guides/tests/run-test-scripts).

<figure><img src="/files/VV1RcKfje2TPOVZ1m0dD" alt=""><figcaption><p>Example of Tests running for a Module on a <code>dev</code> Branch</p></figcaption></figure>

{% hint style="warning" %}
Devin utilizes the FileMaker OData API to execute your tests. For successful test execution, ensure that the `odata` extended privileges are enabled for the account specified when adding the Module to Devin. Additionally, be aware that the FM OData API restricts script names from starting with numbers or containing special characters.
{% endhint %}


# Deployments

Understanding Deployments

Devin streamlines how FileMaker projects are deployed and managed across various [**Environments**](/features/deployments/default-environments), from development to production. Understanding deployments and the strategies for effectively managing them is crucial for maintaining the integrity and performance of your FileMaker applications.

In Devin, any `fmp12` file that exists outside the development server is considered a deployment. These deployments are essentially live versions of your projects, situated in different stages of the development lifecycle (environments). Each deployment links back to a corresponding file in the development environment, as well as a release branch. This way you can link a branch to a specific environment which allows you to setup custom deployment flows.&#x20;

For instance, the below image shows an example where a `UAT` deployment is linked to a `test` branch, meaning that whenever there is a new release on the `test` branch, it can be deployed to `UAT`.

<figure><img src="/files/unD0yRaauFfN2KlKzJY9" alt=""><figcaption><p>Example of a Module with a Deployment on two Environments, UAT and PROD, each linking to a respective Branch</p></figcaption></figure>


# Default Environments

Separating Deployments Across Environments

Devin supports deploying to multiple environments to ensure robust testing and stability before changes reach production. The default environments include:

* **Development (development server)**: Where new features and changes are initially made. This environment is used for development and initial in-house testing.
* **Staging**: Acts as a pre-production environment where all elements of the application are tested to mimic production operations without affecting the live environment.
* **Production**: The live environment where your application runs and is accessible by end-users.


# Workflows

Deploying and Testing in Stages

The deployment workflows you adopt can vary widely depending on factors like project size, complexity, team preferences, and budget constraints. Devin is designed to support a range of workflows, from simple direct deployments from development to production to more sophisticated setups involving multiple stages such as development, staging, and production environments. This flexibility ensures that regardless of how your team prefers to operate or the specific demands of your project, Devin can facilitate a smooth and efficient deployment process, accommodating everything from quick updates to comprehensive testing cycles before a public release.

## Common Workflow

1. **Initial Deployment to Staging**: Once a release is ready, it is first deployed to the staging environment. This step is critical for conducting user acceptance testing, and performance assessments without impacting the production environment.
2. **Review and Adjustment**: If the deployment in the staging environment reveals issues or areas for improvement, adjustments are made back in the branched development environment. This iterative process ensures that only thoroughly vetted changes make their way to production.
3. **Final Deployment to Production**: After satisfactory testing and review in the staging environment, the release is deployed to production. This final step makes the new features and fixes available to end-users.

## Iterative Development, Testing and Deployment

The deployment process is inherently iterative, allowing teams to continuously refine and improve their applications. If issues are detected at any stage, developers can revert to earlier versions, make necessary modifications, and redeploy to staging for further testing. This cycle can repeat as needed, emphasizing the importance of each environment in delivering a stable and reliable final product.


# Under the Hood

Deploying and migrating updates across different environments, such as moving a new version from the development server to staging, is a complex process and involves many steps on both the development and the target server. With just a single click in the Devin App, these steps are all automated by the Devin APIs on the respective servers.

{% hint style="info" %}
The current version of Devin implements a default process for rolling out releases across `STAGING` and `PRODUCTION` environments. Soon, this will be extended (see [#looking-ahead-enhacing-deployment-flexibility](#looking-ahead-enhacing-deployment-flexibility "mention")).
{% endhint %}

## Default Deployment Pipeline

The Default Deployment Pipeline listens for new [Releases](/guides/releases) to an [Environment](/guides/deployment-environments)'s Release [Branch](/guides/branches) that has a different [version number](/guides/versions/save-a-version#version-numbers) than the [Deployment's](/guides/deployment-environments). This means that if your production environment uses your main branch as release branch and a higher or lower [Version](/guides/versions) is released to `main`, this pipeline lets you roll out the release using a standardised and automated deployment and data migration process.&#x20;

For a guide on how to trigger this pipeline for a deployment, see [Deploy a Release](/guides/releases/deploy-a-release).

<figure><img src="/files/34BG0ZBnvLFCCUOadqT2" alt=""><figcaption><p>Devin's Default Deployment Process</p></figcaption></figure>

### What happens on the Development Server

1. **Cloning the respective Branch File**: Clones the latest Version that was released to the respective release branch.
2. **Transfer**: The cloned file is securely transferred to the target server.

### What happens on the Target Server

1. **Close Live File**: Temporarily closes the original live file (if no users are connected to it). (we are currently investigating approaches for supporting zero-downtime data migration processes)
2. **Data Migration**: Utilizes the FileMaker Data Migration CLI Tool to migrate data from the original file to the new version.
3. **File Replacement**: Moves and opens the new file, replacing the old version.

## Safety and Recovery Mechanisms

Devin Server APIs incorporate robust safety features that handle communication and process execution between servers, designed to handle the complexities and potential risks involved in updating and migrating data across environments. These mechanisms ensure that the system remains stable and secure throughout the deployment process, safeguarding against disruptions that could impact business operations.&#x20;

### Error Handling and Rollback Capabilities

#### Proactive Monitoring

Devin continuously monitors servers and processes for any signs of issues. This includes checking that FileMaker Server runs as expected, that servers has enough resources available to perform actions and that update processes are not initiated if there are users connected to the respective file(s).&#x20;

#### Automatic Rollbacks

In case of an error during the deployment or migration phase, Devin is engineered to automatically revert to the previous state of the application. This rollback is triggered if specific error conditions are met, ensuring that the live environment remains unaffected by the failed update attempt.

### Security and Integrity Checks

#### Access Controls and Authentication

All communication between Devin Server APIs, including server status checks, file transfers and data migration logs, utilizes the SSL certificate installed on FileMaker Server. This ensures that every interaction is securely encrypted and authenticated, safeguarding against unauthorized access and protecting data integrity. Read more about [Network Considerations](/setup-and-maintenance/prerequisites/network-considerations) in the Setup & Maintenance section. &#x20;

#### Data Verification (not yet implemented)

{% hint style="warning" %}
Devin does not verify the integrity of the data being migrated during the data migration process. If the FileMaker Data Migration Tool completes sucesfully, Devin will interpret the migration step as succeeded and continue. The data migration logs can be viewed in the Devin App's Project Workspace -> Migrations -> Details.
{% endhint %}

## Execution Safety

### Process Queuing and Isolation

To safeguard live environments from disruptions, Devin Server APIs utilize a sophisticated subprocess and queuing system for all its processes. This queuing system manages all operations as isolated tasks and prevents Devin from starting more concurrent processes than it can handle or is configured for (see [System Requirements](/setup-and-maintenance/prerequisites/system-requirements#hardware-and-concurrency)).

This means that processes may enter a queue and wait to be triggered. For example, if multiple developers simultaneously initiate operations on a Development server, some processes might experience a delay before starting.&#x20;

{% hint style="info" %}
Devin Server runs as a background system service on your server. On Windows it is installed and managed as a native `Windows Service`, and on Unix (Linux/macOS) it is configured as a `systemd` service, managed with `systemctl`.
{% endhint %}

## Looking Ahead: Enhacing Deployment Flexibility

Devin currently adheres to a structured process for deployment updates to maintain system stability. However, we are excited about the upcoming releases of features that we call **Cycles** and custom **Pipelines**. These will not only offer more advanced and customizable deployment workflows but also the ability to integrate automated [Regression Testing](/features/regression-testing) within these workflows. Stay tuned 🚀


# Server & File Monitoring

Monitor All FileMaker Servers and fmp12 files from a single window

When a server is added in Settings -> Servers, they become visible in the App's Monitor window. From here, you can monitor the status of the server and all of its files, as well as performing operations such as **opening**, **closing** and **connecting** to the file.

This gives you a complete overview of all your servers and files without the need to have multiple FileMaker Admin Console windows open in a browser.

The server's cloud icon indicates the status of the server (FileMaker Server Admin API and Devin Server API). A green cloud indicates no issues. A red cloud means that the connection to the server's Devin API failed or that FileMaker Server is not running.

<figure><img src="/files/ZRt3KcBZMgPZYmz0Jsqj" alt=""><figcaption><p>Monitor window with file actions and a server showing an error </p></figcaption></figure>


# Prerequisites


# System Requirements

Minimum OS and Hardware Requirements for Devin App and Devin Server

## Devin App

**Operating System:**&#x20;

* macOS 13 (Ventura)
* Windows 10 (No official support, but raw files can be provided)

**Claris FileMaker:** FileMaker Pro 2023 (20) or later

## Devin Server

{% tabs %}
{% tab title="Development" %}
**Operating System**

* Linux: Ubuntu 20.04 or later
* Windows: Windows Server 2019 or later

**Claris FileMaker Server**\
FileMaker Server 2023 (20) or later

**Hardware**\
CPU cores: 2\
CPU architectures: x64 or arm64\
Memory: 8GB

**Networking**\
Continuous internet connectivity.
{% endtab %}

{% tab title="Staging/Production" %}
**Operating System**

* Linux: Ubuntu 20.04 or later
* Windows: Windows Server 2019 or later

**Claris FileMaker Server**\
FileMaker Server 2023 (20) or later

**Hardware**\
CPU cores: 4\
CPU architectures: x64 or arm64\
Memory: 8GB

**Networking**\
Internet connection during Devin Server updates only when a Devin Server update is manually triggered from the App's Server Settings window.
{% endtab %}
{% endtabs %}

### Hardware and Concurrency

Development servers typically have lower hardware requirements compared to staging or production servers. The hardware capacity of a non-development server determines its level of concurrency, influencing the number of Devin deployments and data migration tasks that can run simultaneously. It's recommended to allocate at least 4GB of RAM per concurrent operation. These settings are configurable under App -> Settings -> Servers.

{% hint style="warning" %}
Configuring a server for more concurrency than its hardware can handle can lead to server and FileMaker Server crashes. Therefore, it's important to carefully consider the hardware capacity and configure concurrency accordingly to avoid system instability and potential downtime.
{% endhint %}


# Network Considerations

This page details the ports, protocols and firewall rules needed to ensure connectivity between the Devin App, Devin Engine, and all Devin Server environments.

## Devin App ↔ Devin Server

First, make sure your computer can access your *Development Server.* The **Devin App** on your PC only ever connects to the **Devin Engine** on that server. In practice, this means that your *Development Server*'s firewall should allow incoming connections from your PC's IP address.&#x20;

### Default FileMaker Server Requirements

Both port `443` and `5003` are part of a default FileMaker Server installation. If you’re already hosting files through FileMaker Server, they’re almost certainly open and configured correctly—no extra network changes should be required to connect your Devin App to your *Development Server*.

<table><thead><tr><th width="83">Protocol</th><th width="66">Port</th><th>Purpose</th></tr></thead><tbody><tr><td>HTTPS</td><td>443</td><td>FileMaker Server API access</td></tr><tr><td>FMNET</td><td>5003</td><td>FileMaker Pro access to hosted <code>fmp12</code> files (Devin Engine)</td></tr></tbody></table>

{% hint style="info" %}
If you’ve enabled FileMaker’s HTTPS tunneling feature, all client traffic (including FMNet) is routed over HTTPS/443, so you no longer need to open port 5003.
{% endhint %}

## Devin Server ↔ Devin Server

All traffic to *Staging* or *Production* servers is routed through your *Development Server.* The **Devin App** never connects to them directly. In practice, this means that your *Staging* or *Production* servers must allow incoming connections from your *Development Server* (see table below).

### Environment-Specific Requirements

<table><thead><tr><th width="170">Scenario</th><th width="256">Development Server (Outbound)</th><th>Staging/Production Server (Inbound)</th></tr></thead><tbody><tr><td>Internet-Exposed</td><td>Allow HTTPS on TCP/443</td><td>Accept HTTPS on TCP/443 only from Development Server's IP</td></tr><tr><td>Internal (LAN/VPN)</td><td>Allow HTTPS on TCP/443</td><td>Permit HTTPS on TCP/443 per ACL</td></tr></tbody></table>

{% hint style="info" %}
&#x20;On the *Development Server*, the **Devin Engine** and **Devin Server API** communicate locally over `HTTP` on `localhost:45712` (configured automatically at install). When the *Development Server* reaches out to other Devin Servers, it uses `HTTPS` (default port `443`) through the same **IIS** or **Nginx** web server that FileMaker Server uses for Admin Console, WebDirect, and Admin/Data/OData APIs, leveraging your existing SSL certificate and reverse-proxy settings for end-to-end encryption.
{% endhint %}


# Installation

Download and install Devin in a matter of minutes

## Components

Devin consists of two primary components.

### Devin App

This is a `fmp12` file that gets installed locally on your **workstation**. Developers access Devin's features through this app.

### Devin Server

Running on your servers, it comprises the **Devin Engine** and various **Devin APIs**. This backend executes the operations initiated from the **Devin App**. There are two key server roles:

* **Development Server**: Hosts all development files and includes the Devin Engine (`devin-engine.fmp12`) which is automatically installed for Development server types.
* **Non-Development Server**: These servers hosts your `fmp12` files in various non-dev environments, such as staging, Q/A, or production.

{% hint style="info" %}
The Devin App does not store any project data. Developers can easily collaborate on projects because each Devin App connects to the shared `devin-engine.fmp12` database, located on your development server.
{% endhint %}


# Install Devin App

The gateway to Devin's features

{% stepper %}
{% step %}

### Download

[Download](https://www.devin.fm/product/download) the macOS installer matching your Devin Server version.
{% endstep %}

{% step %}

### Install

Run the macOS `Devin-App-<version>.pkg` installer and follow the on-screen instructions.
{% endstep %}

{% step %}

### Drag to Dock (optional)

When the installer has finished, the `Devin.fmp12` FileMaker app will be located in your `Applications` folder. Drag this to the right side of your dock to easily access it.&#x20;

<div align="left"><figure><img src="/files/YyGDZoTclHkl2wfGQx6a" alt="" width="295"><figcaption></figcaption></figure></div>
{% endstep %}
{% endstepper %}

{% hint style="warning" %}
After installation, please restart FileMaker Pro to make sure all components of Devin App gets correctly instantied within FileMaker Pro. Devin App cannot be installed by transferring the Devin.fmp12 file to another computer.
{% endhint %}


# Install Devin Server

This section guides you through installing Devin on your servers, which is similar to installing FileMaker Server.

If you do not want to setup Devin yourself or if you already host your servers through an external hosting provider where you do not have root access, jump to [Devin through a Hosting Provider](/setup-and-maintenance/installation/install-devin-server/devin-through-a-hosting-provider) for a guide on how to get Devin in the cloud through our selected [Devin Partners](/setup-and-maintenance/installation/install-devin-server/devin-through-a-hosting-provider#devin-partners).

If your server already has a pre-release version of Devin Server installed, see [Upgrading from 1.0 Beta](/setup-and-maintenance/installation/install-devin-server/upgrading-from-1.0-beta).


# Install Devin on Your Own Server

The following steps guides you in installing Devin Server

## Download and Install Devin Server

{% tabs %}
{% tab title="Windows Server" %}
[Download](https://www.devin.fm/product/download) the latest Devin Server installer for Windows Server.

Run the `Devin-Server-<version>.exe` installer and follow the on-screen instructions.

The installer will prompt for:

* Credentials for the FileMaker Admin Console account
* Devin Server Type (Development or Staging/Production)

### For Staging/Production Server Installations

#### Save the API Key

After installing a non-development server, the graphical installer will show an API key in a pop-up window. Save this key, as you will need this when adding the server in the Devin App.&#x20;

If you loose the API Key, it can be located in `/Program Files/Devin/info.json` on the server.
{% endtab %}

{% tab title="Linux" %}
On Linux, you have two options for installing Devin: interactively or unattended. The interactive is the recommended method and involves manual installation steps, suitable for individual installations. Unattended installation is ideal for setting up Devin on multiple servers simultaneously, as it requires no manual input during the process.

### Update Your System

Ensure that your system is up to date by running:

<pre class="language-bash"><code class="lang-bash"><strong>sudo apt-get update -y
</strong></code></pre>

```bash
sudo apt-get upgrade -y
```

Ensure that the unzip utility is installed by running:

```bash
sudo apt-get install unzip -y
```

### Download and prepare the installer script

1. Navigate to the tmp directory:

```bash
cd /tmp
```

2. Download the installler:

```sh
wget https://download.devin.fm/downloads/server/public/latest/linux/install_devin_unix.zip
```

3. Unzip the installer:

```bash
unzip install_devin_unix.zip
```

4. Navigate to the installer folder:

```bash
cd install_devin
```

5. Change the permissions for the install script

```bash
chmod 755 install_devin_unix.sh
```

### Install Devin Server interactivily (recommended method)

6. Start the interactive installer by running the following commands in your terminal:

```bash
sudo ./install_devin_unix.sh
```

The installer will prompt for:

* Credentials for the FileMaker Admin Console account
* Devin Server Type (Development or Staging/Production)

### Install Devin Server unattended

Alternativily, you can install Devin Server unattended by running the following in your terminal:

```bash
sudo ./install_devin_unix.sh --username {fms user} --password {fms pass} --type {prod / dev}
```

### For Staging/Production Server Installations

#### Save the API Key

After installing a non-development server, save the API Key that gets output in the terminal. You will need this when adding the server in the Devin App.&#x20;

For unattended installs, or if you loose the API Key, it can be located in `/opt/Devin/info.json` on the server.
{% endtab %}

{% tab title="macOS" %}
{% hint style="danger" %}
Devin Server 1.1.1 for macOS is unstable and may not install correctly.

Please contact us for interest in releasing our newest features to macOS.
{% endhint %}

[Download](https://www.devin.fm/product/download) the latest Devin Server installer for macOS.

Run the `Devin-Server-<version>.pkg` installer and follow the on-screen instructions.

The installer will prompt for:

* Credentials for the FileMaker Admin Console account
* Devin Server Type (Development or Staging/Production)

### For Staging/Production Server Installations

#### Save the API Key

After installing a non-development server, the graphical installer will show an API key in a pop-up window. Save this key, as you will need this when adding the server in the Devin App.&#x20;

If you loose the API Key, it can be located in `/Library/Devin/info.json` on the server.
{% endtab %}
{% endtabs %}

{% hint style="info" %}
**INSTALLER LOGS:** If you run into issues installing Devin, please open a ticket [here](https://feedback.devin.fm/bugs). The Devin installer produces a log file named devin\_installer\_{Date}\_{Time}.log. Please include the output from the log in your ticket.
{% endhint %}

## Connect the Server in your App

To add a server in the Devin app, see [Add a Server](/guides/servers/add-a-server).


# Devin through a Hosting Provider

Get Devin through a Devin Partner

We have partnered up with select hosting providers that offer servers with Devin Server pre-installed. They can also easily activate it on any existing servers you may have from them. This way, you can easily get started with Devin without needing to install Devin nor configure your servers yourself.

## fmcloud.fm

Our featured hosting provider is fmcloud.fm by 1-More-Thing. They provide award-winning FileMaker Server hosting that combine the best performnace with affordable pricing, available anywhere in the world.&#x20;

Learn more at <https://www.fmcloud.fm/devin/>.

{% embed url="<https://www.fmcloud.fm/devin/>" %}
Get a server with Devin pre-installed
{% endembed %}

{% hint style="warning" %}
Our newest features are not yet available through fmcloud.fm. Please contact us for questions.&#x20;
{% endhint %}

## Kotobuki Shokai

In Japan, we exclusivily offer Devin through our reseller, Kotobuki Shokai. They provide demos, sales, support and hosting services.&#x20;

{% embed url="<https://kotovuki.co.jp/service/devin>" %}
Visit our Japanese reseller
{% endembed %}


# Upgrading from 1.0 Beta

If your server has Devin Server 1.0 Beta 6 or earlier installed, you must [uninstall](/uninstallation#server) Devin Server before re-installing the latest version. Please contact us for any issues.


# Updates


# Update Devin App

To update Devin App, simply download and install the newest version. See [Install Devin App](/setup-and-maintenance/installation/install-devin-app).


# Update Devin Server

## Before updating Devin Server

The update process usually takes 1-2 minutes, during which only Devin Server will be unavailable. FileMaker Server, hosted `fmp12` files, and other services will remain unaffected. To update Devin Server on your Development Server, ensure no team members are using the Devin App.

### Prerequisites

* **Admin Credentials**: Ensure you have the username and password for the FileMaker Server.
* **Administrative Access**: You must be able to run scripts as an admin on the server.
* **Internet Connection**: The server needs internet access to download the update.

### Considerations

1. **No Ongoing Migrations**: Confirm no FileMaker migrations are active or scheduled.
2. **Disconnect Clients**: Ensure there are no active connections to `devin-engine.fmp12`. Clients will be forced to disconnect if not.
3. **Choose Release Channel**: Decide whether to update using the `beta` or `public` release channel.

## Update Guides

The update process depends on your server’s operating system and the installed version of Devin Server.

* On Linux, in-app updates require Devin Server 1.1.0+.
* On Windows Server, in-app updates require Devin Server  1.2.1+. To update an earlier version, follow the [Manual Update Guide](/updates/update-devin-server/manual-update-guide).

{% content-ref url="/pages/tmPR3wfOjBsFohzZLLqH" %}
[In-App Update Guide](/updates/update-devin-server/in-app-update-guide)
{% endcontent-ref %}

{% content-ref url="/pages/OBeU0arLYUXqoPGJJgEM" %}
[Manual Update Guide](/updates/update-devin-server/manual-update-guide)
{% endcontent-ref %}


# In-App Update Guide

In-App process for updating Devin Server

{% stepper %}
{% step %}

### Open Settings

In the Devin App, open Settings.
{% endstep %}

{% step %}

### Select the Server

Go to Servers and select the server you want to update.\
An update button is visible if a new version is available for the selected Release Channel.

<div align="left"><figure><img src="/files/vOGpiGdEwytBXDTdlQW1" alt="" width="375"><figcaption></figcaption></figure></div>
{% endstep %}

{% step %}

### Start the Update

Click Update Devin.

{% hint style="info" %}
If this is a Development Server, FileMaker Pro will automatically close.&#x20;
{% endhint %}
{% endstep %}

{% step %}

### Verify the Update (Development Server updates only)

For Development Servers, wait 1-2 minutes before opening the Devin App. Then, navigate back to the server in Settings and verify that the `Devin Server Version` has changed. This may take up to 1 minute to refresh.
{% endstep %}
{% endstepper %}


# Manual Update Guide

Manual Update Process for Devin Server on Windows Server

This guide provides the steps for manually updating Devin Server on Windows using a PowerShell script. Administrative access and FileMaker Server admin credentials are required. Before starting this process, please consider if you want to update using the `beta` or `public` (more stable) release channel.

{% stepper %}
{% step %}

### Download the Update Script

Download the following script to your server:

```
https://download.devin.fm/downloads/manual_update_devin.ps1
```

{% endstep %}

{% step %}

### Run the Update Script

On your server, open PowerShell and execute the `manual_update_devin.ps1` script by running the following command:

```powershell
./manual_update_devin.ps1
```

* Provide FileMaker Server admin credentials when prompted.
  * You will be promoted for both `username` and `password`.
* Select your preferred release channel (`beta` or `public`).

The update process should take maximum 5 minutes.

#### <mark style="color:orange;">If PowerShell throws a</mark> <mark style="color:orange;"></mark><mark style="color:orange;">`SecurityError`</mark>&#x20;

Depending on the server's security configuration, PowerShell might warn you that the devin update script is not digitally signed by throwing a `PSSecurityException`. To bypass this, change your server's execution policy by running this command:

```powershell
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
```

Then, type `Y` to confirm the change.
{% endstep %}

{% step %}

### Verify the Update

Confirm that the update was sucesfull be reviewing the displayed log messages in the terminal window.&#x20;

In the Devin App, the server's `Devin Server Version` should automatically update within 1 minute.&#x20;
{% endstep %}
{% endstepper %}

For additional support, please contact the Devin support[^1] team.

[^1]: <support@devin.fm>


# Uninstallation


# Uninstall Devin App

The following steps will guide you through uninstalling Devin App

{% stepper %}
{% step %}

### Navigate to the uninstall script

Open a terminal windows and type the following command:

```bash
cd /Library/Devin/{version}
```

{% endstep %}

{% step %}

### Run the uninstall script

Then, run the following command:

```bash
sudo sh uninstall.sh
```

{% endstep %}

{% step %}

### Authorize the uninstallation

When prompted, enter your password and type `Y` to proceed the uninstallation.
{% endstep %}
{% endstepper %}

{% hint style="info" %}
The uninstall script will uninstall everything except a custom font used to display icons in Devin App. To remove the custom font, open up the application **Font Book**, select **User** and remove the font `Devin_Glyphs.ttf.`
{% endhint %}


# Uninstall Devin Server

The following steps will guide you through uninstalling Devin Server

{% hint style="danger" %}
Uninstalling Devin Server will remove all Devin project data and backup files, such as version backup files, version descriptions and data migration history.&#x20;
{% endhint %}

To uninstall Devin Server, ensure you have administrator/root access on the server and follow these steps:

{% tabs %}
{% tab title="Linux" %}

1. Download the uninstaller script with:

```bash
wget https://download.devin.fm/downloads/uninstall_devin_unix.sh
```

2. Make the script executable with:

```bash
chmod +x uninstall_devin_unix.sh
```

3. Run the uninstaller as a superuser with:

```bash
sudo ./uninstall_devin_unix.sh
```

4. Complete the uninstallation by following the instructions in the removal script.
   {% endtab %}

{% tab title="macOS" %}

1. Navigate to the uninstaller by running:

```bash
cd /Library/Devin-Server/{version}
```

2. Then type the following:

```bash
sudo sh uninstall.sh
```

3. When prompted, enter your password and type `Y` to proceed the uninstallation.
   {% endtab %}

{% tab title="Windows Server" %}

1. Stop Devin Server (see [Starting, Stopping and Restarting Devin Server](/server-mangement/starting-stopping-and-restarting-devin-server))
2. Open Windows PowerShell
3. Navigate to the Devin directory by running the following command:

```
cd "C:\Program Files\Devin\"
```

4. Start the uninstall script by running the following command:

```
.\uninstall.ps1 -Username "<FMS Admin Username>" -Password "<FMS Admin Password>" 
```

{% endtab %}
{% endtabs %}


# Server Mangement

Devin Server runs as a background system service on your server. On Windows it is installed and managed as a native `Windows Service`, and on Unix (Linux/macOS) it is configured as a `systemd` service, managed with `systemctl`.

{% hint style="info" %}
Under the hood, Devin Server uses multithreaded processes that spawns worker subprocesses and maintains an internal task queue to prevent system overload. You can learn more about the built-in [Under the Hood](/features/deployments/under-the-hood#safety-and-recovery-mechanisms) and [Under the Hood](/features/deployments/under-the-hood#execution-safety) in the [Under the Hood](/features/deployments/under-the-hood) section.
{% endhint %}


# Starting, Stopping and Restarting Devin Server

Follow these platform-specific guides to manage Devin Server.

{% tabs %}
{% tab title="Linux" %}
From the terminal, run the following command:

```bash
sudo /opt/Devin/sudo_utils/handler_service_action.sh {action}
```

Available actions: `start` `stop` `restart`
{% endtab %}

{% tab title="macOS" %}
Open a terminal and run the following command:

```bash
sudo /Library/Devin/sudo_utils/handler_service_action.sh {action}
```

Available actions: `start` `stop` `restart`
{% endtab %}

{% tab title="Windows Server" %}
{% hint style="warning" %}
Devin Server 1.3.1 and earlier does not automatically start after system restart on Windows Server. This is fixed in Devin Server 1.3.2-beta.
{% endhint %}

1. Open Task Manager
2. Go to Services
3. Find `DevinWinHandlerService` (named `Devin Server` in 1.3.2-beta and later)
4. Right-click and choose an action
   {% endtab %}
   {% endtabs %}

{% hint style="info" %}
Devin Server runs as a background system service on your server. On Windows it is installed and managed as a native `Windows Service`, and on Unix (Linux/macOS) it is configured as a `systemd` service, managed with `systemctl`.
{% endhint %}


# Getting Started


# Create an Account

This guide helps you setup your Devin App

{% hint style="info" %}
[Install Devin App](/setup-and-maintenance/installation/install-devin-app) on your local computer before continuing. &#x20;
{% endhint %}

## Create Personal Account

{% stepper %}
{% step %}

### Open Devin.fmp12

If you already have an account, login. If not, click Create Account.

<div align="left"><figure><img src="/files/dr4LMUjnSFFN5vHZYrQN" alt="" width="563"><figcaption><p>Devin App Login Screen</p></figcaption></figure></div>
{% endstep %}

{% step %}

### Create Account

Click Create Account and enter the required information

<div align="left"><figure><img src="/files/UWKhyLlHZ1cqzZxcWl4M" alt="" width="563"><figcaption><p>Create Account in Devin App</p></figcaption></figure></div>
{% endstep %}

{% step %}

### Verify your Email Address

Next, check your inbox for a verification code and enter it on the next screen. If you have not received the verification email, please check your spam folder or contact <support@devin.fm> to continue.&#x20;
{% endstep %}
{% endstepper %}

## Create Team Account

Next, specify a name for your team or wait for a team member to invite you to theirs. You can add other team members later.

{% hint style="info" %}
In Devin 1.2.1+ you can create and manage multiple teams from the Login Screen.
{% endhint %}


# Connect to Development Server

This guide helps setup the one-time connection between Devin App and Devin Engine.

{% hint style="warning" %}
[Install Devin Server](/setup-and-maintenance/installation/install-devin-server) on a dedicated **Development** server and read the [Network Considerations](/setup-and-maintenance/prerequisites/network-considerations) before continuing.&#x20;
{% endhint %}

## Check Connection

Enter the URL of your Development Server to connect to the Devin Engine (see [#about-the-devin-engine](#about-the-devin-engine "mention")). &#x20;

{% hint style="info" %}
In Devin 1.2+, custom `HTTPS` and `FMNET` ports can be specified by clicking the **Advanced** option.&#x20;
{% endhint %}

<figure><img src="/files/MpD4MqYt8GgADcqJyIew" alt=""><figcaption><p>The one-time process of connecting your app to your Development Server</p></figcaption></figure>

### <mark style="color:orange;">If the connection fails</mark>

If the connection to the Devin Engine isn’t verified, such as if FileMaker Pro on your computer has not connected to this server before, FileMaker Pro will block access. This prevents the Devin App from connecting to the Devin Engine. &#x20;

{% stepper %}
{% step %}

### Open Hosts

From FileMaker Pro, go to **File** -> **Hosts**, or click the **Open Hosts** button (Devin App 1.2.1+)
{% endstep %}

{% step %}

### Add Development Server as a Favorite Host

Click **+**, enter the server's **URL** and click **Save**.

<img src="/files/9XTZCXX0wz0O2GayKVFe" alt="" data-size="original">
{% endstep %}

{% step %}

### Permit Connection

When prompted for allowing the connection, select **Always permit connection to this host** and click **Connect**. This setting prevents the need to grant permission each time FileMaker Pro restarts.

![](/files/zeTu3R26vUVgVFzU2WT5)

If FileMaker Pro asks you to log in to view hosted files on this server, you can skip it. Just click **Cancel** on the login prompt and then **Cancel** on the Hosts window. After that, return to the Devin App and retry the connection to Devin Engine.
{% endstep %}
{% endstepper %}

## About the Devin Engine

The Devin Engine is an `fmp12` file that’s automatically installed on your Development Server. It stores all project and server metadata, so nothing lives locally and everyone on your team can access it. It also serves as both the database and the routing layer for communication between the Devin App and Devin Server APIs.&#x20;

Devin App connects to the Devin Engine via FileMaker’s default *External Data Source* protocol — `FMNET (port 5003)` by default, and `HTTPS (port 443)` if HTTPS tunneling is enabled. To use custom `FMNET` or `HTTPS` ports, click the **Advanced** popover button in the connection dialog.


# Projects


# Create a Project

To create a project, click New Project on the welcome screen and enter a project name.

## Video Tutorial

{% embed url="<https://vimeo.com/938384622?share=copy>" %}


# Delete a Project

Deleting a Project will delete all associated data sunch as Modules, Branches and Version history, but it will not remove any files from your servers.

To delete a project, go to Project Settings -> General and click Delete Project. This action cannot be undone.


# Project Settings

{% hint style="info" %}
Coming soon.
{% endhint %}


# Modules


# Add a Module

{% hint style="info" %}
A Module is the generic term for a development file that's under Devin's control.
{% endhint %}

To Add a Module to a Project, open the Project Workspace, go to Modules and click +. Then:

1. Choose a file from your development server
2. Specify an initial version number
3. Choose the file type
4. Enter Full Access credentials for the file (FileMaker user account)
5. Optionally, provide an [EAR](https://support.claris.com/s/article/Using-Encryption-At-Rest-EAR-functionality-with-FileMaker-products-1503693029211?language=en_US) encryption key.

## Video Tutorial

{% embed url="<https://vimeo.com/938398151?share=copy>" %}
Adding a Module to a Project in Devin
{% endembed %}

When the file has been added as a Module in Devin, you will see that a copy of the file now exists on the project's default `main` branch, called `<filename>_main.fmp12`. The original file, `<filename>.fmp12`, will no longer be used by Devin and can be removed manually from your server.&#x20;

To start development on the file, the main file should be branched to another branch (see [Branch a Module](/guides/modules/branch-a-module)).&#x20;

{% hint style="info" %}
To learn more about branches and version control, see [Version Control](/features/version-control#branches).
{% endhint %}

## File Types

Devin lets you choose between three file types. If you practice the Data Separation Model architecture where you split up your `fmp12` files into UI and Data files choose `App` for **UI files** and `DB` for **Data files**. If your file has **combined UI and Data**, choose `All-In-One`.

{% hint style="info" %}
To learn more about the Data Separation Model, search "FileMaker Data Separation Model" in your favorite search engine and discover many community and blog posts about this choice of this popular architecture.
{% endhint %}

## File Authentication

Devin needs access to development files via the FileMaker Data API. Therefore, the specified account must have the `fmrest` extended privilege enabled. Other features, like [Regression Testing](/features/regression-testing), requires communication via the FileMaker OData API, and thus, the `fmodata` extended privilege enabled. To enable these extended privileges, go to Security -> Advanced Settings -> Extended Privileges.

{% hint style="warning" %}
Devin has not been tested with files that use external OAuth for authentication.
{% endhint %}


# Branch a Module

One of the core [version control](/features/version-control#devins-approach-to-version-control) features in Devin is the ability to branch files for different purposes through its development cycle. When branching a file, Devin will create a copy of the file so that development, testing or other activities are performed on a separate isolated copy of the original file.

To branch a file:

1. Go to the Branches view
2. Select the branch that you want to branch out from
3. Click the three dots and click Branch
4. Enter a branch name or choose an existing one.
5. Click the reload icon to see the branched file on the branch list&#x20;

## Video Tutorial

{% embed url="<https://vimeo.com/938585801?share=copy>" %}
Branching a Module
{% endembed %}


# Edit a Module

You can edit the credentials and encryption key that Devin uses for all branched files that originate from this Module.&#x20;

To do that:

1. Go to Modules
2. Click the three dots on the module that you want to edit

<figure><img src="/files/Nmyl26bH7PegANnd9l2U" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Changing the credentials for a Module will have a global effect and apply to both previous and future branched files that originate from this Module.
{% endhint %}


# Delete a Module

Deleting a Module will remove all associated data such as branch, version, deployment and data migration history, but it will not remove any files from your servers.

To delete associated branched files from your development server, see [Delete a File from a Branch](/guides/branches/delete-a-file-from-a-branch).

To delete:

1. Go to Modules
2. Select the module
3. Click the three dots and click Remove


# Deployment Environments

A Deployment is an instance of a Module that exist on a target server in some [Environment](/features/deployments/default-environments). Devin currently supports `STAGING` and `PRODUCTION` environments, which is inherited from the `Server Type` defined for each server in Settings -> Servers. See [Add a Server](/guides/servers/add-a-server).&#x20;

Environments let you link specific Deployments of a Module to a specific Branch that defines its release pipeline. This way, you can ensure the flow of custom deployment flows. For instance, you could setup an environment to be a link between a `UAT` instance of a `fmp12` file and a `test` branch. This ensures that only releases on test are allowed to be deployed to `UAT`.&#x20;

Learn more about Deployments and Environments [here](/features/deployments).


# Connect a Deployment

{% hint style="info" %}
To setup a Deployment Environment for a Module, you must first add the server hosting it. See [Add a Server](/guides/servers/add-a-server).
{% endhint %}

## Guide

Then:

1. Go to Modules -> Environments
2. Select the desired Module from the list
3. Click Connect File and select the hosted file that you want to connect
4. Specifcy a Release Branch for the Deployment
5. Specify a version number for the Deployment

## Video Tutorial

{% embed url="<https://vimeo.com/938631001?share=copy>" %}
Connecting a `PRODUCTION` deployment (live hosted file) for each Module
{% endembed %}

{% hint style="info" %}
In Devin 1.1, Deployments are now Environments where deployed instances of a `fmp12` file  are linked to specific Release Branches. This allows you to specify custom deployment flows. For instance, you could link your `main` branch to your `production` server and a `test` branch to your `UAT/staging` server.
{% endhint %}


# Update a Deployment

Deploy a Release and Perform a Data Migration.

{% hint style="info" %}
The current version of Devin allows Deployments to be updated via the [Under the Hood](/features/deployments/under-the-hood#default-deployment-pipeline) only, which is a standardized deployment and data migration process that listens for new releases to a Deployment's Release Branch. This will change in a future version via something that we call custom **Pipelines**.
{% endhint %}

To update a deployment, see [Deploy a Release](/guides/releases/deploy-a-release)


# Disconnect Deployment

Disconnecting a Deployment deleted associated Data Migration logs and history for the Deployment but does not remove any files on your servers.

To disconnect a Deployment:

1. Go to Modules -> Deployment
2. Select the desired Module from the list
3. Click the red cross on the Deployment.&#x20;


# Branches


# Create a Branch

Branches are automatically created as files are branched. See [Branch a Module](/guides/modules/branch-a-module).


# Delete a File from a Branch

Deleting a file from a Branch will delete the file from your development server but will not automatically delete any saved versions for the file. To delete all versions for a file, see [Delete a Version](/guides/versions/delete-a-version).

## Guide

To delete a file from a Branch:

1. Go to Branches
2. Selct the file from the list
3. Click the three dots and click Remove

{% hint style="warning" %}
The file must be closed before it can be deleted. To close the file, click the three dots and click Close.
{% endhint %}


# Delete a Branch

Deleting a branch will remove all associated branch data such as version history, but it will not remove any files from yuor development server by itself.

## Guide

To delete a branch:

1. Go to Branches
2. Select the desired branch
3. Click the trashcan icon and click Delete Branch.


# Managing External Data Sources

Easily configure multi-file solutions to dynamically use External Data Sources


# Versions

&#x20;A Version is a backup of a branched file. The backup can either be a clone or a full backup and the default choice can be specified in [Project Settings](/guides/projects/project-settings).


# Save a Version

## Guide

To save a [version](/features/version-control#versions) of a branched development file:

1. Go to Branches -> Versions
2. Select the desired file from the list
3. Select the top Active File line in the version list.
4. In the right sidebar, enter a version description and select Full Backup or Clone
5. When prompted, enter a [version number](#version-numbers).

{% hint style="warning" %}
Versions are backups of the development file. They can be either clones or full backups and the default choice can be specified in [Project Settings](/guides/projects/project-settings). For large file sizes (> 100MB), we recommend using Clone as default. Choosing Full Backup might result in bad performance on your development server.&#x20;
{% endhint %}

## Video Tutorials

### Connect to a branched development file

{% embed url="<https://vimeo.com/1038622621>" %}
Make changes to a development file
{% endembed %}

### Make changes to a file (and see the changes)

{% embed url="<https://vimeo.com/1038622257?share=copy#t=0>" %}
Make changes to a development file
{% endembed %}

### Save a new version with the changes

{% embed url="<https://vimeo.com/1038622732?share=copy#t=0>" %}
Saving a Version
{% endembed %}

## Version Numbers

Devin supports a wide variety of versioning conventions, but we recommend using a standard convention like [Semantic Versioning](https://semver.org) or similar that uses a format that looks like `MAJOR.MINOR` or  `MAJOR.MINOR.PATCH`.&#x20;

For more advanced use cases, like when you're dealing with pre-release versions, Devin also supports version numbers that include letters, such as `2.10.3-alpha` and `2.10.3-beta8`.


# Compare Versions

Track changes with the built-in XML Analysis API

## Overview

The Compare Versions feature provides FileMaker developers with a powerful way to track changes in their FileMaker solution files. By comparing the Active Branch File with the latest saved version on the same branch, this tool highlights changes in a clear, summarized format. Detailed code diffs for Scripts and Custom Functions are currently supported, with broader change tracking in development.

## Guide

{% stepper %}
{% step %}

### Select Branch File

In the Branches view, select a file from the left branch file list.
{% endstep %}

{% step %}

### Highlight the Active File Version

In the Version List, click the Active File Version.
{% endstep %}

{% step %}

### Run Analysis

**Manually:** In the right sidebar, click the Run Analysis or refresh button.\
**Automatically:** Automatic change tracking can be enabled in Project Settings -> Versions.
{% endstep %}

{% step %}

### Browse Changes

In the right sidebar, browse between different catagories and discover detailed code changes of Scripts and Custom Functions.
{% endstep %}
{% endstepper %}

This video shows how the Devin App can track changes made to a development file:

{% embed url="<https://vimeo.com/1038622257>" %}
Track changes made to a development file
{% endembed %}

## What Changes Are Tracked?

This table shows what is currently tracked and displayed.

<table><thead><tr><th width="99">Category</th><th width="98">Level</th><th>XML Catalogues</th></tr></thead><tbody><tr><td>Code</td><td>Detailed</td><td>Line-by-line code diffs of <code>Scripts</code> and <code>Custom Functions</code></td></tr><tr><td>Database</td><td>Summary</td><td>Names of <code>Tables</code>, <code>Table Occurrences</code> and <code>Relationships</code> </td></tr><tr><td>Layouts</td><td>Summary</td><td>Name of <code>Layouts</code> </td></tr><tr><td>Security</td><td>Summary</td><td>Names of <code>Privileges Sets</code> and <code>Extended Privileges</code> </td></tr><tr><td>Other</td><td>Summary</td><td>Names of <code>Value Lists</code>, <code>Custom Menus</code>, <code>Custom Menu Sets</code> and <code>Themes</code> </td></tr></tbody></table>

## Hardware Requirements

The Compare Versions feature is exclusive to Development Server installations and requires significant memory resources for optimal performance:

* Solo Developers: 8GB of memory.
* Teams with Concurrent Development: At least 16GB of memory.

Built-in safeguards prevent memory overload, but enabling auto-tracking for teams with heavy activity may demand higher server capacity.

## Current Limitations and Known Issues

In Devin 1.3.0, comparisons are limited to the Active Branch File versus the latest saved version on the same branch. This is currently a UI limitation and will be expanded in a future release to support comparing any version across any branch.

While powerful, this feature has a few current limitations and best practices to ensure it works correctly. If the App Sidebar shows an `Analysis Error`, it may be due to one of the following reasons.

{% hint style="success" %}
This feature is actively being improved, and upcoming releases will eliminate the need to consider backup type when analyzing XML changes. Using a non-recommended backup type only affects XML analysis results — all other functionality remains unaffected.
{% endhint %}

### Empty XML Catalogues

Comparisons might fail if either the `Active Branch File` or the `Reference File` it's compared to has empty XML catalogues, such as if the file has no `Scripts`, `Custom Functions`, `Custom Menu Sets` etc. Therefore, this feature works best with existing fmp12 files since new files by default has empty XML catalogues.

Discovering error logs such as `An error occurred: 'custom_menu_sets_xml'` or `Error running operation: 'custom_menu_sets_xml'` in the `{opt/Program Files}/Devin/Logs/service.log` file indicates that no Custom Menu Sets exist in the file. To resolve temporarilly, create an empty Custom Menu Set, or equivalent, for other XML catalogues.

### Analysis Performance: Linux vs. Windows

This feature is compute-intensive, both in its core analysis logic and through concurrent use of several FileMaker CLI tools. Performance is typically 5–10 times faster on Linux servers compared to Windows Server.

### System Locale and Version Type Behavior

The accuracy of XML change detection in Devin Server is affected by both the system locale settings, field storage options and the type of FileMaker backup used. If the system locale differs between FileMaker Pro and FileMaker Server, or if fields use a default storage language that doesn’t match the server’s configuration, false table changes may be detected. Depending on the server platform, either Clone or Full Backup versions may be more reliable. Using the non-recommended backup type may result in incorrect change detections, particularly in tables and scripts involving language or decimal formatting.

<table><thead><tr><th width="144">Platform</th><th width="176">Recommended Version Type</th><th>May Detect Incorrect Changes</th></tr></thead><tbody><tr><td>Windows Server</td><td>Clone</td><td>Full Backup</td></tr><tr><td>Linux</td><td>Full Backup</td><td>Clone</td></tr></tbody></table>


# Release a Version

When you want to push changes from a branched development file to a Deployment in another Environment, such as a `STAGING` or `PRODUCTION` version of the file (see [Deployment Environments](/guides/deployment-environments)), the first step is to release a Version with the changes to the Deployment's associated Release Branch.&#x20;

{% hint style="info" %}
Releasing a Version only replaces the file on the target branch on your development server. To push the changes to another [Environment](/guides/deployment-environments), the release must be deployed (see [Deploy a Release](/guides/releases/deploy-a-release)).
{% endhint %}

To release a Version:

1. Go to Modules -> Development or Branches -> Versions
2. Select a Module from the Module list or a branched development file from the Branch list
3. Select a Version from the list
4. In the sidebar's Version Actions section, click Select branch... and choose the branch you want to release to (which file you want to replace)
5. Click Release
6. If the Version does not have a version number, specify one (see [Save a Version](/guides/versions/save-a-version#version-numbers))

## Video Tutorial

{% embed url="<https://vimeo.com/1038622683?share=copy#t=0>" %}
Releasing a Version
{% endembed %}


# Delete a Version

Deleting a Version will remove the respective backed up version of the branched file from your development server.

## Guide

To delete a Version:

1. Go to Modules -> Development or Branches -> Versions
2. Select the desired Module from the module list or file from the branch list
3. Select the version that you want to delete
4. In the sidebar's Version Actions section, click Delete.&#x20;


# Tests


# Writing Test Scripts

Best practices for writing good integration and unit tests

Coming soon.


# Load Test Scripts

In order for Devin to run your tests, they need to be loaded from each branched file manually.&#x20;

1. Go to Branches -> Tests
2. Select the desired file from the list
3. Click Load Tests
4. When the process is finished, click the reload icon to reload the script test list.

<figure><img src="/files/uEr4VlKsk802pR0eFHUu" alt=""><figcaption><p>Loading Test Scripts from a branched file</p></figcaption></figure>

{% hint style="warning" %}
Devin utilizes the FileMaker OData API to execute your tests. For successful test execution, ensure that the `odata` extended privileges are enabled for the account specified when adding the Module to Devin. Additionally, be aware that the FM OData API restricts script names from starting with numbers or containing special characters.
{% endhint %}


# Run Test Scripts

When tests are loaded from the file they can be run directly from the Project Workspace. To learn how to setup tests for a file, see [Regression Testing](/features/regression-testing#implementing-regression-testing-using-devin).

Tests can be triggered individually or all together:

1. Go to Branches -> Tests
2. Select the desired file from the list
3. Use the green play icons to trigger individual test scripts or all scripts sequentially.

<figure><img src="/files/cT4kvlo6TWFxNDALMN6j" alt=""><figcaption><p>Running Tests from the Project Workspace</p></figcaption></figure>

{% hint style="info" %}
The checkmark for each test defines whether the test will be included when all tests are triggered to run sequentially.&#x20;
{% endhint %}

{% hint style="warning" %}
The current version of Devin restricts Tests to be triggered manually. In a future version, tests can be triggered as part of a feature that we call **Pipelines**. This will facilitate automated [Regression Testing](/features/regression-testing).
{% endhint %}


# Releases


# Create a Release

&#x20;To create a release, [Release a Version](/guides/versions/release-a-version).


# Deploy a Release

{% hint style="info" %}
Deploying a Release is currently a standardised process that is part of the [Under the Hood](/features/deployments/under-the-hood#default-deployment-pipeline).
{% endhint %}

## Guide

To trigger the Default Deployment Pipeline for a Deployment:

1. Go to Modules -> Environments
2. Select the desired Module from the list
3. Use the Config popover to specify settings for the Deployment Pipeline
4. Use the Deploy or Roll Back popover to trigger the Default Deployment Pipeline now, or schedule it for later.
5. Monitor the status of each step in the pipeline from the Migrations view

{% tabs %}
{% tab title="Config" %}

<figure><img src="/files/SuhTDn2CVSamxEg7dZsR" alt=""><figcaption><p>Specifying Settings for the Deployment</p></figcaption></figure>
{% endtab %}

{% tab title="Trigger Rollout" %}

<figure><img src="/files/CaqXXfdlJtPpPo0mpnKW" alt=""><figcaption><p>Deploying the latest Release on <code>main</code> to the <code>PROD</code> environment</p></figcaption></figure>
{% endtab %}

{% tab title="Migration Logs" %}

<figure><img src="/files/wBijqsEvksSz7y60raAU" alt=""><figcaption><p>Monitor Data Migration progress and logs from the Migrations view</p></figcaption></figure>
{% endtab %}
{% endtabs %}

## Video Tutorial

{% embed url="<https://vimeo.com/1038622585?share=copy#t=0>" %}
Deploying a Release
{% endembed %}

## Deployment Config

### Authentication

<table><thead><tr><th width="184">Name</th><th>Description</th></tr></thead><tbody><tr><td>Account</td><td>Account name for the Deployment,  if different from the Module.</td></tr><tr><td>Password</td><td>Password for the Deployment,  if different from the Module.</td></tr><tr><td>Encryption Key</td><td>Encryption key for the Deployment, if different from the Module.</td></tr></tbody></table>

### Options

<table><thead><tr><th width="183">Name</th><th>Description</th></tr></thead><tbody><tr><td>Ignore Value Lists</td><td>Uses custom value lists from the released Version instead of the Deployment.</td></tr><tr><td>Ignore Accounts</td><td>Uses the account names, passwords, and the encryption password from the released Version instead of the Deployment.</td></tr><tr><td>Ignore Fonts</td><td>Doesn't check the font mapping for field contents.</td></tr><tr><td>Rebuild Indexes</td><td>Rebuilds existing indexes during migration instead of copying them from the Deployment.</td></tr><tr><td>Reevaluate Stored Calculations</td><td><p>Causes all stored calculations to be reevaluated.</p><p><strong>Note:</strong> Calculated values are recomputed and the orginal values might change, especially if the calculation includes some of the Get functions, the Random function, or any external functions (because the data migration tool doesn’t load any plug-ins)</p></td></tr></tbody></table>

### Other

<table><thead><tr><th width="183">Name</th><th>Description</th></tr></thead><tbody><tr><td>Timeout</td><td>A timeout (in minutes) for the Data Migration process on the target server. Defaults to the Project's Default Migration Timeout (600 mins).</td></tr></tbody></table>

### Post Migration Script

<table data-full-width="false"><thead><tr><th width="186">Name</th><th>Description</th></tr></thead><tbody><tr><td>Name</td><td>Name of the script to be run after the data migration (beware of script name limitations in the FM OData API)</td></tr><tr><td>Parameter</td><td>Script parameter for the script</td></tr><tr><td>Type</td><td>Parameter type</td></tr></tbody></table>


# Servers

Devin Server APIs communicate over `HTTPS` (default port 443) through the same FileMaker Server web server (Apache or Nginx) that hosts the Admin Console, WebDirect and Admin/Data/Odata APIs. They leverage your existing SSL certificate and reverse-proxy setup to encrypt all traffic — just as when you point a browser at the FileMaker Admin Console URL.


# Add a Server

Adding servers to your Devin's team account is very easy. From the Devin App, go to Settings -> Servers.&#x20;

See the guide for each server type below:

{% tabs %}
{% tab title="Development Server" %}

### When you have just created your account

When you've just created your account, you will see your development server already being listed. However, a little more information is required to finish the setup of your dev server:

4. FileMaker Admin Console credentials

### Field and button descriptions

1. Adding a new server record (limited to account plan)
2. Server type (can be Development, Staging or Production)
3. Server url (can be local or public IP, DNS or Domain Name)
4. FileMaker Admin Console credentials
5. Re-installing the "Devin Engine Assistant" script schedule that was automatically installed during Devin Server installation. For instance, if it accidentally was removed. \
   *Note that this schedule is only needed on the development server and will only be installed when "Development" is selected during server installation.*
6. Verifying that the provided information is correct by pinging both the FileMaker Admin API and the Devin Server API.

<figure><img src="/files/B7rvu6R57TR6ymAXgoRf" alt=""><figcaption><p>Adding a Development Server</p></figcaption></figure>
{% endtab %}

{% tab title="Staging/Production Server" %}
When adding a Staging or Production Server, You'll notice that it looks slightly different from adding a Development Server. That's because of two extra fields (4 and 6) which are onyl relevant for Staging and Production servers.

To add a new server:

1. Click + Add
2. Select server Type
3. Enter an URL for the server
4. Select maximum concurrency allowance\
   *Max amount of simultaneous data migrations that you want to allow. Set this according to your server's hardware specs. Learn more about* [System Requirements](/setup-and-maintenance/prerequisites/system-requirements#hardware-and-concurrency)
5. Enter FileMaker Admin Console credentials
6. Enter Devin API Key\
   *Auto-generated 15-digit key that gets shown after a Devin Server installation completes. If lost, the key can be found on the server in (Linux: `opt/Devin/info.json` macOS `Library/Devin/info.json`). Note that this is only required for Staging and Production Servers and will not be generated for Devin Server installatons where "Development" is selected as server type.*
7. Click Test Connection to verify the connection to both FileMaker Admin API and Devin Server API.

<figure><img src="/files/gTZbO5qfLfQtkecvughS" alt=""><figcaption><p>Adding a Production Server</p></figcaption></figure>
{% endtab %}
{% endtabs %}


# Change Development Server

Changing the development server will defer depending on the version off Devin App you're using. In Devin App 1.2, you can now add multiple development servers for your account, letting you choose between them at login.&#x20;

## In Devin App 1.1

1. In the App, go to Settings -> Servers
2. Select the Development Server from the list
3. Modify the URL to the new Development Server
4. Exit the URL field and click the blue "Change" button that appears in the URL field
5. Restart FileMaker Pro

## In Devin App 1.2

1. Logout of the App by going to Settings -> Profile -> Logout
2. Restart FileMaker Pro
3. Login, and choose a development server (or create a new one)

{% hint style="warning" %}
Note that restarting FileMaker Pro after modifying the Development Server's URL/logging out is required in order to shift to another development server. This is due to limitations in how FileMaker Pro connects to External Data Sources.&#x20;
{% endhint %}


# Remove a Server

To delete a server, go to Settings -> Servers and do the following:

1. Select the server you want to remove
2. click Remove

{% hint style="info" %}
This will delete all data associated with the server such as information about the files hosted on the server, but it will not delete any files on the server itself.
{% endhint %}


# Team


# Add Team Member

To add a team member, go to Settings -> Team, enter an email address and click Invite.&#x20;

<figure><img src="/files/bkLpt15h401AO3js79mC" alt=""><figcaption><p>Inviting a Member to a Team</p></figcaption></figure>

When the person has installed the Devin App and created an account with the same email address that was invited, the person will automatically be linked as a team member to your team when they log in.

To add a team member to a project, see [Project Settings](/guides/projects/project-settings#manage-team-members) in [Project Settings](/guides/projects/project-settings).


# Remove Team Member

To remove a member from your team, click the red - button. This will also delete the member from any Projects that they might participate in.

<figure><img src="/files/anX9Y4Fng7PlYjgIzPHW" alt=""><figcaption><p>Removing Member from Team</p></figcaption></figure>


# Manage Subscription

## Upgrade from Free

The free version of Devin is restricted to limited team members and servers. To upgrade, go to Settings -> Team and click Upgrade or choose a plan directly at <https://www.devin.fm/product/pricing>.

{% hint style="danger" %}
Make sure to enter the same email address for billing as was used to create the team in the Devin App. Otherwise, the upgrade will not apply to your team.
{% endhint %}

{% hint style="warning" %}
When choosing a plan, remember to select server quantity.
{% endhint %}

<figure><img src="/files/5TYV3KyM78bxPTqIEC0U" alt=""><figcaption><p>Upgrading Subscription through the Devin Customer Portal</p></figcaption></figure>

## Manage Plan

To manage your team's plan, go to Settings -> Team and click Manage Plan. This will open the Devin Customer Portal where you can:

* Edit billing information
* Edit payment method
* Change plan and server quantities
* Cancel subscription
* See invoice history


# Known Issues

Refer to the [Release Notes](https://changelog.devin.fm) for known issues and limitations related to the respective versions.


# Feedback

Need a helping hand or want to request a new feature?

{% hint style="info" %}
**Looking for something else?**

We’ve recently retired our Public Roadmap, Feature Request, and Bug Report pages.

However, we still welcome feature requests. In fact, every update we ship is driven by input from our customers and community, so please don't hold back!
{% endhint %}

Reach out to us at <support@devin.fm> and we will get back to you as soon as possible.&#x20;

For known issues or limitations, please check the [Known Limitations](https://changelog.devin.fm/#known-limitations) section of the release notes of the Devin version you're using.


# Privacy Policy

Last updated 29 February 2024

At Devin ApS, a Copenhagen corporation (hereinafter, “Devin,” “Company,” “us,” or “we”), we respect and protect the privacy of visitors to our website [www.devin.fm](http://www.devin.fm), and our customers who use our software products, developer tools, and related services (together with the Sites, the “Service”).\
‍\
This Global Privacy Policy (“Policy”) explains how we collect, use, disclose, and protect visitors’ and users’ information as part of the Service. Any discussion of your use of the Service in this Policy is meant to include your visits and other interactions with the Sites and Services, whether or not you are a user of Devin's Software product.<br>

### 1. **What “Personal Information” means**

In this Policy, “Personal Information” means information or an information set that identifies or could be used to identify an individual directly or indirectly. Except as described in this Policy, Devin will not give, sell, rent, or loan any Personal Information to any third party.\
‍\
Personal Information does not include “Usage Data” which we define as encoded or anonymized information or aggregated data we collect about a group or category of services, features, or users which does not contain personally identifying information. Usage Data helps us understand trends in usage of the Service so that we can better consider new features or otherwise tailor the Service. In addition to collecting and using Usage Data ourselves, we may share Usage Data with third parties, including our customers, partners and service providers, for various purposes, including to help us better understand our customers’ needs and improve the Service as well as for advertising and marketing purposes.<br>

### 2. **How we collect, use, and share your Personal Information and other information**

**a. Information you provide to us**

When you register for the Service, we may ask for Personal Information such as your name, email address, or credit card or other billing information. You may also provide at your own discretion certain related information like your personal website name, social media websites, a list of your skills, the date you started using the Service, and a description of yourself.\
\
We may also retain the contents of any messages you send to us or through the Service, and we may collect information you provide in user content that you post or upload to the Service (“User Content”).

**b. Information we may receive from and share with third parties**

We may now or in the future receive Personal Information about you from third parties. For example, if you access our Site or Service through a third-party connection or log-in or connect an application to Devin, that third party you connected with may pass certain information about your use of its service to Devin. This information could include, but is not limited to, the user ID associated with your account, an access token necessary to access that service, any information that you have permitted the third party to share with us, and any information you have made public in connection with that third-party service. You should always review, and if necessary, adjust your privacy settings on third-party websites and services before linking or connecting them to the Service.\
‍\
Devin may also share Personal Information with its third-party service providers (such as its credit card processors and hosting partners) to provide the necessary hardware, software, networking, storage, and other service we use to operate the Service and maintain a high-quality user experience. We do not permit our service providers to use the Personal Information we share for their marketing purposes.<br>

### 3. **Links to other websites**

The Service contains links to websites and applications other than the Service, including websites and applications operated by affiliates and other third parties. This Policy applies only to information collected by the Service.\
\
Devin not endorse and is not responsible for the practices of third parties or their websites or applications. We do not determine and are not responsible for the privacy practices or the content of websites or applications operated by third parties. Your browsing and interaction on any third-party website or service, including those that have a link on our website, are subject to that third party’s own rules and policies.\
\
We are not responsible for and we do not control any third parties that you authorize to access your User Content. If you are using a third-party website or service and you allow such a third-party access to your User Content, you do so at your own risk.


# Terms of Service

Last updated 29 February 2024

## **AGREEMENT TO OUR LEGAL TERMS**

We are Devin ApS ("**Company**," "**we**," "**us**," "**our**"). Our VAT number is DK44636638.\
We operate the website [https://devin.fm](https://devin.fm/) (the "**Site**"), as well as any other related products and services that refer or link to these legal terms (the "**Legal Terms**") (collectively, the "**Services**").

You can contact us by email at <hello@devin.fm> or by mail to H.C. Andersens Boulevard 38, 3tv, Copenhagen 1553, Denmark.

These Legal Terms constitute a legally binding agreement made between you, whether personally or on behalf of an entity ("**you**"), and Devin ApS, concerning your access to and use of the Services. You agree that by accessing the Services, you have read, understood, and agreed to be bound by all of these Legal Terms. IF YOU DO NOT AGREE WITH ALL OF THESE LEGAL TERMS, THEN YOU ARE EXPRESSLY PROHIBITED FROM USING THE SERVICES AND YOU MUST DISCONTINUE USE IMMEDIATELY.

We will provide you with prior notice of any scheduled changes to the Services you are using. The modified Legal Terms will become effective upon posting or notifying you by <hello@devin.fm>, as stated in the email message. By continuing to use the Services after the effective date of any changes, you agree to be bound by the modified terms.\
The Services are intended for users who are at least 18 years old. Persons under the age of 18 are not permitted to use or register for the Services.

We recommend that you print a copy of these Legal Terms for your records.

### **1. OUR SERVICES**

The information provided when using the Services is not intended for distribution to or use by any person or entity in any jurisdiction or country where such distribution or use would be contrary to law or regulation or which would subject us to any registration requirement within such jurisdiction or country. Accordingly, those persons who choose to access the Services from other locations do so on their own initiative and are solely responsible for compliance with local laws, if and to the extent local laws are applicable.

The Services are not tailored to comply with industry-specific regulations (Health Insurance Portability and Accountability Act (HIPAA), Federal Information Security Management Act (FISMA), etc.), so if your interactions would be subjected to such laws, you may not use the Services. You may not use the Services in a way that would violate the Gramm-Leach-Bliley Act (GLBA).

### **2. INTELLECTUAL PROPERTY RIGHTS**

#### **Our intellectual property**

We are the owner or the licensee of all intellectual property rights in our Services, including all source code, databases, functionality, software, website designs, audio, video, text, photographs, and graphics in the Services (collectively, the "Content"), as well as the trademarks, service marks, and logos contained therein (the "Marks").

Our Content and Marks are protected by copyright and trademark laws (and various other intellectual property rights and unfair competition laws) and treaties in the United States and around the world.\
The Content and Marks are provided in or through the Services "AS IS" for your personal, non-commercial use or internal business purpose only.

#### **Your use of our Services**

Subject to your compliance with these Legal Terms, including the "[PROHIBITED ACTIVITIES](file:///C:/Users/Bruger/Desktop/Termly.htm#prohibited)" section below, we grant you a non-exclusive, non-transferable, revocable license to:

* access the Services; and
* download or print a copy of any portion of the Content to which you have properly gained access.

solely for your personal, non-commercial use or internal business purpose.\
Except as set out in this section or elsewhere in our Legal Terms, no part of the Services and no Content or Marks may be copied, reproduced, aggregated, republished, uploaded, posted, publicly displayed, encoded, translated, transmitted, distributed, sold, licensed, or otherwise exploited for any commercial purpose whatsoever, without our express prior written permission.

If you wish to make any use of the Services, Content, or Marks other than as set out in this section or elsewhere in our Legal Terms, please address your request to: <hello@devin.fm>. If we ever grant you the permission to post, reproduce, or publicly display any part of our Services or Content, you must identify us as the owners or licensors of the Services, Content, or Marks and ensure that any copyright or proprietary notice appears or is visible on posting, reproducing, or displaying our Content.

We reserve all rights not expressly granted to you in and to the Services, Content, and Marks.\
Any breach of these Intellectual Property Rights will constitute a material breach of our Legal Terms and your right to use our Services will terminate immediately.

#### **Your submissions**

Please review this section and the "[PROHIBITED ACTIVITIES](file:///C:/Users/Bruger/Desktop/Termly.htm#prohibited)" section carefully prior to using our Services to understand the (a) rights you give us and (b) obligations you have when you post or upload any content through the Services.

**Submissions:** By directly sending us any question, comment, suggestion, idea, feedback, or other information about the Services ("Submissions"), you agree to assign to us all intellectual property rights in such Submission. You agree that we shall own this Submission and be entitled to its unrestricted use and dissemination for any lawful purpose, commercial or otherwise, without acknowledgment or compensation to you.

**You are responsible for what you post or upload:** By sending us Submissions through any part of the Services you:

* confirm that you have read and agree with our "[PROHIBITED ACTIVITIES](file:///C:/Users/Bruger/Desktop/Termly.htm#prohibited)" and will not post, send, publish, upload, or transmit through the Services any Submission that is illegal, harassing, hateful, harmful, defamatory, obscene, bullying, abusive, discriminatory, threatening to any person or group, sexually explicit, false, inaccurate, deceitful, or misleading;
* to the extent permissible by applicable law, waive any and all moral rights to any such Submission;
* warrant that any such Submission are original to you or that you have the necessary rights and licenses to submit such Submissions and that you have full authority to grant us the above-mentioned rights in relation to your Submissions; and
* warrant and represent that your Submissions do not constitute confidential information.

You are solely responsible for your Submissions and you expressly agree to reimburse us for any and all losses that we may suffer because of your breach of (a) this section, (b) any third party’s intellectual property rights, or (c) applicable law.

### **3. USER REPRESENTATIONS**

By using the Services, you represent and warrant that: (1) all registration information you submit will be true, accurate, current, and complete; (2) you will maintain the accuracy of such information and promptly update such registration information as necessary; (3) you have the legal capacity and you agree to comply with these Legal Terms; (4) you are not a minor in the jurisdiction in which you reside; (5) you will not access the Services through automated or non-human means, whether through a bot, script or otherwise; (6) you will not use the Services for any illegal or unauthorized purpose; and (7) your use of the Services will not violate any applicable law or regulation.

If you provide any information that is untrue, inaccurate, not current, or incomplete, we have the right to suspend or terminate your account and refuse any and all current or future use of the Services (or any portion thereof).

### **4. USER REGISTRATION**

You may be required to register to use the Services. You agree to keep your password confidential and will be responsible for all use of your account and password. We reserve the right to remove, reclaim, or change a username you select if we determine, in our sole discretion, that such username is inappropriate, obscene, or otherwise objectionable.

### **5. PRODUCTS**

All products are subject to availability. We reserve the right to discontinue any products at any time for any reason. Prices for all products are subject to change.

### **6. PURCHASES AND PAYMENT**

You agree to provide current, complete, and accurate purchase and account information for all purchases made via the Services. You further agree to promptly update account and payment information, including email address, payment method, and payment card expiration date, so that we can complete your transactions and contact you as needed. Sales tax will be added to the price of purchases as deemed required by us, including state-specific sales tax in the United States.

Additionally, for customers in the European Union (EU), the country-specific Value Added Tax (VAT) may be added. We may change prices at any time. All payments shall be in US dollars.

Payments and associated financial data are processed and hosted through our third-party provider, Stripe. You authorize us and Stripe to process and manage your payments according to the terms and conditions provided by Stripe.

You agree to pay all charges at the prices then in effect for your purchases and any applicable shipping fees, and you authorize us to charge your chosen payment provider for any such amounts upon placing your order. We reserve the right to correct any errors or mistakes in pricing, even if we have already requested or received payment.

We reserve the right to refuse any order placed through the Services. We may, in our sole discretion, limit or cancel quantities purchased per person, per household, or per order. These restrictions may include orders placed by or under the same customer account, the same payment method, and/or orders that use the same billing or shipping address. We reserve the right to limit or prohibit orders that, in our sole judgment, appear to be placed by dealers, resellers, or distributors.

### **7. SUBSCRIPTIONS**

#### **Billing and Renewal**

Your subscription will continue and automatically renew unless canceled. You consent to us charging your payment method on a recurring basis without requiring your prior approval for each recurring charge, until such time as you cancel the applicable order. The length of your billing cycle is annual.

#### **Free Trial**

For some subscriptions, we offer a free trial to new users who register with the Services. The trial length might vary from 7 to 30 days depending on the specific subscription. The account will be charged according to the user's chosen subscription at the end of the free trial.

#### **Cancellation**

You can cancel your subscription at any time through one of three methods:

1. **Via Our Customer Portal:** You can log into our customer portal to manage your subscription. Access the portal either through this URL: <https://billing.stripe.com/p/login/5kA4ji4ej1qA9XydQQ> or directly from within the app by navigating to Settings -> Team -> Manage Plan.
2. **By Email:** Alternatively, you may send an email to <info@devin.fm> requesting cancellation.

Your cancellation will take effect at the end of the current paid term. If you have any questions or are unsatisfied with our Services, please email us at <info@devin.fm>.

#### **Fee Changes**

We may, from time to time, make changes to the subscription fee and will communicate any price changes to you in accordance with applicable law.

### **8. REFUNDS POLICY**

All sales are final and no refund will be issued. For purchases made by private individuals, the normal 14-day right of withdrawal applicable to distance sales (e.g., online sales or sales at conferences) does not apply, because the delivery of digital content is not made on a physical medium (e.g., a CD). This is in accordance with Article 16(m) of the EU Directive on Consumer Rights, available here: [EU Directive on Consumer Rights](https://eur-lex.europa.eu/legal-content/DA/TXT/?uri=CELEX:32011L0083\&qid=1403274218893).

By making a purchase, you acknowledge and agree to these terms.

### **9. SOFTWARE**

We may include software for use in connection with our Services. If such software is accompanied by an end user license agreement ("EULA"), the terms of the EULA will govern your use of the software. If such software is not accompanied by a EULA, then we grant to you a non-exclusive, revocable, personal, and non-transferable license to use such software solely in connection with our services and in accordance with these Legal Terms. Any software and any related documentation is provided "AS IS" without warranty of any kind, either express or implied, including, without limitation, the implied warranties of merchantability, fitness for a particular purpose, or non-infringement. You accept any and all risk arising out of use or performance of any software. You may not reproduce or redistribute any software except in accordance with the EULA or these Legal Terms.

### **10. PROHIBITED ACTIVITIES**

You may not access or use the Services for any purpose other than that for which we make the Services available. The Services may not be used in connection with any commercial endeavors except those that are specifically endorsed or approved by us.\
As a user of the Services, you agree not to:

* Systematically retrieve data or other content from the Services to create or compile, directly or indirectly, a collection, compilation, database, or directory without written permission from us.
* Trick, defraud, or mislead us and other users, especially in any attempt to learn sensitive account information such as user passwords.
* Circumvent, disable, or otherwise interfere with security-related features of the Services, including features that prevent or restrict the use or copying of any Content or enforce limitations on the use of the Services and/or the Content contained therein.
* Disparage, tarnish, or otherwise harm, in our opinion, us and/or the Services.
* Use any information obtained from the Services in order to harass, abuse, or harm another person.
* Make improper use of our support services or submit false reports of abuse or misconduct.
* Use the Services in a manner inconsistent with any applicable laws or regulations.
* Engage in unauthorized framing of or linking to the Services.
* Upload or transmit (or attempt to upload or to transmit) viruses, Trojan horses, or other material, including excessive use of capital letters and spamming (continuous posting of repetitive text), that interferes with any party’s uninterrupted use and enjoyment of the Services or modifies, impairs, disrupts, alters, or interferes with the use, features, functions, operation, or maintenance of the Services.
* Engage in any automated use of the system, such as using scripts to send comments or messages, or using any data mining, robots, or similar data gathering and extraction tools.
* Delete the copyright or other proprietary rights notice from any Content.
* Attempt to impersonate another user or person or use the username of another user.
* Upload or transmit (or attempt to upload or to transmit) any material that acts as a passive or active information collection or transmission mechanism, including without limitation, clear graphics interchange formats ("gifs"), 1×1 pixels, web bugs, cookies, or other similar devices (sometimes referred to as "spyware" or "passive collection mechanisms" or "pcms").
* Interfere with, disrupt, or create an undue burden on the Services or the networks or services connected to the Services.
* Harass, annoy, intimidate, or threaten any of our employees or agents engaged in providing any portion of the Services to you.
* Attempt to bypass any measures of the Services designed to prevent or restrict access to the Services, or any portion of the Services.
* Copy or adapt the Services' software, including but not limited to Flash, PHP, HTML, JavaScript, or other code.
* Except as permitted by applicable law, decipher, decompile, disassemble, or reverse engineer any of the software comprising or in any way making up a part of the Services.
* Except as may be the result of standard search engine or Internet browser usage, use, launch, develop, or distribute any automated system, including without limitation, any spider, robot, cheat utility, scraper, or offline reader that accesses the Services, or use or launch any unauthorized script or other software.
* Use a buying agent or purchasing agent to make purchases on the Services.
* Make any unauthorized use of the Services, including collecting usernames and/or email addresses of users by electronic or other means for the purpose of sending unsolicited email, or creating user accounts by automated means or under false pretenses.
* Use the Services as part of any effort to compete with us or otherwise use the Services and/or the Content for any revenue-generating endeavor or commercial enterprise.

### **11. USER GENERATED CONTRIBUTIONS**

The Services does not offer users to submit or post content.

### **12. CONTRIBUTION LICENSE**

You and Services agree that we may access, store, process, and use any information and personal data that you provide following the terms of the Privacy Policy and your choices (including settings).\
By submitting suggestions or other feedback regarding the Services, you agree that we can use and share such feedback for any purpose without compensation to you.

### **13. SERVICES MANAGEMENT**

We reserve the right, but not the obligation, to: (1) monitor the Services for violations of these Legal Terms; (2) take appropriate legal action against anyone who, in our sole discretion, violates the law or these Legal Terms, including without limitation, reporting such user to law enforcement authorities; (3) in our sole discretion and without limitation, refuse, restrict access to, limit the availability of, or disable (to the extent technologically feasible) any of your Contributions or any portion thereof; (4) in our sole discretion and without limitation, notice, or liability, to remove from the Services or otherwise disable all files and content that are excessive in size or are in any way burdensome to our systems; and (5) otherwise manage the Services in a manner designed to protect our rights and property and to facilitate the proper functioning of the Services.

### **14. PRIVACY POLICY**

We care about data privacy and security. Please review our Privacy Policy: <https://www.devin.fm/legal/privacy-policy>. By using the Services, you agree to be bound by our Privacy Policy, which is incorporated into these Legal Terms. In compliance with the General Data Protection Regulation (GDPR), please be advised that the personal information you submit to us by creating an account will be processed and hosted on servers in Germany and on company computers located in Denmark. We are committed to protecting your data and ensuring your right to privacy.

Under GDPR, you have the right to access, rectify, or erase your personal data, the right to restrict and object to certain processing of your data, and the right to data portability. If you wish to exercise any of these rights, please contact us at <privacy@devin.fm>.

Your personal data will be used only for purposes specified in our Privacy Policy, such as to provide and improve our Services, to communicate with you, and to comply with legal obligations.

For more information about our data processing practices and your rights under GDPR, please visit our Privacy Policy.

### **15. TERM AND TERMINATION**

These Legal Terms shall remain in full force and effect while you use the Services.&#x20;

WITHOUT LIMITING ANY OTHER PROVISION OF THESE LEGAL TERMS, WE RESERVE THE RIGHT TO, IN OUR SOLE DISCRETION AND WITHOUT NOTICE OR LIABILITY, DENY ACCESS TO AND USE OF THE SERVICES (INCLUDING BLOCKING CERTAIN IP ADDRESSES), TO ANY PERSON FOR ANY REASON OR FOR NO REASON, INCLUDING WITHOUT LIMITATION FOR BREACH OF ANY REPRESENTATION, WARRANTY, OR COVENANT CONTAINED IN THESE LEGAL TERMS OR OF ANY APPLICABLE LAW OR REGULATION. WE MAY TERMINATE YOUR USE OR PARTICIPATION IN THE SERVICES OR DELETE YOUR ACCOUNT AND ANY CONTENT OR INFORMATION THAT YOU POSTED AT ANY TIME, WITHOUT WARNING, IN OUR SOLE DISCRETION.

If we terminate or suspend your account for any reason, you are prohibited from registering and creating a new account under your name, a fake or borrowed name, or the name of any third party, even if you may be acting on behalf of the third party. In addition to terminating or suspending your account, we reserve the right to take appropriate legal action, including without limitation pursuing civil, criminal, and injunctive redress.

### **16. MODIFICATIONS AND INTERRUPTIONS**

We reserve the right to change, modify, or remove the contents of the Services at any time or for any reason at our sole discretion without notice. However, we have no obligation to update any information on our Services. We will not be liable to you or any third party for any modification, price change, suspension, or discontinuance of the Services.

We cannot guarantee the Services will be available at all times. We may experience hardware, software, or other problems or need to perform maintenance related to the Services, resulting in interruptions, delays, or errors. We reserve the right to change, revise, update, suspend, discontinue, or otherwise modify the Services at any time or for any reason without notice to you. You agree that we have no liability whatsoever for any loss, damage, or inconvenience caused by your inability to access or use the Services during any downtime or discontinuance of the Services. Nothing in these Legal Terms will be construed to obligate us to maintain and support the Services or to supply any corrections, updates, or releases in connection therewith.

### **17. GOVERNING LAW**

These Legal Terms are governed by and interpreted following the laws of Denmark, and the use of the United Nations Convention of Contracts for the International Sales of Goods is expressly excluded. If your habitual residence is in the EU, and you are a consumer, you additionally possess the protection provided to you by obligatory provisions of the law in your country to residence. Devin ApS and yourself both agree to submit to the non-exclusive jurisdiction of the courts of Hovedstaden, which means that you may make a claim to defend your consumer protection rights in regards to these Legal Terms in Denmark, or in the EU country in which you reside.

### **18. DISPUTE RESOLUTION**

The European Commission provides an [online dispute resolution platform](https://ec.europa.eu/consumers/odr), which you can access. If you would like to bring this subject to our attention, please contact us.

### **19. CORRECTIONS**

There may be information on the Services that contains typographical errors, inaccuracies, or omissions, including descriptions, pricing, availability, and various other information. We reserve the right to correct any errors, inaccuracies, or omissions and to change or update the information on the Services at any time, without prior notice.

### **20. DISCLAIMER**

THE SERVICES ARE PROVIDED ON AN AS-IS AND AS-AVAILABLE BASIS. YOU AGREE THAT YOUR USE OF THE SERVICES WILL BE AT YOUR SOLE RISK. TO THE FULLEST EXTENT PERMITTED BY LAW, WE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, IN CONNECTION WITH THE SERVICES AND YOUR USE THEREOF, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. WE MAKE NO WARRANTIES OR REPRESENTATIONS ABOUT THE ACCURACY OR COMPLETENESS OF THE SERVICES' CONTENT OR THE CONTENT OF ANY WEBSITES OR MOBILE APPLICATIONS LINKED TO THE SERVICES AND WE WILL ASSUME NO LIABILITY OR RESPONSIBILITY FOR ANY (1) ERRORS, MISTAKES, OR INACCURACIES OF CONTENT AND MATERIALS, (2) PERSONAL INJURY OR PROPERTY DAMAGE, OF ANY NATURE WHATSOEVER, RESULTING FROM YOUR ACCESS TO AND USE OF THE SERVICES, (3) ANY UNAUTHORIZED ACCESS TO OR USE OF OUR SECURE SERVERS AND/OR ANY AND ALL PERSONAL INFORMATION AND/OR FINANCIAL INFORMATION STORED THEREIN, (4) ANY INTERRUPTION OR CESSATION OF TRANSMISSION TO OR FROM THE SERVICES, (5) ANY BUGS, VIRUSES, TROJAN HORSES, OR THE LIKE WHICH MAY BE TRANSMITTED TO OR THROUGH THE SERVICES BY ANY THIRD PARTY, AND/OR (6) ANY ERRORS OR OMISSIONS IN ANY CONTENT AND MATERIALS OR FOR ANY LOSS OR DAMAGE OF ANY KIND INCURRED AS A RESULT OF THE USE OF ANY CONTENT POSTED, TRANSMITTED, OR OTHERWISE MADE AVAILABLE VIA THE SERVICES. WE DO NOT WARRANT, ENDORSE, GUARANTEE, OR ASSUME RESPONSIBILITY FOR ANY PRODUCT OR SERVICE ADVERTISED OR OFFERED BY A THIRD PARTY THROUGH THE SERVICES, ANY HYPERLINKED WEBSITE, OR ANY WEBSITE OR MOBILE APPLICATION FEATURED IN ANY BANNER OR OTHER ADVERTISING, AND WE WILL NOT BE A PARTY TO OR IN ANY WAY BE RESPONSIBLE FOR MONITORING ANY TRANSACTION BETWEEN YOU AND ANY THIRD-PARTY PROVIDERS OF PRODUCTS OR SERVICES. AS WITH THE PURCHASE OF A PRODUCT OR SERVICE THROUGH ANY MEDIUM OR IN ANY ENVIRONMENT, YOU SHOULD USE YOUR BEST JUDGMENT AND EXERCISE CAUTION WHERE APPROPRIATE.

### **21. LIMITATIONS OF LIABILITY**

IN NO EVENT WILL WE OR OUR DIRECTORS, EMPLOYEES, OR AGENTS BE LIABLE TO YOU OR ANY THIRD PARTY FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL, EXEMPLARY, INCIDENTAL, SPECIAL, OR PUNITIVE DAMAGES, INCLUDING LOST PROFIT, LOST REVENUE, LOSS OF DATA, OR OTHER DAMAGES ARISING FROM YOUR USE OF THE SERVICES, EVEN IF WE HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. NOTWITHSTANDING ANYTHING TO THE CONTRARY CONTAINED HEREIN, OUR LIABILITY TO YOU FOR ANY CAUSE WHATSOEVER AND REGARDLESS OF THE FORM OF THE ACTION, WILL AT ALL TIMES BE LIMITED TO THE AMOUNT PAID, IF ANY, BY YOU TO US DURING THE three (3) mONTH PERIOD PRIOR TO ANY CAUSE OF ACTION ARISING. CERTAIN US STATE LAWS AND INTERNATIONAL LAWS DO NOT ALLOW LIMITATIONS ON IMPLIED WARRANTIES OR THE EXCLUSION OR LIMITATION OF CERTAIN DAMAGES. IF THESE LAWS APPLY TO YOU, SOME OR ALL OF THE ABOVE DISCLAIMERS OR LIMITATIONS MAY NOT APPLY TO YOU, AND YOU MAY HAVE ADDITIONAL RIGHTS.

### **22. INDEMNIFICATION**

You agree to defend, indemnify, and hold us harmless, including our subsidiaries, affiliates, and all of our respective officers, agents, partners, and employees, from and against any loss, damage, liability, claim, or demand, including reasonable attorneys’ fees and expenses, made by any third party due to or arising out of: (1) use of the Services; (2) breach of these Legal Terms; (3) any breach of your representations and warranties set forth in these Legal Terms; (4) your violation of the rights of a third party, including but not limited to intellectual property rights; or (5) any overt harmful act toward any other user of the Services with whom you connected via the Services. Notwithstanding the foregoing, we reserve the right, at your expense, to assume the exclusive defense and control of any matter for which you are required to indemnify us, and you agree to cooperate, at your expense, with our defense of such claims. We will use reasonable efforts to notify you of any such claim, action, or proceeding which is subject to this indemnification upon becoming aware of it.

### **23. USER DATA**

We will maintain certain data that you transmit to the Services for the purpose of managing the performance of the Services, as well as data relating to your use of the Services. Although we perform regular routine backups of data, you are solely responsible for all data that you transmit or that relates to any activity you have undertaken using the Services. You agree that we shall have no liability to you for any loss or corruption of any such data, and you hereby waive any right of action against us arising from any such loss or corruption of such data.

### **24. ELECTRONIC COMMUNICATIONS, TRANSACTIONS, AND SIGNATURES**

Visiting the Services, sending us emails, and completing online forms constitute electronic communications. You consent to receive electronic communications, and you agree that all agreements, notices, disclosures, and other communications we provide to you electronically, via email and on the Services, satisfy any legal requirement that such communication be in writing. YOU HEREBY AGREE TO THE USE OF ELECTRONIC SIGNATURES, CONTRACTS, ORDERS, AND OTHER RECORDS, AND TO ELECTRONIC DELIVERY OF NOTICES, POLICIES, AND RECORDS OF TRANSACTIONS INITIATED OR COMPLETED BY US OR VIA THE SERVICES. You hereby waive any rights or requirements under any statutes, regulations, rules, ordinances, or other laws in any jurisdiction which require an original signature or delivery or retention of non-electronic records, or to payments or the granting of credits by any means other than electronic means.

### **25. CALIFORNIA USERS AND RESIDENTS**

If any complaint with us is not satisfactorily resolved, you can contact the Complaint Assistance Unit of the Division of Consumer Services of the California Department of Consumer Affairs in writing at 1625 North Market Blvd., Suite N 112, Sacramento, California 95834 or by telephone at (800) 952-5210 or (916) 445-1254.

### **26.   MISCELLANEOUS**&#x20;

These Legal Terms and any policies or operating rules posted by us on the Services or in respect to the Services constitute the entire agreement and understanding between you and us. Our failure to exercise or enforce any right or provision of these Legal Terms shall not operate as a waiver of such right or provision. These Legal Terms operate to the fullest extent permissible by law. We may assign any or all of our rights and obligations to others at any time. We shall not be responsible or liable for any loss, damage, delay, or failure to act caused by any cause beyond our reasonable control. If any provision or part of a provision of these Legal Terms is determined to be unlawful, void, or unenforceable, that provision or part of the provision is deemed severable from these Legal Terms and does not affect the validity and enforceability of any remaining provisions. There is no joint venture, partnership, employment or agency relationship created between you and us as a result of these Legal Terms or use of the Services. You agree that these Legal Terms will not be construed against us by virtue of having drafted them. You hereby waive any and all defenses you may have based on the electronic form of these Legal Terms and the lack of signing by the parties hereto to execute these Legal Terms.

### **27. CONTACT US**

In order to resolve a complaint regarding the Services or to receive further information regarding use of the Services, please contact us at:

**Devin ApS**\
**H.C. Andersens Boulevard 38, 3tv**\
**Copenhagen 1553**\
**Denmark**\
**<hello@devin.fm>**

## ACKNOWLEDGEMENTS

### Claris FileMaker Data Migration Tool

Copyright © 2021 Claris International Inc. All rights reserved.

License Grant. Claris International Inc. (“Claris”) grants you a non-exclusive limited license to use this Claris FileMaker Data Migration Tool (“Software”) with a licensed copy of Claris FileMaker software solely to move data from one FileMaker fmp.12 file to another FileMaker fmp.12 file. You may use the Software for personal use or when working on your client’s files. You are hereby prohibited from redistributing this Software as a standalone tool. You may redistribute this Software only when incorporated into a tool that provides features other than those provided by the Software, and that you own or create.

Intellectual Property. Claris owns all rights to the Software, including intellectual property rights therein.

No warranty. THIS SOFTWARE IS PROVIDED BY CLARIS ''AS IS'' AND WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL CLARIS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Indemnity. You will indemnify and hold Claris harmless from any and all claims, damages, losses, liabilities, costs and expenses (including reasonable fees of attorneys and other professionals) arising out of or in connection with your use of the Software.

Export Law Assurances. You may not use or otherwise export or re-export the Software except as authorized by United States law and the laws of the jurisdiction in which the Software was obtained. In particular, but without limitation, the Software may not be exported or re-exported (a) into any U.S. embargoed countries, or (b) to anyone on the U.S. Treasury Department's list of Specially Designated Nationals or the U.S. Department of Commerce's Denied Person's List or Entity List. By using the Software you represent and warrant that you are not located in, under control of, or a national or resident of any such country or on any such list. You also agree that you will not use the Software for any purposes prohibited by United States law, including, without limitation, the development, design, manufacture or production of nuclear, chemical or biological weapons.&#x20;

### Claris FileMaker Developer Tool

Copyright © 2024 Claris International Inc. All rights reserved.

License Grant. Claris International Inc. (“Claris”) grants you a non-exclusive limited license to use this Claris FileMaker Developer Tool (“Software”) with a licensed copy of Claris FileMaker software solely to perform developmental tasks with databases, including copying, cloning, saving as XML file, performing consistency checking, encrypting, decrypting, enabling Kiosk mode, removing Admin access, and performing recovery.

Intellectual Property. Claris owns all rights to the Software, including intellect                tual property rights therein.

No warranty. THIS SOFTWARE IS PROVIDED BY CLARIS ''AS IS'' AND WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL CLARIS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Indemnity. You will indemnify and hold Claris harmless from any and all claims, damages, losses, liabilities, costs and expenses (including reasonable fees of attorneys and other professionals) arising out of or in connection with your use of the Software.

Export Law Assurances. You may not use or otherwise export or re-export the Software except as authorized by United States law and the laws of the jurisdiction in which the Software was obtained. In particular, but without limitation, the Software may not be exported or re-exported (a) into any U.S. embargoed countries, or (b) to anyone on the U.S. Treasury Department's list of Specially Designated Nationals or the U.S. Department of Commerce's Denied Person's List or Entity List. By using the Software you represent and warrant that you are not located in, under control of, or a national or resident of any such country or on any such list. You also agree that you will not use the Software for any purposes prohibited by United States law, including, without limitation, the development, design, manufacture or production of nuclear, chemical or biological weapons.

### Python

1. This LICENSE AGREEMENT is between the Python Software Foundation ("PSF"), and the Individual or Organization ("Licensee") accessing and otherwise using Python 3.12.0 software in source or binary form and its associated documentation.
2. Subject to the terms and conditions of this License Agreement, PSF hereby grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python 3.12.0 alone or in any derivative version, provided, however, that PSF's License Agreement and PSF's notice of copyright, i.e., "Copyright © 2001-2023 Python Software Foundation; All Rights Reserved" are retained in Python 3.12.0 alone or in any derivative version prepared by Licensee.
3. In the event Licensee prepares a derivative work that is based on or incorporates Python 3.12.0 or any part thereof, and wants to make the derivative work available to others as provided herein, then Licensee hereby agrees to include in any such work a brief summary of the changes made to Python 3.12.0.
4. PSF is making Python 3.12.0 available to Licensee on an "AS IS" basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 3.12.0 WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.
5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON 3.12.0 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 3.12.0, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
6. This License Agreement will automatically terminate upon a material breach of its terms and conditions.
7. Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between PSF and Licensee. This License Agreement does not grant permission to use PSF trademarks or trade name in a trademark sense to endorse or promote products or services of Licensee, or any third party.
8. By copying, installing or otherwise using Python 3.12.0, Licensee agrees to be bound by the terms and conditions of this License Agreement.

© 2024 Devin ApS. All rights reserved.

&#x20;


# Devinへようこそ 👋

Devinは、バージョン管理、テスト、高度なデプロイメントおよびデータ移行のワークフローをサポートするDevOpsプラットフォームであり、Claris FileMaker向けに特別に構築されています。

Devinは、作業をより簡単に、迅速に、そして信頼性高くする新しい方法を提供します。これは、単独の開発者であろうと、大規模なチームの一員であろうと関係ありません。FileMaker向けに特別に設計された高度な[DevOps](https://ja.wikipedia.org/wiki/DevOps)プラクティスを統合することで、Devinは開発者の協力方法、バージョン管理、テストおよびデプロイメントのワークフロー自動化を変革します。Devinは単なるツールではなく、FileMaker開発環境に特化したDevOpsプラクティスを採用するための道筋です。

このドキュメントでは、Devinの利用におけるすべてのステップを順を追って説明します。初期設定から、FileMaker開発の実践を向上させる高度なDevOps機能の習得までを網羅しています。

<figure><img src="/files/7vrO0Q0fs7v3sWPTsHtZ" alt=""><figcaption><p>プロジェクトワークスペース: fmp12ファイルのブランチ、バージョン、変更の概要</p></figcaption></figure>


# Claris FileMaker向けのDevOps

Devinでは、Clarisコミュニティにモダンな開発手法である[DevOps](https://ja.wikipedia.org/wiki/DevOps)を導入することに情熱を注いでいます。私たちはClarisテクノロジーと、より広範なソフトウェア開発エコシステムの両方に精通しており、Devinはこれらの分野を組み合わせた数年にわたる研究とエンジニアリングの成果です。このプロジェクトは、2021年に共同創設者の一人であるDavid Wollesenによる修士論文[「FileMakerを使用したFileMaker向けのDevOpsツールの開発」](https://cdn.prod.website-files.com/62d1430f752de40906dd904e/62d660821701302d41c60879_dwol_thesis_compressed.pdf)から生まれました。

## DevOps（デブオプス）

広範なソフトウェア開発の世界では、DevOpsはチームがソフトウェアを構築、テスト、デプロイ、維持する方法に革命をもたらしました。DevOpsは、継続的インテグレーション、継続的デリバリー、そして運用効率に重点を置き、ソフトウェアライフサイクルのさまざまな段階を自動化し、効率化するツールによって支援されます。しかし、FileMaker開発者にとって、これらの原則を適用することは、FileMakerのユニークな`fmp12`アーキテクチャやワークフローとシームレスに統合できる互換性のあるツールの不足によって妨げられてきました。

### Claris FileMakerにおける課題

FileMakerの`fmp12`形式と統合環境は、多くの点で強力ですが、GitHubのようなソース管理やCI/CDワークフロー（バージョン管理、回帰テスト、デプロイ自動化）をサポートする一般的なDevOpsツールとの互換性が欠けています。これにより、開発者は変更の追跡やソフトウェア品質の維持に関して、手動でエラーが発生しやすいワークフローに依存せざるを得なくなり、多くの時間を消費するだけでなく、運用環境にエラーを導入するリスクも高まります。FileMaker Data Migration Toolは継続的デプロイメントを支援することを目的としていますが、そのコマンドラインインターフェースは多くの開発者にとってワークフローに統合するのが難しく、その結果、プロダクション環境に直接変更を加える「ライブ開発」のような慣行に繋がることがあります。

{% hint style="info" %}
このテーマについて詳しく知りたい場合は、[「FileMakerを使用したFileMaker向けのDevOpsツールの開発」](https://cdn.prod.website-files.com/62d1430f752de40906dd904e/62d660821701302d41c60879_dwol_thesis_compressed.pdf)という修士論文が、FileMakerにおけるDevOpsの課題のほぼすべての側面について詳しく研究しており、OttoやInspector ProのようなツールがDevinのアプローチ（論文内ではfmOpsと呼ばれています）とどのように比較されるかについても説明しています。
{% endhint %}

## Claris FileMaker向けのツール

## Devinの紹介

Devinは、デプロイメントやデータ移行の自動化を超え、FileMaker向けの包括的なDevOpsソリューションを提供します。バージョン管理や回帰テストを統合し、開発からデプロイメントまでのシームレスで自動化されたワークフローを実現します。これにより、DevinはFileMaker開発者に未来に対応した機能を備えた重要な進歩をもたらします。

<figure><img src="/files/CHtHw5BhYy1MbSiJKzOy" alt=""><figcaption><p>Devinの統合されたDevOpsワークフロー</p></figcaption></figure>


# バージョン管理

Devinによるバージョン管理の紹介

## バージョン管理の本質

バージョン管理の本質は、ソフトウェアコードの変更を追跡し、管理するプラクティスです。これは現代のソフトウェア開発における基盤となる要素であり、チームがプロジェクトの進化を記録し、必要に応じて以前の状態に戻すことを可能にし、より効果的にコラボレーションできるようにします。バージョン管理の重要性は単なる変更追跡にとどまらず、実験が奨励される環境を育み、望ましくない変更があったとしても元に戻せるという安心感を提供します。これは、複雑さの管理、信頼性の確保、そして開発チーム内でのコラボレーションを円滑にするために非常に重要です。

## なぜバージョン管理が重要なのか

* **履歴と責任**: 誰がいつどのような変更を行ったかの履歴を保持し、開発プロセスに責任と透明性を追加します。
* **コラボレーション**: 複数の開発者が個別または共有の開発ファイルで作業することを可能にします。
* **リスク軽減**: 以前のバージョンに迅速に戻る機能を提供し、開発における中断や重大な後退のリスクを軽減します。

## Devinのバージョン管理に対するアプローチ

Claris FileMakerにおけるバージョン管理の従来の課題を理解した上で、Devinはバージョンやブランチの管理をシンプルかつ直感的に行えるシステムを導入しています。

### ブランチ

Devinにおけるブランチは、開発ファイルの分離されたコピーとして機能し、<ファイル名>\_<ブランチ>.fmp12という形式で名前が付けられます。各プロジェクトにはデフォルトのブランチがあり、これを「`main`」と呼びます。基本的な考え方としては、メインファイルに直接変更を加えるのではなく、異なる目的に応じて新しいブランチを作成します。たとえば、開発用のブランチは「`dev`」と呼ぶことができます。

<figure><img src="/files/PysN8WymFAH9u1de9YRf" alt=""><figcaption><p>Devinでのファイルのブランチ作成</p></figcaption></figure>

そして、開発用ファイル（`dev`ファイル）が安定して十分にテストされたと感じた場合（[参照](/jp/ji-neng/tesuto)）、それを`main`（または別のブランチ）に[リリースする](#rirsu)ことができます。こうすることで、`main`は常に最新の安定した開発ファイルのバージョンを表すようになります。

プロジェクトワークスペースのモジュールタブでは、開発者はプロジェクトに含まれるすべてのファイルの概要を見ることができます。ファイルをクリックすると、すべてのチームメンバーによって実行されたブランチ、バージョン、リリース履歴の視覚的なグラフが表示されます。

<figure><img src="/files/RHa3mVxDzoKETybCfXwV" alt=""><figcaption><p>モジュールのブランチと関連するバージョンの概要</p></figcaption></figure>

{% hint style="info" %}
開発ファイルをプロジェクトに追加すると（[「.fmp12ファイルをプロジェクトに追加する」](/jp/gaido/projects/modules/add-a-module)を参照）、そのファイルのコピーが自動的にメインブランチに配置され、\_main.fmp12という名前が付けられます。ブランチ名の付いていない元の開発ファイルはDevinによって使用されず、手動で削除することができます。
{% endhint %}

### バージョン

Devinは、ブランチ化された`fmp12`ファイルを開発の各段階でスナップショットとして保存することで、バージョン管理を行います。これらのスナップショットはgitのコミットに相当しますが、クローンまたはブランチ化されたファイルの完全なバックアップとして機能します。このスナップショットは、ファイルの安定した段階の重要なマイルストーンやバックアップとして機能し、簡単にバックアップを保存したり、進捗を記録したり、必要に応じて以前のバージョンに戻すことができるように設計されています。

<figure><img src="/files/p3L4SLhOSwzGXwrPi05O" alt=""><figcaption><p>Devinでのバージョン保存</p></figcaption></figure>

プロジェクトワークスペースのブランチビューでは、選択されたブランチのすべてのバージョンが表示されます。

<figure><img src="/files/r9OC8OkPuBcBbSb9A4Ii" alt=""><figcaption><p>選択されたブランチのバージョン履歴</p></figcaption></figure>

### リリース

Devinのリリースプロセスは、任意のブランチから他のブランチに変更を統合するための方法を提供します。他の開発エコシステムで一般的な、複数のブランチのコード変更を統合する伝統的なマージ（gitなどで行われるもの）は、Clarisテクノロジーの制約によりFileMakerでは現在のところ実現できません。その代わりに、Devinのリリース機能は、ソースブランチのファイルでターゲットブランチのファイルを単純に置き換えるという仕組みになっています。

<figure><img src="/files/l34n6XKM2WSGBMfj8msX" alt=""><figcaption><p>Devinでのバージョンのリリース</p></figcaption></figure>

ブランチビューでバージョンを選択すると、スナップショットに関する詳細情報が表示されるサイドバーが開き、バージョンを別のブランチにリリースするなどの操作を行うためのボタンが表示されます。

<figure><img src="/files/G79BVbfAz1GKnxckmWto" alt=""><figcaption><p><code>dev</code>ブランチの1.3を<code>main</code>ブランチにリリースする</p></figcaption></figure>

このアプローチはまだブランチのマージをサポートしておらず、並行して複数のブランチで作業するという概念も実現できませんが、Clarisテクノロジーが対応次第、これらの機能を強化していくことをお約束します。これらの機能が実装されるまでは、プロジェクトの中心的な情報源として主要な開発ブランチを指定し、テストや実験など一時的な用途には他のブランチを使用することをお勧めします。


# 回帰テスト

Devinによる回帰テストの紹介

## 回帰テストの導入

ソフトウェア開発の動的な世界では、アップデートや機能強化を通じてアプリケーションの信頼性と機能性を確保することが重要です。ここで登場するのが回帰テストです。これは一般的なソフトウェア開発では広く認識されている概念ですが、Claris FileMakerコミュニティにおいては比較的新しいものです。回帰テストは、最近のスクリプトやスキーマの変更が既存の機能に影響を与えていないか、または破損していないかを体系的に確認し、新しいバージョンをクライアントに提供した後でもアプリケーションが期待通りに動作し続けることを保証するプロセスです。

## なぜ回帰テストが重要なのか

* **整合性の維持**: FileMakerプロジェクトが進化する中で、回帰テストは既存の機能の整合性を維持し、新しい変更によってエラーが導入されないようにします。
* **品質向上**: 回帰テストは、アプリケーションの全体的な品質を向上させ、より安定した信頼性の高いソフトウェア製品の開発に貢献します。
* **自信向上**: 変更が既存の機能を壊さないことが確認できるため、開発者や関係者はアプリケーションの継続的な改善に対して自信を持つことができます。

## テスト手法

回帰テストでは、個々のコンポーネント（「ユニット」）と、それらの外部依存関係（「インテグレーション」）との相互作用の両方を検証します。これにより、ブランチに変更をリリースする前や、環境間での更新を展開する前に、アプリケーションの堅牢性を確保します。

### ユニットテスト

これらのテストは、アプリケーション内の個々のコンポーネントや関数に焦点を当て、それぞれを分離してその正確性を確認します。例えば、請求書内の合計金額を計算するスクリプトをテストする場合が考えられます。予め定義された入力をこの関数に与え、出力が期待通りであるかを確認するテストスクリプトを書くことで、アプリケーションの最小単位でも正しく動作することを確保できます。

## インテグレーションテスト

ユニットテストが個々の部品を調べるのに対し、インテグレーションテストはそれらの部品がどのように連携するかを確認します。例えば、行アイテムを追加して最終的な請求書を生成するまでの請求書作成プロセス全体をテストすることが考えられます。別の例として、特定のJSONペイロードを用いてAPIから期待されるHTTPコードを受け取ることを検証することもあります。これにより、個々のコンポーネントが連携して正しく機能し、エンドツーエンドのプロセスがエラーなく動作することが確認できます。

## Devinを使用した回帰テストの実装

Devinは、FileMakerのスクリプトワークスペースとシームレスに統合されるシンプルなテストフレームワークを提供し、テストスクリプトの作成を可能にします。

* **整理されたテストスクリプト**: ファイルのスクリプトワークスペース内にテスト用のフォルダを作成します。デフォルトでは、Devinは「Tests」フォルダを探しますが、カスタム名を指定することもできます。Devinは、このフォルダおよびそのサブフォルダ内のすべてのスクリプトをテストスクリプトとして解釈します。
* **成功の定義**: テストスクリプト内で `Exit Script [True]` コマンドを使用して成功を示します。テストスクリプトが`True`を返さない場合、Devinはそのテストを「`FAILED`」と解釈します。

<figure><img src="/files/gxFkDKjRHkE8Y6TdBfgW" alt=""><figcaption><p>「3つのテストスクリプトを含むスクリプトワークスペースの例」</p></figcaption></figure>

次に、Devinのプロジェクトワークスペースでモジュール -> テストタブにアクセスして、[「テストスクリプトを読み込む」](/jp/gaido/projects/tests/load-test-scripts)と[「テストスクリプトを実行する」](/jp/gaido/projects/tests/run-test-scripts)を行います。

<figure><img src="/files/VV1RcKfje2TPOVZ1m0dD" alt=""><figcaption><p>「<code>dev</code>」ブランチのモジュールでテストが実行されている例</p></figcaption></figure>

{% hint style="warning" %}
Devinは、テストを実行するためにFileMaker OData APIを利用します。テストを正常に実行するためには、モジュールをDevinに追加する際に指定されたアカウントに対して、odata拡張権限が有効になっていることを確認してください。さらに、FM OData APIでは、スクリプト名が数字で始まることや特殊文字を含むことが制限されていることに注意してください。
{% endhint %}


# デプロイメント

デプロイメントの理解

Devinは、FileMakerプロジェクトのデプロイメントと管理を開発から本番環境までのさまざまな環境で効率的に行えるようにします。デプロイメントとその効果的な管理戦略を理解することは、FileMakerアプリケーションの整合性とパフォーマンスを維持するために重要です。

Devinでは、開発サーバーの外に存在するすべての`fmp12`ファイルはデプロイメントと見なされます。これらのデプロイメントは、開発ライフサイクルの異なるステージ（環境）に位置するプロジェクトのライブバージョンです。それぞれのデプロイメントは、開発環境内の対応するファイルおよびリリースブランチにリンクされています。このようにして、特定の環境にブランチをリンクすることで、カスタムデプロイメントフローを設定することができます。

例えば、以下の画像は、「`UAT`」デプロイメントが「`test`」ブランチにリンクされている例を示しています。つまり、「`test`」ブランチに新しいリリースがあるたびに、それを「`UAT`」にデプロイできるということです。

<figure><img src="/files/unD0yRaauFfN2KlKzJY9" alt=""><figcaption><p>「UAT」と「PROD」の2つの環境にデプロイメントがあるモジュールの例で、それぞれが対応するブランチにリンクされています。</p></figcaption></figure>


# デフォルト環境

環境ごとにデプロイメントを分離する

Devinは、変更が本番環境に届く前に、複数の環境にデプロイすることで、堅牢なテストと安定性を確保します。デフォルトの環境には以下が含まれます：

* **開発（開発サーバー）**: 新機能や変更が最初に行われる場所です。この環境は、開発および初期の社内テストに使用されます。
* **ステージング**: 本番環境を模倣してアプリケーションのすべての要素をテストする前本番環境で、ライブ環境に影響を与えることなくテストが行われます。
* **本番**: アプリケーションが実行され、エンドユーザーがアクセスできるライブ環境です。


# ワークフロー

段階的な展開とテスト

採用するデプロイメントワークフローは、プロジェクトの規模、複雑さ、チームの好み、予算の制約などに応じて大きく異なる場合があります。Devinは、開発から本番環境への直接的なデプロイメントから、開発、ステージング、本番環境を含むより複雑なセットアップまで、さまざまなワークフローをサポートするように設計されています。この柔軟性により、チームがどのように運用したいかやプロジェクトの特定の要求に関係なく、Devinはスムーズで効率的なデプロイメントプロセスを促進し、迅速な更新から公開前の包括的なテストサイクルまで対応することができます。

## 一般的なワークフロー

1. **ステージングへの初期デプロイ**: リリースが準備できたら、まずはステージング環境にデプロイします。このステップは、ユーザー受け入れテストやパフォーマンス評価を行うために重要で、本番環境に影響を与えずに実施します。
2. **レビューと調整**: ステージング環境でのデプロイメントで問題や改善点が見つかった場合は、ブランチされた開発環境に戻って調整を行います。この反復プロセスにより、十分に検証された変更のみが本番環境に反映されることが保証されます。
3. **本番環境への最終デプロイ**: ステージング環境でのテストとレビューが満足いくものであれば、リリースを本番環境にデプロイします。この最終ステップで、新しい機能や修正がエンドユーザーに提供されます。

## 反復的な開発、テスト、デプロイメント

デプロイメントプロセスは本質的に反復的であり、チームがアプリケーションを継続的に改善し、改良することを可能にします。どの段階で問題が検出された場合でも、開発者は以前のバージョンに戻り、必要な修正を加えて再度ステージング環境にデプロイし、さらなるテストを行うことができます。このサイクルは必要に応じて繰り返され、各環境の重要性が強調され、安定した信頼性の高い最終製品の提供が実現します。


# 内部の仕組み

異なる環境間での更新のデプロイやマイグレーション、例えば開発サーバーからステージングへの新しいバージョンの移動は、複雑なプロセスであり、開発およびターゲットサーバーの両方で多くのステップを含みます。しかし、Devinアプリでのワンクリックで、これらのステップはすべて、各サーバー上のDevin APIによって自動化されます。

{% hint style="info" %}
現在のバージョンのDevinは、`STAGING`および`PRODUCTION`環境へのリリース展開のためのデフォルトプロセスを実装しています。近日中に、これが拡張される予定です（「[今後の展望: デプロイメントの柔軟性向上](#looking-ahead-enhacing-deployment-flexibility)」を参照）。
{% endhint %}

## デフォルトデプロイメントパイプライン

デフォルトのデプロイメントパイプラインは、環境のリリースブランチに新しいリリースが行われ、そのバージョン番号がデプロイメントのものと異なる場合に反応します。つまり、もし本番環境がメインブランチをリリースブランチとして使用し、「`main`」ブランチに対して新しいバージョンがリリースされると、このパイプラインは標準化された自動デプロイメントおよびデータマイグレーションプロセスを使用してリリースを展開します。

デプロイメントのためにこのパイプラインをトリガーする方法については、[「リリースをデプロイ」](/jp/gaido/projects/releases/deploy-a-release)を参照してください。

<figure><img src="/files/34BG0ZBnvLFCCUOadqT2" alt=""><figcaption><p>Devinのデフォルトデプロイメントプロセス</p></figcaption></figure>

### 開発サーバーでの処理

1. **対象ブランチファイルのクローン作成**: 対象のリリースブランチにリリースされた最新バージョンをクローンします。
2. **転送**: クローンしたファイルがターゲットサーバーに安全に転送されます。

### ターゲットサーバーでの処理

1. **ライブファイルの閉鎖**: 元のライブファイルを一時的に閉じます（ユーザーが接続していない場合）。（ゼロダウンタイムのデータマイグレーションプロセスをサポートするアプローチを現在検討中です）
2. **データマイグレーション**: FileMaker Data Migration CLIツールを利用して、元のファイルから新しいバージョンへのデータをマイグレーションします。
3. **ファイルの置き換え**: 新しいファイルを移動して開き、古いバージョンを置き換えます。

## 安全性と回復メカニズム

DevinのAPIは、サーバー間の通信とプロセスの実行を処理する堅牢な安全機能を組み込んでおり、環境間でのデータの更新および移行に伴う複雑さやリスクに対応できるよう設計されています。これらのメカニズムは、デプロイメントプロセス全体でシステムが安定して安全であることを保証し、ビジネス運営に影響を与える可能性のある中断から保護します。

### エラーハンドリングとロールバック機能

#### プロアクティブモニタリング

Devinはサーバーとプロセスを継続的に監視し、問題の兆候を検出します。これには、FileMaker Serverが期待通りに動作しているか、サーバーに十分なリソースが利用可能か、また、接続されているユーザーがいる場合に更新プロセスが開始されないことが含まれます。

#### 自動ロールバック

デプロイメントまたはマイグレーションのフェーズでエラーが発生した場合、Devinは自動的にアプリケーションを以前の状態に戻すように設計されています。特定のエラー条件が満たされると、このロールバックがトリガーされ、ライブ環境が失敗した更新試行の影響を受けないようにします。

### **セキュリティと整合性チェック**

#### アクセス制御と認証

Devin API間のすべての通信、サーバー状態のチェック、ファイル転送、データマイグレーションログは、FileMaker ServerにインストールされたSSL証明書を使用して行われます。これにより、すべてのやり取りが安全に暗号化され、認証されることで、不正アクセスから保護され、データの整合性が守られます。

#### データ検証（まだ実装されていません）

{% hint style="warning" %}
**データ検証（まだ実装されていません）**\
Devinはデータ移行プロセス中に移行されるデータの整合性を検証しません。FileMaker Data Migration Toolが正常に完了した場合、Devinは移行ステップを成功と解釈し、プロセスを続行します。データ移行ログはDevin Appのプロジェクトワークスペース -> 移行 -> 詳細で確認できます。
{% endhint %}

## 実行の安全性

### プロセスキューイングとアイソレーション

ライブ環境への影響を防ぐために、Devin APIはすべてのプロセスに対して高度なサブプロセスおよびキューイングシステムを利用しています。このキューイングシステムは、すべての操作を孤立したタスクとして管理し、Devinが処理できるまたは設定された並行プロセス数を超える操作を開始するのを防ぎます（参照:[System Requirements](/jp/gaido/installation/system-requirements#hardware-and-concurrency)）。

これにより、プロセスがキューに入り、トリガーされるのを待つことがあります。たとえば、複数の開発者が同時に開発サーバーで操作を開始すると、一部のプロセスは開始までに遅延する可能性があります。

## **今後の展望: デプロイメントの柔軟性の向上**

Devin は、システムの安定性を維持するために、現在、構造化されたプロセスでデプロイメントの更新を実施しています。しかし、私たちは、サイクルとカスタムパイプラインと呼ばれる新機能のリリースを非常に楽しみにしています。これにより、より高度でカスタマイズ可能なデプロイメントワークフローが提供されるだけでなく、これらのワークフロー内で自動化された [回帰テスト](/jp/ji-neng/tesuto) を統合する機能も提供されます。お楽しみに 🚀


# サーバーとファイルの監視

すべてのFileMakerサーバーとfmp12ファイルを1つのウィンドウから監視する

「設定」->「サーバー」でサーバーが追加されると、それらはアプリの「モニター」ウィンドウに表示されます。ここから、サーバーとそのすべてのファイルのステータスを監視し、ファイルのオープン、クローズ、接続などの操作を行うことができます。

これにより、ブラウザで複数のFileMaker Admin Consoleウィンドウを開くことなく、すべてのサーバーとファイルの完全な概要を把握できます。

サーバーのクラウドアイコンは、サーバーのステータス（FileMaker Server Admin APIおよびDevin Server API）を示します。緑のクラウドは問題がないことを示し、赤のクラウドはサーバーのDevin APIへの接続が失敗したか、FileMaker Serverが稼働していないことを意味します。

<figure><img src="/files/ZRt3KcBZMgPZYmz0Jsqj" alt=""><figcaption><p>ファイルアクションとエラーを示すサーバーが表示された監視ウィンドウ</p></figcaption></figure>


# Installation

Download and install Devin in a matter of minutes

## Components

Devin consists of two primary components.

### Devin App

This is a `fmp12` file that gets installed locally on your **workstation**. Developers access Devin's features through this app.

### Devin Server

Running on your servers, it comprises the **Devin Engine** and various **Devin APIs**. This backend executes the operations initiated from the **Devin App**. There are two key server roles:

* **Development Server**: Hosts all development files and includes the Devin Engine (`devin-engine.fmp12`) which is automatically installed for Development server types.
* **Non-Development Server**: These servers hosts your `fmp12` files in various non-dev environments, such as staging, Q/A, or production.

{% hint style="info" %}
The Devin App does not store any project data. Developers can easily collaborate on projects because each Devin App connects to the shared `devin-engine.fmp12` database, located on your development server.
{% endhint %}

{% hint style="warning" %}
Currently, only a single development server is supported per team
{% endhint %}

## Prerequisites

<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td>System Requirements</td><td></td><td></td><td><a href="/pages/nHCEVfLlKruviwmS3Juv">/pages/nHCEVfLlKruviwmS3Juv</a></td></tr><tr><td>Networking Considerations</td><td></td><td></td><td><a href="/pages/S9ZL6WJKDzsDsf4qwSDU">/pages/S9ZL6WJKDzsDsf4qwSDU</a></td></tr></tbody></table>

## Installation Guides

<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td>Devin App</td><td></td><td></td><td><a href="/pages/hfv3EBs5Ne5nZflNhYOV">/pages/hfv3EBs5Ne5nZflNhYOV</a></td></tr><tr><td>Devin Server</td><td></td><td></td><td><a href="/pages/J9gQTUJPxhTcwdWGZMkg">/pages/J9gQTUJPxhTcwdWGZMkg</a></td></tr></tbody></table>


# System Requirements

Minimum OS and Hardware Requirements for Devin App and Devin Server

## Devin App

**Operating System:** macOS 11 (Big Sur)

**Claris FileMaker:** FileMaker Pro 19.3.1 or higher

## Devin Server

{% hint style="warning" %}
If you want Devin on a server from a cloud provider where you do not have root access, see [Devin through a Hosting Provider](/jp/gaido/installation/install-devin-server/devin-through-a-hosting-provider).
{% endhint %}

{% tabs %}
{% tab title="Development" %}
**Operating System**\
Linux\
macOS

**Claris FileMaker**\
FileMaker Server 19.5.1 or higher

**Hardware**\
CPU cores: 2\
CPU architectures: x64 or arm64\
Memory: 8GB

**Networking**\
Continuous internet connectivity
{% endtab %}

{% tab title="Staging/Production" %}
**Operating System**\
Linux\
macOS

**Claris FileMaker**\
FileMaker Server 18 or higher

**Hardware**\
CPU cores: 4\
CPU architecture: x64 or arm64\
Memory: 8GB

**Networking**\
Internet connection during Devin Server updates only: when a Devin Server update is manually triggered from the App's Server Settings window. If you require a non-internet connected version, please upvote the feature request [here.](https://feedback.devin.fm/feature-requests/p/devin-in-a-non-internet-connected-environment)
{% endtab %}
{% endtabs %}

### FileMaker Server

Development servers require FileMaker Server 19.5.1 or newer. Production servers can support versions as far back as FileMaker Server 18, as long as advanced deployment features are not required.&#x20;

### Hardware and Concurrency

Development servers typically have lower hardware requirements compared to staging or production servers. The hardware capacity of a non-development server determines its level of concurrency, influencing the number of Devin deployments and data migration tasks that can run simultaneously. It's recommended to allocate at least 4GB of RAM per concurrent operation. These settings are configurable under App -> Settings -> Servers.

{% hint style="warning" %}
Configuring a server for more concurrency than its hardware can handle can lead to server and FileMaker Server crashes. Therefore, it's important to carefully consider the hardware capacity and configure concurrency accordingly to avoid system instability and potential downtime.
{% endhint %}


# Networking Considerations

{% hint style="warning" %}
Your **workstation**, with the Devin App, must be able to reach your **Development Server** running Devin Server. Additionally, your **Development Server** must be able to connect to all **non-development servers**, such as staging and production servers that also run Devin Server.
{% endhint %}

## Devin in an internet exposed environment

* The **Dev Server** must be allowed to initiate outbound HTTPS connections on TCP port 443.
* Ensure proper DNS resolution for the **Prod Server**'s domain from the **Dev Server**.
* Adjust the **Prod Servers**' firewall to accept inbound HTTPS connections on TCP port 443 specifically from the **Dev Server**'s IP address.

## Devin in an internal environment

* The **Dev Server** must be configured to allow outbound HTTPS connections on TCP port 443.
* If network segmentation is in place, review and apply the necessary ACLs to permit traffic between **Dev** and **Prod Servers**.
* Configure the **Dev Server** to know the **Prod Servers** by their IP addresses or hostnames.


# Install Devin App

The gateway to Devin's features

{% hint style="warning" %}
You need Claris FileMaker Pro 19.3.1 or later to run the Devin App (See [System Requirements](/jp/gaido/installation/system-requirements))
{% endhint %}

## Download

[Download](https://www.devin.fm/product/download) the latest macOS installer.

## Install

Run the macOS `Devin-App-<version>.pkg` installer and follow the on-screen instructions.

When the installer has finished, the `Devin.fmp12` app will be located in your `Applications` folder. Drag this to the right side of your dock to easily access it.&#x20;

<figure><img src="/files/YyGDZoTclHkl2wfGQx6a" alt="" width="295"><figcaption><p>The Devin App can be placed on the right side of your dock for easy access</p></figcaption></figure>


# Install Devin Server

This section guides you through installing Devin on your servers, which is similar to installing FileMaker Server.

If you do not want to setup Devin yourself or if you already host your servers through an external hosting provider where you do not have root access, jump to [Devin through a Hosting Provider](/jp/gaido/installation/install-devin-server/devin-through-a-hosting-provider) for a guide on how to get Devin in the cloud through our selected [Devin Partners](/jp/gaido/installation/install-devin-server/devin-through-a-hosting-provider#devin-partners).

If your server already has a pre-release version of Devin Server installed, see [Upgrading from Beta](/jp/gaido/installation/install-devin-server/upgrading-from-beta).


# Install Devin on Your Own Server

The following steps guides you in installing Devin Server as root/admin via command line

## Update Your System (Linux only)

{% tabs %}
{% tab title="Linux" %}
Ensure that your system is up to date by running:

<pre class="language-bash"><code class="lang-bash"><strong>sudo apt-get update -y
</strong></code></pre>

```bash
sudo apt-get upgrade -y
```

&#x20;Ensure that the unzip utility is installed by running:

```bash
sudo apt-get unzip -y
```

{% endtab %}
{% endtabs %}

## Download and Install Devin Server

{% tabs %}
{% tab title="Linux" %}
On Linux, you have two options for installing Devin: interactively or unattended. The interactive is the recommended method and involves manual installation steps, suitable for individual installations. Unattended installation is ideal for setting up Devin on multiple servers simultaneously, as it requires no manual input during the process.

### Download and prepare the installer script

Navigate to the tmp directory:

```bash
cd /tmp
```

Download the installler:

```sh
wget https://download.devin.fm/downloads/server/latest/install_devin_unix.zip
```

Unzip the installer:

```bash
unzip install_devin_unix.zip
```

Navigate to the installer folder:

```bash
cd install_devin
```

Change the permissions for the install script

```bash
chmod 755 install_devin_unix.sh
```

### Install Devin Server interactivily (recommended method)

Start the interactive installer by running the following commands in your terminal:

```bash
sudo ./install_devin_unix.sh
```

The installer will prompt for:

* Credentials for the FileMaker Admin Console account
* Devin Server Type (Development or Staging/Production)

### Install Devin Server unattended

Alternativily, you can install Devin Server unattended by running the following in your terminal:

```bash
sudo ./install_devin_unix.sh \
--username {fmsadmin username} \ 
--password {fmsadmin password} \
--type {prod / dev}
```

### For Staging/Production Server Installations

#### Save the API Key

After installing a non-development server, save the API Key that gets output in the terminal. You will need this when adding the server in the Devin App.&#x20;

For unattended installs, or if you loose the API Key, it can be located in `/opt/Devin/info.json` on the server.
{% endtab %}

{% tab title="macOS" %}
[Download](https://www.devin.fm/product/download) the latest Devin Server installer for macOS.

Run the macOS `Devin-Server-<version>.pkg` installer and follow the on-screen instructions.

The installer will prompt for:

* Credentials for the FileMaker Admin Console account
* Devin Server Type (Development or Staging/Production)

### For Staging/Production Server Installations

#### Save the API Key

After installing a non-development server, the graphical installer will show an API key in a pop-up window. Save this key, as you will need this when adding the server in the Devin App.&#x20;

If you loose the API Key, it can be located in `/Library/Devin/info.json` on the server.
{% endtab %}
{% endtabs %}

{% hint style="info" %}
**INSTALLER LOGS:** If you run into issues installing Devin, please open a ticket [here](https://feedback.devin.fm/bugs). The Devin installer produces a log file named devin\_installer\_{Date}\_{Time}.log. Please include the output from the log in your ticket.
{% endhint %}

## Connect the Server in your App

To add a server in the Devin app, see [Add a Server](/jp/gaido/servers/add-a-server).


# Devin through a Hosting Provider

Get Devin through a Devin Partner

We have partnered up with select hosting providers that offer servers with Devin Server pre-installed. They can also easily activate it on any existing servers you may have from them. This way, you can easily get started with Devin without needing to install Devin nor configure your servers yourself.

## fmcloud.fm

Our featured hosting provider is fmcloud.fm by 1-More-Thing. They provide award-winning FileMaker Server hosting that combine the best performnace with affordable pricing, available anywhere in the world.&#x20;

Learn more at <https://www.fmcloud.fm/devin/>.

{% embed url="<https://www.fmcloud.fm/devin/>" %}
Get a server with Devin pre-installed
{% endembed %}


# Upgrading from Beta

If your server has Devin Server Beta 6 installed, you can easily upgrade to the newest version, regardles of the server type.&#x20;

If your server is running Devin Server Beta 5 or earlier, an upgrade is currently not possible due to compatibility issues. Beta 5 and previous versions are designed exclusively for Windows Server, whereas the latest Devin server release does not support Windows Server. For assistance, please reach out to <emil@devin.fm>.

## Prerequisites for upgrading

Before you upgrade, ensure that you have:

* Command-line access to the server through an interactive terminal like SSH. This needs to be as the `devin` server user.
* Internet access on the server you want to upgrade.
* The fmsadmin username and password for the server you want to upgrade.

## Upgrade Devin Server

Follow these steps to upgrade Devin Server Beta 6 to the newest version.

### 1. Confirm User Identity

From the command line on your target server, verify that you are running as the `devin` user. You can see this by running the command:

```bash
whoami
```

If you are not the devin user, but have sudo access, you can switch user by running the command:

```bash
sudo su devin
```

### 2. Navigate to Temporary Directory

Change to the /tmp directory using by running the command:

```bash
cd /tmp
```

### 3. Download Devin Updater

Fetch the latest Devin updater script by running the command:

```bash
curl https://download.devin.fm/downloads/update_devin.sh -o /tmp/update_devin.sh
```

### 4. Make Updater Script Executable

Assign execution rights t the updater script by running the command:

```bash
chmod +x /tmp/update_devin.sh
```

### 5. Run Updater

Start the update process by running the command:

```bash
/tmp/update_devin.sh {your fmsadmin username} {your fmsadmin password}
```

Ensure to replace placeholders with your actual credentials.

If you encounter any issues upgrading, please contact <emil@devin.fm>.


# Updating Devin

## App

In order to update the app, simply follow the same steps as in [Install Devin App](/jp/gaido/installation/install-devin-app).

## Server

All server types can be easily updated directly from the Devin App on your workstation.&#x20;

To update Devin Server:&#x20;

* In the App, go to Settings -> Servers
* Select the server you want to update (shows a blue info circle if an update is available)
* Click **Update Devin**.

<figure><img src="/files/vOGpiGdEwytBXDTdlQW1" alt=""><figcaption><p>The blue info icon and Update Devin button is only visible when a new update is available</p></figcaption></figure>

{% hint style="warning" %}
We recommend that all servers are always running the same version of Devin Server.
{% endhint %}

### Important info about development servers

{% hint style="success" %}
The update process usually takes less than 60 seconds. Only the Devin Engine and Devin APIs will be unavailble during the process. FileMaker Server, hosted `fmp12` files and any other services running **will not** be affected nor down during the update process.
{% endhint %}

{% hint style="warning" %}
When updating your Dev Server, the Devin Engine used by the Devin App will need to shut down for a data migration process. Therefore, **it is important** that you and all other team members close all Devin windows when prompted. Otherwise the update process will fail.
{% endhint %}

### Important info about staging/production servers

{% hint style="success" %}
The update process usually takes less than 20 seconds. **Only the Devin APIs will be unavailable** during the process. FileMaker Server, hosted `fmp12` files and any other services running **will not** be affected nor down during the update process.
{% endhint %}

{% hint style="warning" %}
The server needs to have internet access during the update process. Without internet access, the update cannot start.
{% endhint %}


# Uninstall Devin

The following steps will guide you through uninstalling Devin App and Devin Server.

## App <a href="#app" id="app"></a>

To uninstall Devin App from your workstation, open a terminal window and follow these steps:

{% tabs %}
{% tab title="macOS" %}

1. Navigate to the uninstaller by running:

```bash
cd /Library/Devin/{version}
```

2. Then type the following:

```bash
sudo sh uninstall.sh
```

3. When prompted, enter your password and type `Y` to proceed the uninstallation.

{% hint style="info" %}
This will uninstall everything except a custom font. To remove that, open up the application **Font Book**, select **User** and remove the font `Devin_Glyphs.ttf.`
{% endhint %}
{% endtab %}
{% endtabs %}

## Server <a href="#server" id="server"></a>

To uninstall Devin from your server, ensure you have root access to the terminal on the server and folio these steps:

{% tabs %}
{% tab title="Linux" %}

1. Download the uninstaller script with:

```bash
wget https://download.devin.fm/downloads/remove_devin.sh
```

2. Make the script executable with:

```bash
chmod +x remove_devin.sh
```

3. Run the uninstaller as a superuser with:

```bash
sudo ./remove_devin.sh
```

4. Complete the uninstallation by following the instructions in the removal script.
   {% endtab %}

{% tab title="macOS" %}

1. Navigate to the uninstaller by running:

```bash
cd /Library/Devin-Server/{version}
```

2. Then type the following:

```bash
sudo sh uninstall.sh
```

3. When prompted, enter your password and type `Y` to proceed the uninstallation.
   {% endtab %}
   {% endtabs %}


# Starting, stopping and restarting Devin Server

{% hint style="warning" %}
Devin Server automatically starts after installation and system restart. Only use this feature if you activily need to stop or restart Devin on your server, or if Devin is not running.
{% endhint %}

{% tabs %}
{% tab title="Linux" %}
You can start, stop and restart Devin Server by running the following command:

```bash
sudo /opt/Devin/sudo_utils/handler_service_action.sh {action}
```

Available actions: `start` `stop` `restart`
{% endtab %}

{% tab title="macOS" %}
You can start, stop and restart Devin Server by running the following command:

```bash
sudo /Library/Devin/sudo_utils/handler_service_action.sh {action}
```

Available actions: `start` `stop` `restart`
{% endtab %}
{% endtabs %}


# Getting Started


# Create a Devin Account

Open the `Devin.fmp12` app. If you already have an account, login. If not, click Create Account.

<figure><img src="/files/dr4LMUjnSFFN5vHZYrQN" alt=""><figcaption><p>Devin App Login Screen</p></figcaption></figure>

Then, enter account information:

<figure><img src="/files/UWKhyLlHZ1cqzZxcWl4M" alt=""><figcaption><p>Create Account in Devin App</p></figcaption></figure>

Next, check your inbox for a verification code and enter it on the next screen. If you have not received the verification email, please check your spam folder or contact <support@devin.fm> to continue. &#x20;

## Create a Team

Next, specify a name for your team or wait for another to invite you to their team. You can add other team members later.


# Connect to Development Server

{% hint style="warning" %}
You must have installed Devin on your development server by this step.
{% endhint %}

Enter the URL of your Development Server to connect to the Devin Engine (`devin-engine.fmp12`). This file should be open by default; if it's closed, open it manually from FM Admin Console.

<figure><img src="/files/MpD4MqYt8GgADcqJyIew" alt=""><figcaption><p>The one-time process of connecting your app to your Development Server</p></figcaption></figure>

<details>

<summary>If the connection fails</summary>

If the connection to the Devin Engine isn’t verified, such as when connecting to an IP without a valid SSL certificate, or if your computer has not connected to this server before, FileMaker Pro will block access, causing an `802` error. This prevents the Devin App to connect to the Devin Engine.&#x20;

To resolve this:

1. From FileMaker Pro, go to **File** → **Hosts** and connect to your Development Server.

<img src="/files/9XTZCXX0wz0O2GayKVFe" alt="" data-size="original">

2. When prompted about allowing an unencrypted connection, select **"Always permit connection to this host".** This setting prevents the need to grant permission each time FileMaker Pro restarts.

![](/files/zeTu3R26vUVgVFzU2WT5)

</details>

{% hint style="info" %}
The connection between Devin servers is encrypted in the same manner as the connection between an end-user using FileMaker Pro (or WebDirect) and an `fmp12` file hosted on FileMaker Server. Devin uses the existing SSL certificate and reverse proxy setup from FileMaker Server to secure this connection.
{% endhint %}


# Projects




---

[Next Page](/llms-full.txt/1)

