# Install the FERS Python package

> One pip command gets you the Python modelling layer and the compiled Rust solver. Local analysis needs no account, no key and no network — credentials are only for cloud storage, the agent channel and Pro limits.

Source: https://ferscloud.com/docs/installation  
Last updated: 2026-09-04

## 1. Install the package

The package is published on PyPI as [FERS](https://pypi.org/project/fers/). It ships the Python model-building layer plus the compiled solver wheel, so there is nothing else to build.

```bash
pip install FERS
```

> Requires Python 3.11 or newer. Wheels are published for Windows, macOS and Linux — no Rust toolchain is needed to install.

## 2. Verify the installation

Import the core objects and construct an empty model. If this runs without raising, the compiled solver loaded correctly.

```python
from fers_core import FERS, Node, Member, Section, Material, NodalSupport, NodalLoad

# Quick smoke-test
model = FERS()
print("FERS installed successfully")
```

## 3. Authenticate with the cloud (optional)

You only need this for saving models to your account, the MCP agent channel, and Pro limits. There are two ways to authenticate, depending on how you signed up.

1. **Option A — email and password account** — Exchange your credentials for a 1-hour Bearer token via `POST /api/sdk/token`. Only works for accounts created with an email and password.
2. **Option B — Google or GitHub account (recommended for everyone)** — Create a permanent API key from your [Profile page](https://ferscloud.com/profile) → API Keys. No password required, it works for any sign-in method, and you can revoke it at any time.

## Option A: short-lived Bearer token

The token lasts one hour. Fetch a fresh one when it expires rather than storing it.

```python
import requests

resp = requests.post("https://ferscloud.com/api/sdk/token", json={
    "email": "you@example.com",
    "password": "your_password",
})
token = resp.json()["token"]
```

## Option B: persistent API key

An API key has the shape `<keyId>.<secret>` and is shown once, at creation. Store it in an environment variable and keep it server-side — never in browser code or a committed file.

```python
import os
os.environ["FERS_API_KEY"] = "<keyId>.<secret>"
```

> Cloud authentication is only needed for saving models, MCP and Pro features. Local analysis with `run_analysis()` works without any credentials.

## What you get without paying

The free tier solves models up to 100 members, with no account and no key. Pro raises that to 10,000 members and adds cloud model storage.

The agent and REST channels are metered separately: 100 free solves per rolling week, then €0.01 per solve from prepaid credit. Pro is €19.95/month.

|  | Free | Pro |
| --- | --- | --- |
| Members per model | 100 | 10,000 |
| Local solving | Unlimited | Unlimited |
| Account required | No | Yes |
| Cloud model storage | No | Yes |
| Solves per week via API/MCP | 100 | Unlimited |

## Next steps

- [Build and solve a model](https://ferscloud.com/docs/python-api) — the core objects and a first analysis.
- [Worked examples](https://ferscloud.com/docs/python-examples) — cantilever, simply supported beam, portal frame and an EN 1993-1-1 check, each with its closed-form hand check.
- [Why script a calculation at all](https://ferscloud.com/structural-analysis-python) — the case for the Python route.

## Frequently asked questions

**What is the pip package called?**

`pip install FERS`. The import name is `fers_core` — for example `from fers_core import FERS, Node, Member`.

**Do I need an API key to run an analysis?**

No. `run_analysis()` solves locally with no credentials and no network access. Keys are only for cloud model storage, the MCP/REST channels and Pro limits.

**Which Python versions are supported?**

Python 3.11 and newer, on Windows, macOS and Linux. The solver ships as a prebuilt wheel, so installing does not require a Rust toolchain.

**Where do I create an API key?**

On your [Profile page](https://ferscloud.com/profile) under API Keys. The key is displayed once at creation — store it then, because it cannot be shown again. You can revoke it at any time.

**Can I use the solver from JavaScript instead?**

Yes. The same engine is published as a WebAssembly npm package that runs in the browser or in Node with no server round-trip — see [using FERS from JavaScript](https://ferscloud.com/docs/javascript).

**Is my model uploaded anywhere when I solve locally?**

No. Local solving runs entirely in your process. Nothing is sent to FERS Cloud unless you explicitly save a model or call one of the REST endpoints.

## Related

- https://ferscloud.com/docs/quickstart
- https://ferscloud.com/docs/python-api

