These options are accessible only via users with respective administration privileges. (See User management)
Screenshots
Administration dashboard showing statistics and all its functionalities (sidebar)

This is the multi-page printable view of this section. Click here to print.
These options are accessible only via users with respective administration privileges. (See User management)
Administration dashboard showing statistics and all its functionalities (sidebar)

Organizations can be added with following parameters defining them: name, description, address.
Define roles with permissions. Roles are then assigned to users to control access to administration, Assess, Analyze, Publish, connector, and worker features.
Manage users and assign them roles and an organization.
The user table supports JSON import and export:
users_export.json. If users are selected, only those users are exported; otherwise all users are exported.version: 1 with a data list containing user names and usernames.Operators can repair existing database-auth users from inside the core container with taranis-cli.
Reset an existing user’s password:
docker exec -it core taranis-cli set-password admin
kubectl exec -it deploy/core -- taranis-cli set-password admin
For non-interactive automation, pass the password through standard input:
printf '%s\n' 'new-password' | docker exec -i core taranis-cli set-password admin --password-stdin
Replace an existing user’s complete role list:
docker exec -it core taranis-cli set-roles user Admin
kubectl exec -it deploy/core -- taranis-cli set-roles user Admin User
set-roles accepts exact role names or role IDs. It replaces the full role list; include every role the user should keep. Prefer the password prompt or --password-stdin so passwords do not land in shell history.
Add new Organization

Edit basic user role

Add new User

To get started there is list of RSS sources we worked with: Initial setup


Word lists can have the following functionalities (displayed under “usage”):

To activate include or exclude lists, they need to be added to the default source group.
It has to be mentioned, that this include/exclude filtering happens during the news item collection. Therefore, only filtered news items will be stored in the database and displayed in “Assess”.

After the collection, it is possible to adapt news items.
Common bots include:
CRUD: Bots can be created, updated and deleted.
Index: Decides the order of bots
RUN_AFTER_COLLECTOR: Indicates if bot is active after collection
LLM-backed bots can use the optional LLM Bot Service. Full bot configuration is documented in Bots.

After all settings are made, sources can be collected. Either collect all sources by clicking on the “collect sources” button, or collect single sources.

OSINT Sources define where collectors gather data from. Administrators can:
Use Source Rank to prioritize or classify sources for analyst workflows. Upload an icon when source identity should be visible on Story and News Item cards.
Use Preview from the source editor or table actions to run the collector without storing the result in Assess. Preview results are shown as Story cards. If a preview fails, use Retrigger preview after adjusting the source configuration.
Preview is especially useful for RSS, Simple Web, and RT sources where XPath, headers, proxies, or content extraction settings may need tuning.
The source state button controls whether the source is active for scheduled collection. Disabling a source unschedules its Redis/RQ cron job; enabling it schedules the source again when it has a refresh interval.
Select Import and choose the source JSON file. Imports support current exports and legacy source JSON formats.
Select Export to download a JSON file. If sources are selected, only those sources are exported; otherwise all visible sources are exported.
Use Collect to collect one source, or Collect All to collect all enabled sources. Collection is worker-backed; if the job is queued but does not run, verify worker health in Background Jobs.
When creating new Reports, one of the created report types have to be selected (see Analyze).
Desired attributes need to be created first. Then they can be managed by the admin user. Besides name, description and default value also type, validator and validator parameter can be set.
Add new Attribute

Report Types - Create new Report Type

Report Types - Add new Attribute Group

Report Types - Select new Attribute from list

Bots run as worker jobs. They can be triggered manually, scheduled with REFRESH_INTERVAL, or run after collection when RUN_AFTER_COLLECTOR is enabled.
| Bot | Purpose |
|---|---|
| Analyst Bot | Adds configured attributes based on regular expression matches. |
| Grouping Bot | Groups News Items by regular expression matches. |
| Tagging Bot | Adds tags based on regular expression matches. |
| Wordlist Bot | Tags News Items with configured word lists. |
| IOC Bot | Detects indicators of compromise in News Items. |
| NLP Bot | Sends text to an NLP endpoint for named entity tags. |
| Story Clustering Bot | Sends Stories to a clustering endpoint and groups related items. |
| Summary Bot | Generates Story summaries and, optionally, Story titles. |
| Sentiment Analysis Bot | Adds sentiment attributes to News Items. |
| Cybersecurity Classifier Bot | Classifies whether Story content is cybersecurity related. |
Implementation details are available in the worker bot source.
| Setting | Purpose |
|---|---|
| Name | Display name in the admin UI. |
| Description | Operator-facing description. |
| Type | Bot implementation to run. |
| Index | Execution order when multiple bots run after collection. |
RUN_AFTER_COLLECTOR | Runs the bot after collector jobs. |
REFRESH_INTERVAL | Cron-like schedule, for example 0 */8 * * *. |
REQUESTS_TIMEOUT | HTTP timeout for calls to external bot services. |
BOT_API_KEY | API key sent to external bot services when needed. |
Scheduled bots are handled by Redis/RQ. See Background Jobs for worker and scheduler health checks.
The optional LLM Bot Service can serve several bot endpoints.
| Bot | Worker default | Per-bot override | Typical llm-bot endpoint |
|---|---|---|---|
| Summary Bot | SUMMARY_API_ENDPOINT | SUMMARY_ENDPOINT | http://llm-bot:8000/summarize |
| Summary Bot title generation | none | TITLE_ENDPOINT | http://llm-bot:8000/title |
| NLP Bot | NLP_API_ENDPOINT | BOT_ENDPOINT | http://llm-bot:8000/ner |
| Story Clustering Bot | STORY_API_ENDPOINT | BOT_ENDPOINT | http://llm-bot:8000/cluster |
| Sentiment Analysis Bot | SENTIMENT_ANALYSIS_API_ENDPOINT | BOT_ENDPOINT | http://llm-bot:8000/sentiment |
Per-bot endpoint fields take precedence over worker environment defaults. After upgrading from older standalone bot services, update LLM-backed bot parameters that still point to summary_bot, nlp_bot, story_bot, or sentiment_analysis_bot. If you keep the Cybersecurity Classifier Bot, make sure its configured classifier endpoint is still deployed.
The Summary Bot only updates Story titles when TITLE_ENDPOINT is configured and the Story contains more than one News Item.
The Sentiment Analysis Bot writes these News Item attributes:
sentiment_scoresentiment_categoryThe Story Edit advanced view displays the sentiment status when these attributes are present.
The administration view now allows users to use the Preview feature to see the result of the configuration without the items being processed further for the Assess view. This feature is available for RSS, Simple Web and RT collector.
RSS Collector enables Taranis AI to collect data from a user-defined RSS feed (See RSS feeds details).
PROXY_SERVER field, use what is currently set as a default in Settings; learn more in section Settings)json] (can be used to add additional headers, not all headers work as expected)description or content:encoded; when the collector uses content from the RSS entry, it first checks the field named here; if that field is empty or missing, it falls back through content, content:encoded, summary, and description)CONTENT_LOCATION effectively enables using RSS entry content)USE_FEED_CONTENT is enabled, XPath is applied to the HTML content taken from the RSS entry; if the XPath does not match, the collector keeps the original RSS entry content; if USE_FEED_CONTENT is disabled, XPath is applied to the fetched article page; if the XPath does not match there, the collector does not fall back to another extraction method and the content may be empty)Summary field of RSS feed)The RSS Collector supports the use of XPath for locating elements. (See Simple Web Collector Advanced configuration)
{ "AUTHORIZATION": "Bearer Token1234", "X-API-KEY": "12345", "Cookie": "firstcookie=1234; second-cookie=4321", }Simple Web Collector enables Taranis AI to collect data using web URLs and XPaths.
The simplest way to use this collector is to use the WEB_URL field only. By using only the WEB_URL field, Taranis-AI autonomously determines the content to be collected. Even though it is mostly reliable, sometimes it is not perfect.
When content cannot be reliably collected using the Basic configuration, adding the attribute XPATH (See tutorial how to find it), can be useful. It is crucial to specify the XPath of the precise element containing the desired data.
To set up an RSS Collector for collecting posts from a Mastodon hashtag or user, follow these steps:
Finding the Mastodon RSS Feed URL:
.rss to the hashtag URL. For example, to collect posts tagged with #cybersecurity:
https://mastodon.social/tags/cybersecurity.rss.rss to the user’s profile URL. Example:
https://mastodon.social/@username.rssCreating a New RSS Source with Required Parameters: When creating the new RSS source, configure it with the following parameters. Hereβs an example of how to fill out the fields:
https://mastodon.social/tags/cybersecurity.rss)."summary" to specify the main content location within each RSS entry."false" since weβre not splitting entries into multiple items.Extend your compose.yml with a tor service, e.g.
tor:
image: "docker.io/dperson/torproxy:latest"
deploy:
restart_policy:
condition: always
environment:
# LOCATION: "AT"
logging:
driver: "json-file"
options:
max-size: "200k"
max-file: "10"
Read details about the used docker image here
The important setting is “PROXY_SERVER” in the OSINT Source you want to crawl.
RT Collector enables Taranis AI to collect data from a user-defined Request Tracker instance.
RT Collector collects tickets, translates all ticket attachments into individual News Items. A ticket is represented via a Story. It also collects ticket Custom Fields and saves it as key-value pairs represented with Story attributes, visible whilst Story editing. On each collector execution an update to existing Stories occurs, so editing the Story values in Taranis AI is not recommended and handling it more like read-only items is better.
Required fields:
http://localhost).Optional fields:
Until the definitions of our MISP Objects are not officially part of the MISP platform, feel free to import them manually (see MISP Objects). This allows to edit the information of News Items and Story data directly in the MISP instance without Taranis AI.
MISP Collector enables Taranis AI to collect MISP events.
Required fields:
https://localhost)Optional fields:
Essentially it works exactly like other collectors with one exception: conflicts. Given the nature of the collaborative environment of MISP events (they can be changed in the MISP platform by the owning organisation and secondary organisations can submit change requests using the MISP proposals). Due to that, there will likely occur conflicts when attempting to update existing Stories that were, in the meantime, internally modified.
Generally, conflicts occur the moment, a Story is modified internally, and has not been pushed to MISP immediately. Therefore, it is recommended to always try to keep Stories in sync with the MISP events. To update them in MISP with the Story (see Connectors).
Digest Splitting is a feature that allows the user to split all available URLs in the located element into individual News Items. The Digest Splitting Limit is the maximum number of URLs that will be split into individual News Items. If the limit is reached, the remaining URLs are dropped. The Digest Splitting Limit is set to 30 News Items by default but can be adjusted by the administrator. Useful in case of timeouts during collection of too many News Items.
Collectors will fail if the web page content is only available with JavaScript. In that case it is possible to turn on the Browser Mode. All requests will have JavaScript enabled, therefore, it is slower and can use more resources.
Supported options:
The MISP connector is currently in an experimental stage. Please submit issues when you discover any problems or need support with its usage.
Until the definitions of our MISP Objects are not officially part of the MISP platform, feel free to import them manually (see MISP Objects). This enables you to edit the objects of News Items and Story data directly in you MISP instances without Taranis AI.
MISP Connector enables Taranis AI to push Stories to MISP in the representation of MISP Events.
The created events contain automatically an Event Report based on the Story content (currently it encompasses the Story description and Story summary, if you feel the Event Report would benefit extending with more information, please open a feature request for it here).
First the user with administrative privileges needs to make sure, the permissions connected to Connectors usage are assigned appropriately, by default, they are not assigned to any user, not even the admins themselves. Then the Connector needs to be setup in the Admin section under the Connectors tab.
Explanation of individual permissions:

Required parameters:
https://localhost)Optional parameters:
To send a story to MISP, use the button “Share to Connector” in Story options in Assess. When an update to the Story is later on made, it is recommended to share the change immediately, you need to do this manually like the first time.
Before a Story is pushed repeatedly to update the MISP event, it is important to check if any proposals are pending in the MISP event, as it would override the original content of it and would make it difficult to resolve the proposals correctly.

When a Story is collected, that is not owned by your configured organisation, it is possible to update it in Taranis AI and by using the same “Share to Connector” button in the Story options a proposal to the event is created. Then the owning organisation should review this proposal, and approve or reject the changes.
Publishers send rendered Products to external systems.
| Publisher | Required parameters | Optional parameters |
|---|---|---|
| FTP Publisher | FTP_URL | |
| SFTP Publisher | SFTP_URL | PRIVATE_KEY |
| Email Publisher | SMTP_SERVER_ADDRESS, EMAIL_SENDER, EMAIL_RECIPIENT, EMAIL_SUBJECT | SMTP_SERVER_PORT, SERVER_TLS, EMAIL_USERNAME, EMAIL_PASSWORD |
| MISP Publisher | MISP_URL, MISP_API_KEY | |
| S3 Publisher | S3_ENDPOINT, S3_ACCESS_KEY, S3_SECRET_KEY, S3_BUCKET_NAME | S3_SESSION_TOKEN, S3_REGION, S3_SECURE, S3_CERT_CHECK |
| TAXII Publisher | TAXII_COLLECTION_ID, AUTH_TYPE | TAXII_API_ROOT_URL, TAXII_DISCOVERY_URL, USERNAME, PASSWORD, API_TOKEN, SSL_VERIFY, PROXY_SERVER |
| Wordpress Publisher | WP_USER, WP_PYTHON_APP_SECRET, WP_URL | |
| Kafka Publisher | KAFKA_BOOTSTRAP_SERVERS, KAFKA_TOPIC | KAFKA_SECURITY_PROTOCOL, KAFKA_SASL_MECHANISM, KAFKA_SASL_USERNAME, KAFKA_SASL_PASSWORD, KAFKA_ACKS, KAFKA_RETRIES, KAFKA_SEND_TIMEOUT |
Keep API keys, passwords, app secrets, and private keys in protected configuration. Do not reuse personal credentials for shared publishers.
The Email Publisher allows sending out Products.
Note: The EMAIL_SENDER and EMAIL_RECIPIENT parameters are used to construct the message envelope used by the transport agents. Message headers are not modified by these parameters in any way.
Required fields are marked with a *.
Once the publisher is created, it becomes available in the “Publish” section of each product. To send out a product via email, the product must be “Rendered” first. To render a product, use the option available in the product’s view.
The Kafka Publisher sends each rendered Product as a JSON message to the configured topic.
object_name, mime_type, and data.KAFKA_SECURITY_PROTOCOL defaults to PLAINTEXT.PLAINTEXT and SASL_PLAINTEXT.KAFKA_SECURITY_PROTOCOL is SASL_PLAINTEXT, set KAFKA_SASL_MECHANISM, KAFKA_SASL_USERNAME, and KAFKA_SASL_PASSWORD.KAFKA_ACKS defaults to all.KAFKA_RETRIES defaults to 3.KAFKA_SEND_TIMEOUT defaults to 30 seconds.The TAXII Publisher pushes STIX bundle objects to a TAXII 2.1 collection. The rendered Product must be valid JSON with type: bundle and a non-empty objects list.
Set AUTH_TYPE to basic with USERNAME and PASSWORD, or to bearer with API_TOKEN. Configure either TAXII_API_ROOT_URL directly or TAXII_DISCOVERY_URL so Taranis AI can discover the API root.
The S3 Publisher uploads the rendered Product to S3-compatible object storage. If the configured bucket does not exist, Taranis AI creates it before uploading.
All crucial fields are editable, with the most important being Type, Template, and Report Types.
Template paths are validated before use. A Product Type cannot render a Report Type unless that Report Type is associated with the Product Type.

While there are several prebuilt product types available, users also have the option to create their own product types using custom templates.
It can be beneficial to create custom Product Types to meet desired results with the publishers.
This is an example to render arbitrary values and loop over attributes.
src/core/core/static/presenter_templates.TITLE: {{ data.report_items[0].get('title') | default('No title provided', true) }}<br>
DATE CREATED: {{ data.report_items[0].get('created') | default('Not available', true) }}<br>
LAST UPDATED: {{ data.report_items[0].get('last_updated') | default('Not available', true) }}<br>
{% for name, attribute in data.report_items[0].get('attributes').items() %}
{{ name }}: {{ attribute }}<br>
{% endfor %}
If one is interested in creating own templates, it is a good to start to render the object {{ data }} first, to understand how to parse the object properly.
It is also possible to copy src/core/core/static/presenter_templates/<new-custom-template.txt> to a dynamic folder src/core/taranis_data/presenter_templates so a restart is not necessary.
If needed, templates can be utilized for more complex renderings by leveraging custom attributes.
Currently, this functionality is demonstrated in the text_template.txt file, where the attribute omission of type “Omit Keys” allows for the exclusion of unnecessary attributes from publication. To employ this feature, the administrator simply needs to add this attribute to the relevant report type. Then, within a specific report (Analyze View), they can specify the attributes to omit by listing them as comma-separated strings.
It is essential to ensure that the “Name” used for the report type attribute matches exactly with the key used in the template.
Learn more about what TLP version 2.0 is under first.org/tlp/.
Default value: Clear
Options: Green, Amber, Amber+Strict, Red
All newly collected items by Collectors use this default TLP value. When this setting is changed, it does not affect the items that are already present in Assess section.
This setting can be overridden for each collector with the TLP_LEVEL field.
When a default collector proxy is set, it can then be used in the collectors by enabling the switch USE_GLOBAL_PROXY.
USE_GLOBAL_PROXY is enabled.| # | Per-source proxy | Default proxy | USE_GLOBAL_PROXY | Result |
|---|---|---|---|---|
| 1 | β | β | false | βͺ No proxy |
| 2 | β | β | false | π’ Per-source proxy |
| 3 | β | β | false | βͺ No proxy |
| 4 | β | β | false | π’ Per-source proxy |
| 5 | β | β | true | βͺ No proxy |
| 6 | β | β | true | βͺ No proxy (global forced; default missing) |
| 7 | β | β | true | π΅ Default proxy |
| 8 | β | β | true | π΅ Default proxy |
This value is used for REFRESH_INTERVAL for all collectors (OSINT Sources) when this field is left unset individually for all collectors. The syntax is the same as REFRESH_INTERVAL in bot settings.
See Background Jobs before clearing worker queues.
The admin user can access the Taranis API through Swagger UI. Swagger UI displays OpenAPI specifications as an interactive API documentation. Current OpenAPI specifications are available at https://github.com/taranis-ai/taranis-ai/blob/master/src/core/core/static/openapi3_1.yaml
see: Swagger UI
Taranis instance is alive
