base on A scalable file analysis and data generation platform that allows users to easily orchestrate arbitrary docker/vm/shell tools at scale. <div align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="./api/docs/src/static_resources/logo_dark.svg">
<source media="(prefers-color-scheme: light)" srcset="./api/docs/src/static_resources/logo_light.svg">
<img alt="Thorium"
src="./api/docs/src/static_resources/logo_dark.svg"
width="50%">
</picture>
[Documentation] | [Install Documentation] | [Single Node Install Documentation]
</div>
A scalable file analysis and data generation platform that allows users to
easily orchestrate arbitrary docker/vm/shell tools at scale.
[Documentation]: https://cisagov.github.io/thorium/intro.html
[Install Documentation]: https://cisagov.github.io/thorium/admins/deploy/deploy.html
[Single Node Install Documentation]: https://github.com/cisagov/thorium/blob/main/minithor/README.md
### Features
---
- Highly scalable analysis of arbitrary files/repos
- Near zero-cost analysis tool integration
- Static and dynamic analysis sandboxes
- User friendly interfaces: GUI + CLI
- RESTful API for automated access to data
- Multi-tenant friendly permission system
- Full-text search of analysis results
- Key/Value tags for labeling data
### FAQ
---
##### What Does Thorium actually do?
Thorium allows for developers or analysts to:
- Easily scale up and orchestrate docker or baremetal based tools
- Easily search and use results from tools
- Comment and share files, tags, and results between users/analysts
##### Are any tools included?
Currently no there are no tools included in Thorium but we plan on releasing some
soon. We hope to continue to release tools as well as allow for curated
contributions from the community.
##### What do I need to deploy Thorium?
Thorium was built and intended to run in a K8s cluster but it can also run on a
laptop using minikube. However it is important to note the single node deployment
was not intended for production and reliability/stability may be less then stellar.
To deploy a single node instance follow the Minithor docs
[here](https://github.com/cisagov/thorium/blob/main/minithor/README.md).
For full production deployment on a cluster you will need the following:
- Block store provider
- S3 storage
For on prem deployments we recommend CEPH. To deploy Thorium on a cluster
follow the docs [here](https://cisagov.github.io/thorium/admins/deploy/deploy.html).
##### How scalable is Thorium?
Thorium is almost infinitely scalable if you have the compute/storage. Thorium has
been tested to support billions of samples and utilization of large amounts of
compute. Thorium partitions data temporally and allows admins to
configure how scalable they want the system to be.
##### Does Thorium call home or send any telemetry out?
No, Thorium does not send any telemetry out.
##### How large of files/repos does Thorium support?
Currently, Thorium supports up to ~50 GiB per file/repo. This is after
compression and so it is a fuzzy limit but it should never be significantly
smaller then 50 GiB. We do have plans to increase this limit in the future
please create an issue if you feel this would be useful.
##### Can you add more documentation and examples of using Thorium and what it can do?
Yes, we plan to continue to expand our documentation and examples soon.
### Funded by
---
<div align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="./api/docs/src/static_resources/funders_dark.png">
<source media="(prefers-color-scheme: light)" srcset="./api/docs/src/static_resources/funders.png">
<img alt="Thorium"
src="./api/docs/src/static_resources/funders_dark.png"
</picture>
</div>
Contact us at
[email protected].
", Assign "at most 3 tags" to the expected json: {"id":"14485","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"