Beta Release: ACF Plugin for Linux Server
While the macOS and Windows versions of the ACF Plugin have been stable for a long time, the Linux edition is brand new. After extensive internal testing, it has now moved out of the Alpha stage and into public Beta. This means it’s ready for broader testing — but should still only be used on non-production FileMaker Server environments until the final release.
Linux version: Designed for FileMaker Server
The Linux version of the ACF Plugin is specifically designed for FileMaker Server, not FileMaker Pro. It allows server-side scripts to execute ACF functions — whether triggered by scheduled scripts or via the “Perform Script on Server” script step.
The first release supports
- Ubuntu 22.04 LTS (Intel x86_64/amd64), Beta 1
- Ubuntu 22.04 LTS (arm64), – Beta 1
- Ubuntu 24.04 LTS (Intel x86_64/amd64), Beta 2
- Ubuntu 24.04 LTS (arm64), Beta 2
Having the plugin installed on the server makes it possible to use ACF functions in server-side scripts — for example, to generate reports, Excel spreadsheets, or perform other automated tasks directly on the server.
For developers, it is still necessary to have the plugin installed locally on their development machines in order to create or edit scripts that use ACF functions. It’s also a good practice to test everything locally before deploying it to the server.
Ordinary users may install the plugin for local use, or rely solely on the server plugin if their solutions only run server-side scripts for those functions that use the ACF-plugin.
Preparing your solution for server-side script execution
When you open a FileMaker solution, a startup script defined in File → File Options → Script Triggers → OnFirstWindowOpen typically handles user interface initialization — setting up windows, layouts, logins, etc.
However, that same startup script also runs when a script is executed on the server via Perform Script on Server. Because FileMaker Server has no graphical interface, these initialization steps are not only unnecessary but can also cause the server script to fail.
To make your solution server-ready, add a conditional check at the start of your startup script:
If [ LeftWords ( Get(ApplicationVersion);1) = "Server" ]
Exit Script [ “Server environment — skip UI setup” ]
End If
# Other client initialization.
This simple step ensures that when your scripts run on the server, they skip GUI-related setup and focus only on the necessary data operations.
Available NOW: ACF Plugin 1.7.8.5
The ACF Plugin offers nearly identical functionality on both client and server, except for features that depend on the graphical interface — such as dialog boxes or user prompts, which are naturally unavailable on FileMaker Server.
Version 1.7.8.5 introduces several important improvements to stability and namespace handling in multi-user and multi-file environments:
🔄 Smarter package reloading
- Packages are now only reloaded when their compiled binary has actually changed.
- If a package is already loaded and the binary is identical,
ACF_Compileor any of theACF_Load...functions will skip reload. - This prevents unnecessary reloading and eliminates potential concurrency issues when multiple users or server sessions access the same libraries.
🧩 Namespaces – isolation between databases
- FileMaker databases no longer share ACF libraries by default.
Each hosted database now automatically uses its own namespace, based on its FileMaker file name. - Shared libraries (packages with no namespace) remain visible to all databases, just as before.
- If you want multiple databases to share the same ACF packages, you can explicitly assign a namespace using the new
ACF_SetCurrentNameSpace()function before loading the packages. - For users who need the old setup, can just use
ACF_SetCurrentNameSpace("")before loading, making all subsecuent loads shared.
🆕 New namespace-related functions
| Function | Description |
|---|---|
| ACF_SetCurrentNameSpace(“NewNameSpace”) | Sets the current namespace before loading packages. All subsequently loaded packages will belong to this namespace. |
| ACF_GetNameSpace | Returns the name of the current namespace in effect. |
| ACF_ListInstalledPackages(all = true) | Returns a list of all loaded packages. If all is true, lists packages in all namespaces; if false, only packages in the current namespace. Useful for checking whether packages are already loaded. |
These updates make ACF more predictable and robust when used on FileMaker Server environments with multiple hosted solutions for the same company — while still allowing advanced developers to share libraries intentionally when needed.
🧠 Smarter FunctionID resolution across namespaces
When multiple FileMaker solutions or package versions define the same FunctionID, the plugin now intelligently resolves which version to execute based on the caller’s current namespace:
- Global FunctionIDs remain compatible — they’re still registered globally and callable via
ACFU_FunctionName. - If a namespaced package defines a function with the same FunctionID and label as an existing shared/global package, ACF will now prefer the version within the caller’s current namespace.
- This ensures that newer or file-specific versions of packages are used automatically, even if an older version was loaded first.
- Shared (non-namespaced) packages continue to behave globally as before.
✅ Result: Opening multiple versions of the same solution no longer causes cross-package FunctionID conflicts — each FileMaker file now correctly calls the version of the function that belongs to its own namespace.
📦 Shared package installation option
The following functions now include an optional boolean parameter isShared:
ACF_Compile( sourceText ; DebuggLevel; [isShared] )ACF_CompileFile( path ; DebuggLevel; [isShared] )ACF_Install_Base64Text( base64 ; [isShared] )ACF_InstallFile( path ; [isShared] )
When isShared is true, the package is installed without a namespace, making its functions available globally to all FileMaker databases on the server.
If omitted or false, the package is installed into the current namespace (normally bound to the database file name or the name set with ACF_SetCurrentNameSpace).
✅ Result: Developers can now explicitly choose whether a package is namespaced (isolated to one FileMaker file) or shared (available to all solutions), providing full control over how ACF libraries are distributed and reused in multi-solution environments.
🈺 ACF Translation Functions
The multilingual translation system in ACF uses a translation memory that loads .po or .mo files from either a container field or a file on disk.
When you use the syntax _("Some text"), ACF looks up that text in the active translation memory and returns the translated string.
The ACF function ACF_LoadTranslationPO( containerOrFilePath ) loads these PO or MO files into the translation memory.
🔄 What’s new in 1.7.8.5
Starting with version 1.7.8.5, translation memories are now session-based rather than global.
In previous versions, all processes shared a single common translation memory.
Now, each session has its own isolated memory instance.
This is a significant improvement for server environments—especially when using PSOS (Perform Script on Server).
Server-side scripts must load the relevant PO container to activate translations for that session.
Because each session now has its own translation memory, multiple server scripts can safely run in parallel using different languages—e.g., one in Danish and another in French—without interfering with each other’s translations.
Installing the plugin on FileMaker Server
Installation is straightforward and can be done in two ways: More details about this is in the download available here. The downloads list the Linux versions, but also Mac and Windows Release version for completeness.
| Name | Platform | Description | Download | Docs | More |
|---|---|---|---|---|---|
| ACF-Plugin 1.7.8.5 B1 | Linux U22 Intel | Beta version for Linux Ubuntu Server ver 22.04 w/ Intel x86 CPU | Download | - | |
SHA-256: dfbddee09066874b4b7330447eaeaee096ec78f469b0d822d757a7225c3e3bceThis checksum is automatically verified at download time. | |||||
| ACF-Plugin 1.7.8.5 B1 | Linux U22 Arm | Beta version for Linux Ubuntu Server ver 22.04 w/ ARM CPU | Download | - | |
SHA-256: 3b558edd06fa4bfc0212053c68f60a1c685731dde42754f13c581d636d015778This checksum is automatically verified at download time. | |||||
| ACF-Plugin 1.7.8.5 B2 | Linux U24 Intel | Beta version for Linux Ubuntu Server ver 24.04 w/ Intel x86 CPU | Download | - | |
📦 ACF_U24x86_64_1.7.8.5_Beta2.zip Download🧩 Beta 2 ChangelogConsole function and thread safetyThe console function is primarily used for debugging ACF functions (using the In Beta 1, the console implementation was not fully thread-safe, which could—under rare conditions—lead to race-related issues. Beta 2 introduces a completely thread-safe console, ensuring reliable output even when multiple processes or server scripts write to it simultaneously. We have also cleaned up the plugin by removing leftover debug output that was unintentionally included in Beta 1. SHA-256: 47e9096c475f8a7d3ac808ec8ac1feeeb319a040701f9021b93f129e5be4a241This checksum is automatically verified at download time. | |||||
| ACF-Plugin 1.7.8.5 B2 | Linux U24 Arm | Beta version for Linux Ubuntu Server ver 24.04 w/ arm64 CPU | Download | - | |
📦 ACF_U24arm64_1.7.8.5_Beta2.zip Download🧩 Beta 2 ChangelogConsole function and thread safetyThe console function is primarily used for debugging ACF functions (using the In Beta 1, the console implementation was not fully thread-safe, which could—under rare conditions—lead to race-related issues. Beta 2 introduces a completely thread-safe console, ensuring reliable output even when multiple processes or server scripts write to it simultaneously. We have also cleaned up the plugin by removing leftover debug output that was unintentionally included in Beta 1. SHA-256: b632b50741e49f51b2fa250509463daa14ca1ffe58b483c609d542863f2391beThis checksum is automatically verified at download time. | |||||
| ACF-Plugin 1.7.8.7 Release | Mac (Intel+Arm) | Just ACF plugin, mac intel + arm | Download | Documentation | |
![]() New in this 1.7.8.7 version is the new Image Drawing functions. https://horneks.no/manuals/ACF/acf-pluginimagefunctions.html This is a small package with only the plugin and ACF-Compiler in a single DMG archive, without examples and documentation. Just for install on client machines that do not need to dive into developer details. This is the version with ZIP file integration, Language Macro implementation, Excel Spreadsheet implementation. Also Inter-package calls in this version. Multilingual support and a lot more, Improved version for use on FileMaker server Read the article found here about the changes since 1.7.8.4 Reworked the compiler to allow declarations inside loops and conditional branches. Look for the other download if you want examples and documentation SHA-256: 8d385be2cbfc8ead60b3eb0fcde7f9fa40d10a5ade54465cb1bb7f3efc12be64This checksum is automatically verified at download time. | |||||
| ACF-Plugin 1.7.8.5 Release | Mac (Intel+Arm) | Full package, Plugin, examples, compiler, editor bundles, tools | Download | Documentation | |
![]() This is the full developer package with the plugin, examples, documentation, Editor bundles, compiler and tools. This is the version with ZIP file integration, Language Macro implementation, Excel Spreadsheet implementation. Also Inter-package calls in this version. Multilingual support and a lot more, Improved License handling in this version. Read the article found here about the changes since 1.7.8.4. It is for the linux beta, but the same changes descibed there is Valid for this MacOS release. Reworked the compiler to allow declarations inside loops and conditional branches. 1.7.8.4
1.7.8.3
SHA-256: 8ce99a49bf9dfaf37481ce3f4bfa4d7c2ebd1eb69da9a35c22ada06fb2dfe98cThis checksum is automatically verified at download time. | |||||
| ACF-Plugin 1.7.8.5 Release | Windows | Just ACF plugin | Download | Documentation | |
![]() This is a small package with only the Windows version of the plugin in a single ZIP archive, without examples and documentation. Just for install on client machines that do not need to dive into developer details. This is the version with ZIP file integration, Language Macro implementation, Excel Spreadsheet implementation.
1.7.8.5Read the article found here about the changes since 1.7.8.4 1.7.8.4
1.7.8.3
SHA-256: 6865ed291bf477d413c528c0d35c10805eb252d409824ef55baf9b4a0d9bc042This checksum is automatically verified at download time. | |||||
| ACF-Plugin 1.7.8.5 Release | Windows | Full package, Plugin, examples, compiler, editor bundles, tools | Download | Documentation | |
![]() This is the full developer package with the plugin, examples, documentation, Editor bundles, compiler and tools. This is the version with ZIP file integration, Language Macro implementation, Excel Spreadsheet implementation. Also Inter-package calls in this version. Multilingual support and a lot more, Improved License handling in this version. 1.7.8.5Read the article found here about the changes since 1.7.8.4 1.7.8.4
1.7.8.3
SHA-256: a5f26919a9e07e2c7a5f780c8df9df19a3ec8d600d6b8183ae3c0ccc210e66e6This checksum is automatically verified at download time. | |||||
- Manual installation
- Copy the
ACF-Plugin.fmxfile into the server’s Extensions folder.
“/opt/FileMaker/FileMaker Server/Database Server/Extensions“ - Enable the plugin “ACF_Plugin” in the Admin console / Connectors / Plugins
- Restart the FileMaker Server service to load the plugin.
- Copy the
- Script-based installation
- Go to admin-console / Connectors / Plug-ins
- Ensure “FileMaker script Engine Plug-ins“, and “Install Plug-in file Script Step” are both enabled.
- Use the Install Plugin script step from From a script called using “Perofrm script on server” from FileMaker Pro.
- Restart FileMaker server to have a fresh re-load of the plugin.
Once installed, verify that the plugin is active using the Plug-ins tab in the FileMaker Server Admin Console. You can then trigger the InitACF script on the shared database to load all available ACF packages into memory.

Next steps
We invite all interested FileMaker Server administrators and developers to participate in this Beta. Your feedback will help us fine-tune performance, stability, and Linux-specific compatibility before the final release.


