[workspace] members = [ "packages/ak-common", "packages/client-rust", "website/scripts/docsmg", ] resolver = "3" [workspace.package] version = "2026.5.0-rc1" authors = ["authentik Team "] description = "Making authentication simple." edition = "2024" readme = "README.md" homepage = "https://goauthentik.io" repository = "https://github.com/goauthentik/authentik.git" license-file = "LICENSE" publish = false [workspace.dependencies] arc-swap = "= 1.9.0" axum-server = { version = "= 0.8.0", features = ["tls-rustls-no-provider"] } aws-lc-rs = { version = "= 1.16.2", features = ["fips"] } clap = { version = "= 4.6.0", features = ["derive", "env"] } colored = "= 3.1.1" config-rs = { package = "config", version = "= 0.15.22", default-features = false, features = [ "yaml", "async", ] } dotenvy = "= 0.15.7" eyre = "= 0.6.12" glob = "= 0.3.3" nix = { version = "= 0.31.2", features = ["signal"] } notify = "= 8.2.0" regex = "= 1.12.3" reqwest = { version = "= 0.13.2", features = [ "form", "json", "multipart", "query", "rustls", "stream", ] } reqwest-middleware = { version = "= 0.5.1", features = [ "form", "json", "multipart", "query", "rustls", ] } rustls = { version = "= 0.23.37", features = ["fips"] } serde = { version = "= 1.0.228", features = ["derive"] } serde_json = "= 1.0.149" serde_repr = "= 0.1.20" serde_with = { version = "= 3.18.0", default-features = false, features = [ "base64", ] } tempfile = "= 3.27.0" tokio = { version = "= 1.50.0", features = ["full", "tracing"] } tokio-util = { version = "= 0.7.18", features = ["full"] } tracing = "= 0.1.44" url = "= 2.5.8" uuid = { version = "= 1.23.0", features = ["serde", "v4"] } ak-common = { package = "authentik-common", version = "2026.5.0-rc1", path = "./packages/ak-common" } [profile.dev.package.backtrace] opt-level = 3 [profile.release] lto = true debug = 2 [workspace.lints.rust] ambiguous_negative_literals = "warn" closure_returning_async_block = "warn" macro_use_extern_crate = "deny" # must_not_suspend = "deny", unstable see https://github.com/rust-lang/rust/issues/83310 non_ascii_idents = "deny" redundant_imports = "warn" semicolon_in_expressions_from_macros = "warn" trivial_casts = "warn" trivial_numeric_casts = "warn" unit_bindings = "warn" unreachable_pub = "warn" unsafe_code = "deny" unused_extern_crates = "warn" unused_import_braces = "warn" unused_lifetimes = "warn" unused_macro_rules = "warn" unused_qualifications = "warn" [workspace.lints.rustdoc] unescaped_backticks = "warn" [workspace.lints.clippy] ### enable all lints cargo = { priority = -1, level = "warn" } complexity = { priority = -1, level = "warn" } correctness = { priority = -1, level = "warn" } nursery = { priority = -1, level = "warn" } pedantic = { priority = -1, level = "warn" } perf = { priority = -1, level = "warn" } # Those are too restrictive and disabled by default, however we enable some below # restriction = { priority = -1, level = "warn" } style = { priority = -1, level = "warn" } suspicious = { priority = -1, level = "warn" } ### and disable the ones we don't want ### cargo group multiple_crate_versions = "allow" ### pedantic group missing_errors_doc = "allow" missing_panics_doc = "allow" must_use_candidate = "allow" redundant_closure_for_method_calls = "allow" struct_field_names = "allow" too_many_lines = "allow" ### nursery missing_const_for_fn = "allow" option_if_let_else = "allow" redundant_pub_crate = "allow" significant_drop_tightening = "allow" ### restriction group allow_attributes = "warn" allow_attributes_without_reason = "warn" as_conversions = "warn" as_pointer_underscore = "warn" as_underscore = "warn" assertions_on_result_states = "warn" clone_on_ref_ptr = "warn" create_dir = "warn" dbg_macro = "warn" default_numeric_fallback = "warn" disallowed_script_idents = "warn" empty_drop = "warn" empty_enum_variants_with_brackets = "warn" empty_structs_with_brackets = "warn" error_impl_error = "warn" exit = "warn" filetype_is_file = "warn" float_cmp_const = "warn" fn_to_numeric_cast_any = "warn" get_unwrap = "warn" if_then_some_else_none = "warn" impl_trait_in_params = "warn" infinite_loop = "warn" lossy_float_literal = "warn" map_with_unused_argument_over_ranges = "warn" mem_forget = "warn" missing_asserts_for_indexing = "warn" missing_trait_methods = "warn" mixed_read_write_in_expression = "warn" mutex_atomic = "warn" mutex_integer = "warn" needless_raw_strings = "warn" non_zero_suggestions = "warn" panic_in_result_fn = "warn" pathbuf_init_then_push = "warn" print_stdout = "warn" rc_buffer = "warn" redundant_test_prefix = "warn" redundant_type_annotations = "warn" ref_patterns = "warn" renamed_function_params = "warn" rest_pat_in_fully_bound_structs = "warn" return_and_then = "warn" same_name_method = "warn" semicolon_inside_block = "warn" str_to_string = "warn" string_add = "warn" suspicious_xor_used_as_pow = "warn" tests_outside_test_module = "warn" todo = "warn" try_err = "warn" undocumented_unsafe_blocks = "warn" unimplemented = "warn" unnecessary_safety_comment = "warn" unnecessary_safety_doc = "warn" unnecessary_self_imports = "warn" unneeded_field_pattern = "warn" unseparated_literal_suffix = "warn" unused_result_ok = "warn" unused_trait_names = "warn" unwrap_in_result = "warn" unwrap_used = "warn" verbose_file_reads = "warn"